From 12ee5489736e591c3320bc0b183d63f7ae785749 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 17:49:39 +0200 Subject: [PATCH 01/12] [WIP] add window functions --- src/parser/bison_parser.cpp | 3508 +++++++++++++------------ src/parser/bison_parser.h | 411 +-- src/parser/bison_parser.y | 61 +- src/parser/flex_lexer.cpp | 4573 +++++++++++++++++---------------- src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 5 + src/sql/Expr.cpp | 36 +- src/sql/Expr.h | 30 +- test/queries/queries-bad.sql | 5 + test/queries/queries-good.sql | 7 + test/select_tests.cpp | 107 +- 11 files changed, 4587 insertions(+), 4158 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 4cda7148..97064729 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -64,20 +64,20 @@ #define YYPULL 1 /* Substitute the type names. */ -#define YYSTYPE HSQL_STYPE -#define YYLTYPE HSQL_LTYPE +#define YYSTYPE HSQL_STYPE +#define YYLTYPE HSQL_LTYPE /* Substitute the variable and function names. */ -#define yyparse hsql_parse -#define yylex hsql_lex -#define yyerror hsql_error -#define yydebug hsql_debug -#define yynerrs hsql_nerrs +#define yyparse hsql_parse +#define yylex hsql_lex +#define yyerror hsql_error +#define yydebug hsql_debug +#define yynerrs hsql_nerrs /* First part of user prologue. */ #line 2 "bison_parser.y" -// clang-format on -/** + // clang-format on + /** * bison_parser.y * defines bison_parser.h * outputs bison_parser.c @@ -85,7 +85,7 @@ * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html * */ -/********************************* + /********************************* ** Section 1: C Declarations *********************************/ @@ -93,18 +93,19 @@ #include "flex_lexer.h" #include +#include #include -using namespace hsql; + using namespace hsql; -int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const char* msg) { - result->setIsValid(false); - result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); - return 0; -} -// clang-format off + int yyerror(YYLTYPE * llocp, SQLParserResult * result, yyscan_t scanner, const char* msg) { + result->setIsValid(false); + result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); + return 0; + } + // clang-format off -#line 108 "bison_parser.cpp" +#line 109 "bison_parser.cpp" # ifndef YY_CAST # ifdef __cplusplus @@ -203,247 +204,257 @@ enum yysymbol_kind_t YYSYMBOL_DELTA = 68, /* DELTA */ YYSYMBOL_FLOAT = 69, /* FLOAT */ YYSYMBOL_GROUP = 70, /* GROUP */ - YYSYMBOL_INDEX = 71, /* INDEX */ - YYSYMBOL_INNER = 72, /* INNER */ - YYSYMBOL_LIMIT = 73, /* LIMIT */ - YYSYMBOL_LOCAL = 74, /* LOCAL */ - YYSYMBOL_MERGE = 75, /* MERGE */ - YYSYMBOL_MINUS = 76, /* MINUS */ - YYSYMBOL_ORDER = 77, /* ORDER */ - YYSYMBOL_OUTER = 78, /* OUTER */ - YYSYMBOL_RIGHT = 79, /* RIGHT */ - YYSYMBOL_TABLE = 80, /* TABLE */ - YYSYMBOL_UNION = 81, /* UNION */ - YYSYMBOL_USING = 82, /* USING */ - YYSYMBOL_WHERE = 83, /* WHERE */ - YYSYMBOL_CALL = 84, /* CALL */ - YYSYMBOL_CASE = 85, /* CASE */ - YYSYMBOL_CHAR = 86, /* CHAR */ - YYSYMBOL_COPY = 87, /* COPY */ - YYSYMBOL_DATE = 88, /* DATE */ - YYSYMBOL_DATETIME = 89, /* DATETIME */ - YYSYMBOL_DESC = 90, /* DESC */ - YYSYMBOL_DROP = 91, /* DROP */ - YYSYMBOL_ELSE = 92, /* ELSE */ - YYSYMBOL_FILE = 93, /* FILE */ - YYSYMBOL_FROM = 94, /* FROM */ - YYSYMBOL_FULL = 95, /* FULL */ - YYSYMBOL_HASH = 96, /* HASH */ - YYSYMBOL_HINT = 97, /* HINT */ - YYSYMBOL_INTO = 98, /* INTO */ - YYSYMBOL_JOIN = 99, /* JOIN */ - YYSYMBOL_LEFT = 100, /* LEFT */ - YYSYMBOL_LIKE = 101, /* LIKE */ - YYSYMBOL_LOAD = 102, /* LOAD */ - YYSYMBOL_LONG = 103, /* LONG */ - YYSYMBOL_NULL = 104, /* NULL */ - YYSYMBOL_PLAN = 105, /* PLAN */ - YYSYMBOL_SHOW = 106, /* SHOW */ - YYSYMBOL_TEXT = 107, /* TEXT */ - YYSYMBOL_THEN = 108, /* THEN */ - YYSYMBOL_TIME = 109, /* TIME */ - YYSYMBOL_VIEW = 110, /* VIEW */ - YYSYMBOL_WHEN = 111, /* WHEN */ - YYSYMBOL_WITH = 112, /* WITH */ - YYSYMBOL_ADD = 113, /* ADD */ - YYSYMBOL_ALL = 114, /* ALL */ - YYSYMBOL_AND = 115, /* AND */ - YYSYMBOL_ASC = 116, /* ASC */ - YYSYMBOL_END = 117, /* END */ - YYSYMBOL_FOR = 118, /* FOR */ - YYSYMBOL_INT = 119, /* INT */ - YYSYMBOL_KEY = 120, /* KEY */ - YYSYMBOL_NOT = 121, /* NOT */ - YYSYMBOL_OFF = 122, /* OFF */ - YYSYMBOL_SET = 123, /* SET */ - YYSYMBOL_TOP = 124, /* TOP */ - YYSYMBOL_AS = 125, /* AS */ - YYSYMBOL_BY = 126, /* BY */ - YYSYMBOL_IF = 127, /* IF */ - YYSYMBOL_IN = 128, /* IN */ - YYSYMBOL_IS = 129, /* IS */ - YYSYMBOL_OF = 130, /* OF */ - YYSYMBOL_ON = 131, /* ON */ - YYSYMBOL_OR = 132, /* OR */ - YYSYMBOL_TO = 133, /* TO */ - YYSYMBOL_NO = 134, /* NO */ - YYSYMBOL_ARRAY = 135, /* ARRAY */ - YYSYMBOL_CONCAT = 136, /* CONCAT */ - YYSYMBOL_ILIKE = 137, /* ILIKE */ - YYSYMBOL_SECOND = 138, /* SECOND */ - YYSYMBOL_MINUTE = 139, /* MINUTE */ - YYSYMBOL_HOUR = 140, /* HOUR */ - YYSYMBOL_DAY = 141, /* DAY */ - YYSYMBOL_MONTH = 142, /* MONTH */ - YYSYMBOL_YEAR = 143, /* YEAR */ - YYSYMBOL_SECONDS = 144, /* SECONDS */ - YYSYMBOL_MINUTES = 145, /* MINUTES */ - YYSYMBOL_HOURS = 146, /* HOURS */ - YYSYMBOL_DAYS = 147, /* DAYS */ - YYSYMBOL_MONTHS = 148, /* MONTHS */ - YYSYMBOL_YEARS = 149, /* YEARS */ - YYSYMBOL_INTERVAL = 150, /* INTERVAL */ - YYSYMBOL_TRUE = 151, /* TRUE */ - YYSYMBOL_FALSE = 152, /* FALSE */ - YYSYMBOL_BOOLEAN = 153, /* BOOLEAN */ - YYSYMBOL_TRANSACTION = 154, /* TRANSACTION */ - YYSYMBOL_BEGIN = 155, /* BEGIN */ - YYSYMBOL_COMMIT = 156, /* COMMIT */ - YYSYMBOL_ROLLBACK = 157, /* ROLLBACK */ - YYSYMBOL_NOWAIT = 158, /* NOWAIT */ - YYSYMBOL_SKIP = 159, /* SKIP */ - YYSYMBOL_LOCKED = 160, /* LOCKED */ - YYSYMBOL_SHARE = 161, /* SHARE */ - YYSYMBOL_162_ = 162, /* '=' */ - YYSYMBOL_EQUALS = 163, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 164, /* NOTEQUALS */ - YYSYMBOL_165_ = 165, /* '<' */ - YYSYMBOL_166_ = 166, /* '>' */ - YYSYMBOL_LESS = 167, /* LESS */ - YYSYMBOL_GREATER = 168, /* GREATER */ - YYSYMBOL_LESSEQ = 169, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 170, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 171, /* NOTNULL */ - YYSYMBOL_172_ = 172, /* '+' */ - YYSYMBOL_173_ = 173, /* '-' */ - YYSYMBOL_174_ = 174, /* '*' */ - YYSYMBOL_175_ = 175, /* '/' */ - YYSYMBOL_176_ = 176, /* '%' */ - YYSYMBOL_177_ = 177, /* '^' */ - YYSYMBOL_UMINUS = 178, /* UMINUS */ - YYSYMBOL_179_ = 179, /* '[' */ - YYSYMBOL_180_ = 180, /* ']' */ - YYSYMBOL_181_ = 181, /* '(' */ - YYSYMBOL_182_ = 182, /* ')' */ - YYSYMBOL_183_ = 183, /* '.' */ - YYSYMBOL_184_ = 184, /* ';' */ - YYSYMBOL_185_ = 185, /* ',' */ - YYSYMBOL_186_ = 186, /* '?' */ - YYSYMBOL_YYACCEPT = 187, /* $accept */ - YYSYMBOL_input = 188, /* input */ - YYSYMBOL_statement_list = 189, /* statement_list */ - YYSYMBOL_statement = 190, /* statement */ - YYSYMBOL_preparable_statement = 191, /* preparable_statement */ - YYSYMBOL_opt_hints = 192, /* opt_hints */ - YYSYMBOL_hint_list = 193, /* hint_list */ - YYSYMBOL_hint = 194, /* hint */ - YYSYMBOL_transaction_statement = 195, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 196, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 197, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 198, /* prepare_target_query */ - YYSYMBOL_execute_statement = 199, /* execute_statement */ - YYSYMBOL_import_statement = 200, /* import_statement */ - YYSYMBOL_file_type = 201, /* file_type */ - YYSYMBOL_file_path = 202, /* file_path */ - YYSYMBOL_opt_file_type = 203, /* opt_file_type */ - YYSYMBOL_export_statement = 204, /* export_statement */ - YYSYMBOL_show_statement = 205, /* show_statement */ - YYSYMBOL_create_statement = 206, /* create_statement */ - YYSYMBOL_opt_not_exists = 207, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 208, /* table_elem_commalist */ - YYSYMBOL_table_elem = 209, /* table_elem */ - YYSYMBOL_column_def = 210, /* column_def */ - YYSYMBOL_column_type = 211, /* column_type */ - YYSYMBOL_opt_time_precision = 212, /* opt_time_precision */ - YYSYMBOL_opt_decimal_specification = 213, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 214, /* opt_column_constraints */ - YYSYMBOL_column_constraint_set = 215, /* column_constraint_set */ - YYSYMBOL_column_constraint = 216, /* column_constraint */ - YYSYMBOL_table_constraint = 217, /* table_constraint */ - YYSYMBOL_drop_statement = 218, /* drop_statement */ - YYSYMBOL_opt_exists = 219, /* opt_exists */ - YYSYMBOL_alter_statement = 220, /* alter_statement */ - YYSYMBOL_alter_action = 221, /* alter_action */ - YYSYMBOL_drop_action = 222, /* drop_action */ - YYSYMBOL_delete_statement = 223, /* delete_statement */ - YYSYMBOL_truncate_statement = 224, /* truncate_statement */ - YYSYMBOL_insert_statement = 225, /* insert_statement */ - YYSYMBOL_opt_column_list = 226, /* opt_column_list */ - YYSYMBOL_update_statement = 227, /* update_statement */ - YYSYMBOL_update_clause_commalist = 228, /* update_clause_commalist */ - YYSYMBOL_update_clause = 229, /* update_clause */ - YYSYMBOL_select_statement = 230, /* select_statement */ - YYSYMBOL_select_within_set_operation = 231, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 232, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 233, /* select_with_paren */ - YYSYMBOL_select_no_paren = 234, /* select_no_paren */ - YYSYMBOL_set_operator = 235, /* set_operator */ - YYSYMBOL_set_type = 236, /* set_type */ - YYSYMBOL_opt_all = 237, /* opt_all */ - YYSYMBOL_select_clause = 238, /* select_clause */ - YYSYMBOL_opt_distinct = 239, /* opt_distinct */ - YYSYMBOL_select_list = 240, /* select_list */ - YYSYMBOL_opt_from_clause = 241, /* opt_from_clause */ - YYSYMBOL_from_clause = 242, /* from_clause */ - YYSYMBOL_opt_where = 243, /* opt_where */ - YYSYMBOL_opt_group = 244, /* opt_group */ - YYSYMBOL_opt_having = 245, /* opt_having */ - YYSYMBOL_opt_order = 246, /* opt_order */ - YYSYMBOL_order_list = 247, /* order_list */ - YYSYMBOL_order_desc = 248, /* order_desc */ - YYSYMBOL_opt_order_type = 249, /* opt_order_type */ - YYSYMBOL_opt_top = 250, /* opt_top */ - YYSYMBOL_opt_limit = 251, /* opt_limit */ - YYSYMBOL_expr_list = 252, /* expr_list */ - YYSYMBOL_opt_literal_list = 253, /* opt_literal_list */ - YYSYMBOL_literal_list = 254, /* literal_list */ - YYSYMBOL_expr_alias = 255, /* expr_alias */ - YYSYMBOL_expr = 256, /* expr */ - YYSYMBOL_operand = 257, /* operand */ - YYSYMBOL_scalar_expr = 258, /* scalar_expr */ - YYSYMBOL_unary_expr = 259, /* unary_expr */ - YYSYMBOL_binary_expr = 260, /* binary_expr */ - YYSYMBOL_logic_expr = 261, /* logic_expr */ - YYSYMBOL_in_expr = 262, /* in_expr */ - YYSYMBOL_case_expr = 263, /* case_expr */ - YYSYMBOL_case_list = 264, /* case_list */ - YYSYMBOL_exists_expr = 265, /* exists_expr */ - YYSYMBOL_comp_expr = 266, /* comp_expr */ - YYSYMBOL_function_expr = 267, /* function_expr */ - YYSYMBOL_extract_expr = 268, /* extract_expr */ - YYSYMBOL_cast_expr = 269, /* cast_expr */ - YYSYMBOL_datetime_field = 270, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 271, /* datetime_field_plural */ - YYSYMBOL_duration_field = 272, /* duration_field */ - YYSYMBOL_array_expr = 273, /* array_expr */ - YYSYMBOL_array_index = 274, /* array_index */ - YYSYMBOL_between_expr = 275, /* between_expr */ - YYSYMBOL_column_name = 276, /* column_name */ - YYSYMBOL_literal = 277, /* literal */ - YYSYMBOL_string_literal = 278, /* string_literal */ - YYSYMBOL_bool_literal = 279, /* bool_literal */ - YYSYMBOL_num_literal = 280, /* num_literal */ - YYSYMBOL_int_literal = 281, /* int_literal */ - YYSYMBOL_null_literal = 282, /* null_literal */ - YYSYMBOL_date_literal = 283, /* date_literal */ - YYSYMBOL_interval_literal = 284, /* interval_literal */ - YYSYMBOL_param_expr = 285, /* param_expr */ - YYSYMBOL_table_ref = 286, /* table_ref */ - YYSYMBOL_table_ref_atomic = 287, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 288, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 289, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 290, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 291, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 292, /* table_name */ - YYSYMBOL_opt_index_name = 293, /* opt_index_name */ - YYSYMBOL_table_alias = 294, /* table_alias */ - YYSYMBOL_opt_table_alias = 295, /* opt_table_alias */ - YYSYMBOL_alias = 296, /* alias */ - YYSYMBOL_opt_alias = 297, /* opt_alias */ - YYSYMBOL_opt_locking_clause = 298, /* opt_locking_clause */ - YYSYMBOL_opt_locking_clause_list = 299, /* opt_locking_clause_list */ - YYSYMBOL_locking_clause = 300, /* locking_clause */ - YYSYMBOL_row_lock_mode = 301, /* row_lock_mode */ - YYSYMBOL_opt_row_lock_policy = 302, /* opt_row_lock_policy */ - YYSYMBOL_opt_with_clause = 303, /* opt_with_clause */ - YYSYMBOL_with_clause = 304, /* with_clause */ - YYSYMBOL_with_description_list = 305, /* with_description_list */ - YYSYMBOL_with_description = 306, /* with_description */ - YYSYMBOL_join_clause = 307, /* join_clause */ - YYSYMBOL_opt_join_type = 308, /* opt_join_type */ - YYSYMBOL_join_condition = 309, /* join_condition */ - YYSYMBOL_opt_semicolon = 310, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 311 /* ident_commalist */ + YYSYMBOL_GROUPS = 71, /* GROUPS */ + YYSYMBOL_INDEX = 72, /* INDEX */ + YYSYMBOL_INNER = 73, /* INNER */ + YYSYMBOL_LIMIT = 74, /* LIMIT */ + YYSYMBOL_LOCAL = 75, /* LOCAL */ + YYSYMBOL_MERGE = 76, /* MERGE */ + YYSYMBOL_MINUS = 77, /* MINUS */ + YYSYMBOL_ORDER = 78, /* ORDER */ + YYSYMBOL_OVER = 79, /* OVER */ + YYSYMBOL_RANGE = 80, /* RANGE */ + YYSYMBOL_ROWS = 81, /* ROWS */ + YYSYMBOL_OUTER = 82, /* OUTER */ + YYSYMBOL_RIGHT = 83, /* RIGHT */ + YYSYMBOL_TABLE = 84, /* TABLE */ + YYSYMBOL_UNION = 85, /* UNION */ + YYSYMBOL_USING = 86, /* USING */ + YYSYMBOL_WHERE = 87, /* WHERE */ + YYSYMBOL_CALL = 88, /* CALL */ + YYSYMBOL_CASE = 89, /* CASE */ + YYSYMBOL_CHAR = 90, /* CHAR */ + YYSYMBOL_COPY = 91, /* COPY */ + YYSYMBOL_DATE = 92, /* DATE */ + YYSYMBOL_DATETIME = 93, /* DATETIME */ + YYSYMBOL_DESC = 94, /* DESC */ + YYSYMBOL_DROP = 95, /* DROP */ + YYSYMBOL_ELSE = 96, /* ELSE */ + YYSYMBOL_FILE = 97, /* FILE */ + YYSYMBOL_FROM = 98, /* FROM */ + YYSYMBOL_FULL = 99, /* FULL */ + YYSYMBOL_HASH = 100, /* HASH */ + YYSYMBOL_HINT = 101, /* HINT */ + YYSYMBOL_INTO = 102, /* INTO */ + YYSYMBOL_JOIN = 103, /* JOIN */ + YYSYMBOL_LEFT = 104, /* LEFT */ + YYSYMBOL_LIKE = 105, /* LIKE */ + YYSYMBOL_LOAD = 106, /* LOAD */ + YYSYMBOL_LONG = 107, /* LONG */ + YYSYMBOL_NULL = 108, /* NULL */ + YYSYMBOL_PARTITION = 109, /* PARTITION */ + YYSYMBOL_PLAN = 110, /* PLAN */ + YYSYMBOL_SHOW = 111, /* SHOW */ + YYSYMBOL_TEXT = 112, /* TEXT */ + YYSYMBOL_THEN = 113, /* THEN */ + YYSYMBOL_TIME = 114, /* TIME */ + YYSYMBOL_VIEW = 115, /* VIEW */ + YYSYMBOL_WHEN = 116, /* WHEN */ + YYSYMBOL_WITH = 117, /* WITH */ + YYSYMBOL_ADD = 118, /* ADD */ + YYSYMBOL_ALL = 119, /* ALL */ + YYSYMBOL_AND = 120, /* AND */ + YYSYMBOL_ASC = 121, /* ASC */ + YYSYMBOL_END = 122, /* END */ + YYSYMBOL_FOR = 123, /* FOR */ + YYSYMBOL_INT = 124, /* INT */ + YYSYMBOL_KEY = 125, /* KEY */ + YYSYMBOL_NOT = 126, /* NOT */ + YYSYMBOL_OFF = 127, /* OFF */ + YYSYMBOL_SET = 128, /* SET */ + YYSYMBOL_TOP = 129, /* TOP */ + YYSYMBOL_AS = 130, /* AS */ + YYSYMBOL_BY = 131, /* BY */ + YYSYMBOL_IF = 132, /* IF */ + YYSYMBOL_IN = 133, /* IN */ + YYSYMBOL_IS = 134, /* IS */ + YYSYMBOL_OF = 135, /* OF */ + YYSYMBOL_ON = 136, /* ON */ + YYSYMBOL_OR = 137, /* OR */ + YYSYMBOL_TO = 138, /* TO */ + YYSYMBOL_NO = 139, /* NO */ + YYSYMBOL_ARRAY = 140, /* ARRAY */ + YYSYMBOL_CONCAT = 141, /* CONCAT */ + YYSYMBOL_ILIKE = 142, /* ILIKE */ + YYSYMBOL_SECOND = 143, /* SECOND */ + YYSYMBOL_MINUTE = 144, /* MINUTE */ + YYSYMBOL_HOUR = 145, /* HOUR */ + YYSYMBOL_DAY = 146, /* DAY */ + YYSYMBOL_MONTH = 147, /* MONTH */ + YYSYMBOL_YEAR = 148, /* YEAR */ + YYSYMBOL_SECONDS = 149, /* SECONDS */ + YYSYMBOL_MINUTES = 150, /* MINUTES */ + YYSYMBOL_HOURS = 151, /* HOURS */ + YYSYMBOL_DAYS = 152, /* DAYS */ + YYSYMBOL_MONTHS = 153, /* MONTHS */ + YYSYMBOL_YEARS = 154, /* YEARS */ + YYSYMBOL_INTERVAL = 155, /* INTERVAL */ + YYSYMBOL_TRUE = 156, /* TRUE */ + YYSYMBOL_FALSE = 157, /* FALSE */ + YYSYMBOL_BOOLEAN = 158, /* BOOLEAN */ + YYSYMBOL_TRANSACTION = 159, /* TRANSACTION */ + YYSYMBOL_BEGIN = 160, /* BEGIN */ + YYSYMBOL_COMMIT = 161, /* COMMIT */ + YYSYMBOL_ROLLBACK = 162, /* ROLLBACK */ + YYSYMBOL_NOWAIT = 163, /* NOWAIT */ + YYSYMBOL_SKIP = 164, /* SKIP */ + YYSYMBOL_LOCKED = 165, /* LOCKED */ + YYSYMBOL_SHARE = 166, /* SHARE */ + YYSYMBOL_167_ = 167, /* '=' */ + YYSYMBOL_EQUALS = 168, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 169, /* NOTEQUALS */ + YYSYMBOL_170_ = 170, /* '<' */ + YYSYMBOL_171_ = 171, /* '>' */ + YYSYMBOL_LESS = 172, /* LESS */ + YYSYMBOL_GREATER = 173, /* GREATER */ + YYSYMBOL_LESSEQ = 174, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 175, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 176, /* NOTNULL */ + YYSYMBOL_177_ = 177, /* '+' */ + YYSYMBOL_178_ = 178, /* '-' */ + YYSYMBOL_179_ = 179, /* '*' */ + YYSYMBOL_180_ = 180, /* '/' */ + YYSYMBOL_181_ = 181, /* '%' */ + YYSYMBOL_182_ = 182, /* '^' */ + YYSYMBOL_UMINUS = 183, /* UMINUS */ + YYSYMBOL_184_ = 184, /* '[' */ + YYSYMBOL_185_ = 185, /* ']' */ + YYSYMBOL_186_ = 186, /* '(' */ + YYSYMBOL_187_ = 187, /* ')' */ + YYSYMBOL_188_ = 188, /* '.' */ + YYSYMBOL_189_ = 189, /* ';' */ + YYSYMBOL_190_ = 190, /* ',' */ + YYSYMBOL_191_ = 191, /* '?' */ + YYSYMBOL_YYACCEPT = 192, /* $accept */ + YYSYMBOL_input = 193, /* input */ + YYSYMBOL_statement_list = 194, /* statement_list */ + YYSYMBOL_statement = 195, /* statement */ + YYSYMBOL_preparable_statement = 196, /* preparable_statement */ + YYSYMBOL_opt_hints = 197, /* opt_hints */ + YYSYMBOL_hint_list = 198, /* hint_list */ + YYSYMBOL_hint = 199, /* hint */ + YYSYMBOL_transaction_statement = 200, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 201, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 202, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 203, /* prepare_target_query */ + YYSYMBOL_execute_statement = 204, /* execute_statement */ + YYSYMBOL_import_statement = 205, /* import_statement */ + YYSYMBOL_file_type = 206, /* file_type */ + YYSYMBOL_file_path = 207, /* file_path */ + YYSYMBOL_opt_file_type = 208, /* opt_file_type */ + YYSYMBOL_export_statement = 209, /* export_statement */ + YYSYMBOL_show_statement = 210, /* show_statement */ + YYSYMBOL_create_statement = 211, /* create_statement */ + YYSYMBOL_opt_not_exists = 212, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 213, /* table_elem_commalist */ + YYSYMBOL_table_elem = 214, /* table_elem */ + YYSYMBOL_column_def = 215, /* column_def */ + YYSYMBOL_column_type = 216, /* column_type */ + YYSYMBOL_opt_time_precision = 217, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 218, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 219, /* opt_column_constraints */ + YYSYMBOL_column_constraint_set = 220, /* column_constraint_set */ + YYSYMBOL_column_constraint = 221, /* column_constraint */ + YYSYMBOL_table_constraint = 222, /* table_constraint */ + YYSYMBOL_drop_statement = 223, /* drop_statement */ + YYSYMBOL_opt_exists = 224, /* opt_exists */ + YYSYMBOL_alter_statement = 225, /* alter_statement */ + YYSYMBOL_alter_action = 226, /* alter_action */ + YYSYMBOL_drop_action = 227, /* drop_action */ + YYSYMBOL_delete_statement = 228, /* delete_statement */ + YYSYMBOL_truncate_statement = 229, /* truncate_statement */ + YYSYMBOL_insert_statement = 230, /* insert_statement */ + YYSYMBOL_opt_column_list = 231, /* opt_column_list */ + YYSYMBOL_update_statement = 232, /* update_statement */ + YYSYMBOL_update_clause_commalist = 233, /* update_clause_commalist */ + YYSYMBOL_update_clause = 234, /* update_clause */ + YYSYMBOL_select_statement = 235, /* select_statement */ + YYSYMBOL_select_within_set_operation = 236, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 237, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 238, /* select_with_paren */ + YYSYMBOL_select_no_paren = 239, /* select_no_paren */ + YYSYMBOL_set_operator = 240, /* set_operator */ + YYSYMBOL_set_type = 241, /* set_type */ + YYSYMBOL_opt_all = 242, /* opt_all */ + YYSYMBOL_select_clause = 243, /* select_clause */ + YYSYMBOL_opt_distinct = 244, /* opt_distinct */ + YYSYMBOL_select_list = 245, /* select_list */ + YYSYMBOL_opt_from_clause = 246, /* opt_from_clause */ + YYSYMBOL_from_clause = 247, /* from_clause */ + YYSYMBOL_opt_where = 248, /* opt_where */ + YYSYMBOL_opt_group = 249, /* opt_group */ + YYSYMBOL_opt_having = 250, /* opt_having */ + YYSYMBOL_opt_order = 251, /* opt_order */ + YYSYMBOL_order_list = 252, /* order_list */ + YYSYMBOL_order_desc = 253, /* order_desc */ + YYSYMBOL_opt_order_type = 254, /* opt_order_type */ + YYSYMBOL_opt_top = 255, /* opt_top */ + YYSYMBOL_opt_limit = 256, /* opt_limit */ + YYSYMBOL_expr_list = 257, /* expr_list */ + YYSYMBOL_opt_literal_list = 258, /* opt_literal_list */ + YYSYMBOL_literal_list = 259, /* literal_list */ + YYSYMBOL_expr_alias = 260, /* expr_alias */ + YYSYMBOL_expr = 261, /* expr */ + YYSYMBOL_operand = 262, /* operand */ + YYSYMBOL_scalar_expr = 263, /* scalar_expr */ + YYSYMBOL_unary_expr = 264, /* unary_expr */ + YYSYMBOL_binary_expr = 265, /* binary_expr */ + YYSYMBOL_logic_expr = 266, /* logic_expr */ + YYSYMBOL_in_expr = 267, /* in_expr */ + YYSYMBOL_window_expr = 268, /* window_expr */ + YYSYMBOL_opt_partition = 269, /* opt_partition */ + YYSYMBOL_opt_frame_clause = 270, /* opt_frame_clause */ + YYSYMBOL_frame_type = 271, /* frame_type */ + YYSYMBOL_frame_bound = 272, /* frame_bound */ + YYSYMBOL_case_expr = 273, /* case_expr */ + YYSYMBOL_case_list = 274, /* case_list */ + YYSYMBOL_exists_expr = 275, /* exists_expr */ + YYSYMBOL_comp_expr = 276, /* comp_expr */ + YYSYMBOL_function_expr = 277, /* function_expr */ + YYSYMBOL_extract_expr = 278, /* extract_expr */ + YYSYMBOL_cast_expr = 279, /* cast_expr */ + YYSYMBOL_datetime_field = 280, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 281, /* datetime_field_plural */ + YYSYMBOL_duration_field = 282, /* duration_field */ + YYSYMBOL_array_expr = 283, /* array_expr */ + YYSYMBOL_array_index = 284, /* array_index */ + YYSYMBOL_between_expr = 285, /* between_expr */ + YYSYMBOL_column_name = 286, /* column_name */ + YYSYMBOL_literal = 287, /* literal */ + YYSYMBOL_string_literal = 288, /* string_literal */ + YYSYMBOL_bool_literal = 289, /* bool_literal */ + YYSYMBOL_num_literal = 290, /* num_literal */ + YYSYMBOL_int_literal = 291, /* int_literal */ + YYSYMBOL_null_literal = 292, /* null_literal */ + YYSYMBOL_date_literal = 293, /* date_literal */ + YYSYMBOL_interval_literal = 294, /* interval_literal */ + YYSYMBOL_param_expr = 295, /* param_expr */ + YYSYMBOL_table_ref = 296, /* table_ref */ + YYSYMBOL_table_ref_atomic = 297, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 298, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 299, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 300, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 301, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 302, /* table_name */ + YYSYMBOL_opt_index_name = 303, /* opt_index_name */ + YYSYMBOL_table_alias = 304, /* table_alias */ + YYSYMBOL_opt_table_alias = 305, /* opt_table_alias */ + YYSYMBOL_alias = 306, /* alias */ + YYSYMBOL_opt_alias = 307, /* opt_alias */ + YYSYMBOL_opt_locking_clause = 308, /* opt_locking_clause */ + YYSYMBOL_opt_locking_clause_list = 309, /* opt_locking_clause_list */ + YYSYMBOL_locking_clause = 310, /* locking_clause */ + YYSYMBOL_row_lock_mode = 311, /* row_lock_mode */ + YYSYMBOL_opt_row_lock_policy = 312, /* opt_row_lock_policy */ + YYSYMBOL_opt_with_clause = 313, /* opt_with_clause */ + YYSYMBOL_with_clause = 314, /* with_clause */ + YYSYMBOL_with_description_list = 315, /* with_description_list */ + YYSYMBOL_with_description = 316, /* with_description */ + YYSYMBOL_join_clause = 317, /* join_clause */ + YYSYMBOL_opt_join_type = 318, /* opt_join_type */ + YYSYMBOL_join_condition = 319, /* join_condition */ + YYSYMBOL_opt_semicolon = 320, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 321 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -774,19 +785,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 883 +#define YYLAST 898 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 187 +#define YYNTOKENS 192 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 125 +#define YYNNTS 130 /* YYNRULES -- Number of rules. */ -#define YYNRULES 320 +#define YYNRULES 332 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 578 +#define YYNSTATES 601 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 424 +#define YYMAXUTOK 429 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -803,13 +814,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, 176, 2, 2, - 181, 182, 174, 172, 185, 173, 183, 175, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 184, - 165, 162, 166, 186, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 181, 2, 2, + 186, 187, 179, 177, 190, 178, 188, 180, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 189, + 170, 167, 171, 191, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 179, 2, 180, 177, 2, 2, 2, 2, 2, + 2, 184, 2, 185, 182, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -841,47 +852,48 @@ static const yytype_uint8 yytranslate[] = 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, - 168, 169, 170, 171, 178 + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 168, 169, 172, 173, 174, 175, 176, 183 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 313, 313, 332, 338, 345, 349, 353, 354, 355, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 372, 373, 375, 379, 384, 388, 398, 399, 400, 402, - 402, 408, 414, 416, 420, 431, 437, 445, 460, 465, - 466, 472, 478, 489, 490, 495, 506, 519, 531, 538, - 545, 554, 555, 557, 561, 566, 567, 569, 576, 577, - 578, 579, 580, 581, 582, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 598, 599, 601, 602, - 603, 605, 606, 608, 612, 617, 618, 619, 620, 622, - 623, 631, 637, 643, 649, 655, 656, 663, 669, 671, - 681, 688, 699, 706, 714, 715, 722, 729, 733, 738, - 748, 752, 756, 768, 768, 770, 771, 780, 781, 783, - 797, 809, 814, 818, 822, 827, 828, 830, 840, 841, - 843, 845, 846, 848, 850, 851, 853, 858, 860, 861, - 863, 864, 866, 870, 875, 877, 878, 879, 883, 884, - 886, 887, 888, 889, 890, 891, 896, 900, 905, 906, - 908, 912, 917, 925, 925, 925, 925, 925, 927, 928, - 928, 928, 928, 928, 928, 928, 928, 929, 929, 933, - 933, 935, 936, 937, 938, 939, 941, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 952, 953, 955, - 956, 957, 958, 962, 963, 964, 965, 967, 968, 970, - 971, 973, 974, 975, 976, 977, 978, 979, 981, 982, - 984, 986, 988, 989, 990, 991, 992, 993, 995, 996, - 997, 998, 999, 1000, 1002, 1002, 1004, 1006, 1008, 1010, - 1011, 1012, 1013, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 1017, 1019, 1020, 1022, 1023, 1025, 1027, 1029, 1040, 1044, - 1055, 1087, 1096, 1096, 1103, 1103, 1105, 1105, 1112, 1116, - 1121, 1129, 1135, 1139, 1144, 1145, 1147, 1147, 1149, 1149, - 1151, 1152, 1154, 1154, 1160, 1161, 1163, 1167, 1172, 1178, - 1185, 1186, 1187, 1188, 1190, 1191, 1192, 1198, 1198, 1200, - 1202, 1206, 1211, 1221, 1228, 1236, 1260, 1261, 1262, 1263, - 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1277, 1277, 1280, - 1284 + 0, 319, 319, 338, 344, 351, 355, 359, 360, 361, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 378, 379, 381, 385, 390, 394, 404, 405, 406, 408, + 408, 414, 420, 422, 426, 437, 443, 451, 466, 471, + 472, 478, 484, 495, 496, 501, 512, 525, 537, 544, + 551, 560, 561, 563, 567, 572, 573, 575, 582, 583, + 584, 585, 586, 587, 588, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 604, 605, 607, 608, + 609, 611, 612, 614, 618, 623, 624, 625, 626, 628, + 629, 637, 643, 649, 655, 661, 662, 669, 675, 677, + 687, 694, 705, 712, 720, 721, 728, 735, 739, 744, + 754, 758, 762, 774, 774, 776, 777, 786, 787, 789, + 803, 815, 820, 824, 828, 833, 834, 836, 846, 847, + 849, 851, 852, 854, 856, 857, 859, 864, 866, 867, + 869, 870, 872, 876, 881, 883, 884, 885, 889, 890, + 892, 893, 894, 895, 896, 897, 902, 906, 911, 912, + 914, 918, 923, 931, 931, 931, 931, 931, 931, 933, + 934, 934, 934, 934, 934, 934, 934, 934, 935, 935, + 939, 939, 941, 942, 943, 944, 945, 947, 947, 948, + 949, 950, 951, 952, 953, 954, 955, 956, 958, 959, + 961, 962, 963, 964, 968, 970, 971, 973, 974, 975, + 977, 978, 979, 985, 1000, 1009, 1010, 1011, 1012, 1014, + 1015, 1017, 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, + 1028, 1029, 1031, 1033, 1035, 1036, 1037, 1038, 1039, 1040, + 1042, 1043, 1044, 1045, 1046, 1047, 1049, 1049, 1051, 1053, + 1055, 1057, 1058, 1059, 1060, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 1064, 1066, 1067, 1069, 1070, 1072, 1074, 1076, + 1087, 1091, 1102, 1134, 1143, 1143, 1150, 1150, 1152, 1152, + 1159, 1163, 1168, 1176, 1182, 1186, 1191, 1192, 1194, 1194, + 1196, 1196, 1198, 1199, 1201, 1201, 1207, 1208, 1210, 1214, + 1219, 1225, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1245, + 1245, 1247, 1249, 1253, 1258, 1268, 1275, 1283, 1307, 1308, + 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1318, 1324, + 1324, 1327, 1331 }; #endif @@ -908,18 +920,19 @@ static const char *const yytname[] = "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", "NO", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", - "HOUR", "DAY", "MONTH", "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", - "MONTHS", "YEARS", "INTERVAL", "TRUE", "FALSE", "BOOLEAN", "TRANSACTION", - "BEGIN", "COMMIT", "ROLLBACK", "NOWAIT", "SKIP", "LOCKED", "SHARE", - "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", + "DELTA", "FLOAT", "GROUP", "GROUPS", "INDEX", "INNER", "LIMIT", "LOCAL", + "MERGE", "MINUS", "ORDER", "OVER", "RANGE", "ROWS", "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", + "PARTITION", "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", "NO", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", + "DAY", "MONTH", "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", + "YEARS", "INTERVAL", "TRUE", "FALSE", "BOOLEAN", "TRANSACTION", "BEGIN", + "COMMIT", "ROLLBACK", "NOWAIT", "SKIP", "LOCKED", "SHARE", "'='", + "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'?'", "$accept", "input", "statement_list", "statement", @@ -943,19 +956,21 @@ static const char *const yytname[] = "order_list", "order_desc", "opt_order_type", "opt_top", "opt_limit", "expr_list", "opt_literal_list", "literal_list", "expr_alias", "expr", "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", - "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", - "function_expr", "extract_expr", "cast_expr", "datetime_field", - "datetime_field_plural", "duration_field", "array_expr", "array_index", - "between_expr", "column_name", "literal", "string_literal", - "bool_literal", "num_literal", "int_literal", "null_literal", - "date_literal", "interval_literal", "param_expr", "table_ref", - "table_ref_atomic", "nonjoin_table_ref_atomic", "table_ref_commalist", - "table_ref_name", "table_ref_name_no_alias", "table_name", - "opt_index_name", "table_alias", "opt_table_alias", "alias", "opt_alias", - "opt_locking_clause", "opt_locking_clause_list", "locking_clause", - "row_lock_mode", "opt_row_lock_policy", "opt_with_clause", "with_clause", - "with_description_list", "with_description", "join_clause", - "opt_join_type", "join_condition", "opt_semicolon", "ident_commalist", YY_NULLPTR + "in_expr", "window_expr", "opt_partition", "opt_frame_clause", + "frame_type", "frame_bound", "case_expr", "case_list", "exists_expr", + "comp_expr", "function_expr", "extract_expr", "cast_expr", + "datetime_field", "datetime_field_plural", "duration_field", + "array_expr", "array_index", "between_expr", "column_name", "literal", + "string_literal", "bool_literal", "num_literal", "int_literal", + "null_literal", "date_literal", "interval_literal", "param_expr", + "table_ref", "table_ref_atomic", "nonjoin_table_ref_atomic", + "table_ref_commalist", "table_ref_name", "table_ref_name_no_alias", + "table_name", "opt_index_name", "table_alias", "opt_table_alias", + "alias", "opt_alias", "opt_locking_clause", "opt_locking_clause_list", + "locking_clause", "row_lock_mode", "opt_row_lock_policy", + "opt_with_clause", "with_clause", "with_description_list", + "with_description", "join_clause", "opt_join_type", "join_condition", + "opt_semicolon", "ident_commalist", YY_NULLPTR }; static const char * @@ -965,12 +980,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-337) +#define YYPACT_NINF (-464) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-318) +#define YYTABLE_NINF (-330) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -979,64 +994,67 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 461, 21, 63, 103, 139, 63, -18, -39, 77, 69, - 63, 102, 15, -11, 10, 207, 44, 44, 44, 212, - 39, -337, 150, -337, 150, -337, -337, -337, -337, -337, - -337, -337, -337, -337, -337, -337, -337, -28, -337, 273, - 115, -337, 97, 225, -337, 188, 188, 188, 63, 288, - 63, 206, -337, 214, -28, 201, -42, 214, 214, 214, - 63, -337, 222, 172, -337, -337, -337, -337, -337, -337, - 628, -337, 242, -337, -337, 232, 48, -337, 192, -337, - 355, 70, 360, 254, 389, 63, 63, 314, -337, 311, - 224, 405, 363, 63, 230, 231, 407, 407, 407, 412, - 63, 63, -337, 235, 207, -337, 237, 413, 408, -337, - -337, -337, -28, 307, 297, -28, -9, -337, -337, -337, - -337, 421, -337, 423, -337, -337, -337, 246, 244, -337, - -337, -337, -337, 734, -337, -337, -337, -337, -337, -337, - 386, -337, 302, -17, 224, 322, -337, 407, 431, -14, - 278, -38, -337, -337, 344, -337, -337, 327, -337, 327, - 327, -337, -337, -337, -337, -337, 438, -337, -337, 322, - 365, -337, -337, 48, -337, -337, 322, 365, 322, 131, - 326, -337, 248, -337, 70, -337, -337, -337, -337, -337, - -337, -337, -337, -337, -337, -337, -337, -337, -337, -337, - -337, 63, 442, 337, 154, 325, -102, 270, 271, 272, - 186, 390, 275, 458, -337, 296, 109, 483, -337, -337, - -337, -337, -337, -337, -337, -337, -337, -337, -337, -337, - -337, -337, -337, -337, 357, -337, 110, 279, -337, 322, - 405, -337, 417, -337, -337, 409, -337, 314, -337, 284, - 124, -337, 372, 274, -337, 34, -9, -28, 282, -337, - 127, -9, 109, 416, 16, -31, -337, 326, -337, -337, - -337, 298, 387, -337, 653, 361, 303, 128, -337, -337, - -337, 337, 13, 19, 427, 248, 322, 322, 152, 144, - 305, 458, 672, 322, 52, 306, -73, 322, 322, 458, - -337, 458, -60, 308, 147, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 413, 63, -337, 487, 70, 109, -337, 214, 288, -337, - 70, -337, 438, 18, 314, -337, 322, -337, 488, -337, - -337, -337, -337, 322, -337, -337, -337, 326, 322, 322, - -337, 331, 373, -337, 26, -337, 431, 407, -337, -337, - 316, -337, 318, -337, -337, 323, -337, -337, 328, -337, - -337, -337, -337, 329, -337, -337, 136, 334, 431, -337, - 154, -337, -337, 322, -337, -337, 330, 422, 171, 157, - 168, 322, 322, -337, 427, 406, -122, -337, -337, -337, - 402, 650, 537, 458, 338, 296, -337, 414, 341, 537, - 537, 537, 537, 692, 692, 692, 692, 52, 52, -97, - -97, -97, -51, 342, -337, -337, 163, 518, -337, 164, - -337, 337, -337, 73, -337, 343, -337, 37, -337, 453, - -337, -337, -337, -337, 109, 109, -337, 463, 431, -337, - 369, -337, 181, -337, 524, 525, -337, 526, 527, 528, - -337, 415, -337, -337, 432, -337, 136, -337, 431, 189, - -337, 191, -337, 322, 653, 322, 322, -337, 199, 179, - 356, -337, 458, 537, 296, 362, 195, -337, -337, -337, - -337, -337, 367, 440, -337, -337, -337, 467, 469, 472, - 452, 18, 550, -337, -337, -337, 428, -337, -337, 95, - -337, -337, 374, 197, 375, 376, 377, -337, -337, -337, - 216, -337, -337, -32, 378, 109, 203, -337, 322, -337, - 672, 379, 217, -337, -337, 37, 18, -337, -337, -337, - 18, 108, 384, 322, -337, -337, -337, 549, -337, -337, - -337, -337, -337, -337, -337, 109, -337, -337, -337, -337, - 283, 431, -25, 388, 385, 322, 221, 322, -337, -337, - 20, 109, -337, -337, 109, 391, 393, -337 + 629, 35, 54, 101, 105, 54, -16, -52, 30, 57, + 54, 68, 11, 196, 23, 170, 25, 25, 25, 203, + 67, -464, 93, -464, 93, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -26, -464, 230, + 104, -464, 116, 222, -464, 184, 184, 184, 54, 321, + 54, 200, -464, 190, -26, 208, -32, 190, 190, 190, + 54, -464, 217, 158, -464, -464, -464, -464, -464, -464, + 624, -464, 251, -464, -464, 236, 138, -464, 176, -464, + 357, 71, 382, 261, 389, 54, 54, 311, -464, 302, + 223, 408, 369, 54, 241, 242, 413, 413, 413, 428, + 54, 54, -464, 247, 170, -464, 248, 429, 425, -464, + -464, -464, -26, 320, 310, -26, -11, -464, -464, -464, + -464, 438, -464, 439, -464, -464, -464, 257, 255, -464, + -464, -464, -464, 386, -464, -464, -464, -464, -464, -464, + 400, -464, 314, -59, 223, 366, -464, 413, 449, 249, + 284, -49, -464, -464, 359, -464, -464, 339, -464, 339, + 339, -464, -464, -464, -464, -464, 454, -464, -464, 366, + 381, -464, -464, 138, -464, -464, 366, 381, 366, 85, + 338, -464, 231, -464, 71, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, 54, 463, 352, 76, 342, 34, 287, 290, 291, + 211, 416, 295, 420, -464, 292, 58, 448, -464, -464, + -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -464, -464, -464, -464, -464, 373, -464, 127, 294, -464, + 366, 408, -464, 442, -464, -464, 433, -464, 311, -464, + 299, 166, -464, 388, 297, -464, 50, -11, -26, 301, + -464, 149, -11, 58, 440, 18, 9, -464, 338, -464, + -464, -464, 318, 387, -464, 669, 363, 324, 167, -464, + -464, -464, 352, 15, 19, 453, 231, 366, 366, 169, + 60, 327, 420, 662, 366, 10, 328, 44, 366, 366, + 420, -464, 330, 420, 53, 331, 147, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 429, 54, -464, 504, 71, 58, -464, 190, + 321, -464, 71, -464, 454, 21, 311, -464, 366, -464, + 511, -464, -464, -464, -464, 366, -464, -464, -464, 338, + 366, 366, -464, 353, 393, -464, 83, -464, 449, 413, + -464, -464, 334, -464, 340, -464, -464, 355, -464, -464, + 361, -464, -464, -464, -464, 362, -464, -464, 31, 364, + 449, -464, 76, -464, -464, 366, -464, -464, 356, 427, + 130, -39, 113, 366, 366, -464, 453, 444, -136, -464, + -464, -464, 431, 631, 445, 714, 420, 372, 292, -464, + 447, 375, 714, 714, 714, 714, 319, 319, 319, 319, + 10, 10, 55, 55, 55, -77, 376, -464, -464, 172, + 559, -464, 174, -464, 352, -464, 62, -464, 374, -464, + 37, -464, 493, -464, -464, -464, -464, 58, 58, -464, + 502, 449, -464, 401, -464, 193, -464, 561, 562, -464, + 563, 564, 572, -464, 455, -464, -464, 471, -464, 31, + -464, 449, 195, -464, 204, -464, 366, 669, 366, 366, + -464, -75, 99, 396, -464, 420, 456, 381, 714, 292, + 397, 206, -464, -464, -464, -464, -464, 398, 483, -464, + -464, -464, 506, 509, 510, 490, 21, 593, -464, -464, + -464, 466, -464, -464, -112, -464, -464, 414, 214, 417, + 418, 421, -464, -464, -464, 216, -464, -464, 51, 422, + 58, 168, -464, 366, -464, 662, 366, 194, 423, 218, + -464, -464, 37, 21, -464, -464, -464, 21, 226, 426, + 366, -464, -464, -464, 594, -464, -464, -464, -464, -464, + -464, -464, 58, 297, -464, -464, -464, 434, 298, -464, + -464, -464, -464, 259, 449, -21, 446, -464, 600, 610, + 404, -464, 451, 366, 240, 366, -464, -464, -464, -464, + 494, 20, 58, -464, -464, 58, 404, 432, 458, -464, + -464 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1044,100 +1062,103 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 318, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 297, 0, - 272, 101, 33, 0, 45, 52, 52, 52, 0, 0, - 0, 0, 271, 96, 0, 0, 0, 96, 96, 96, - 0, 43, 0, 299, 300, 29, 26, 28, 27, 1, - 298, 2, 0, 6, 5, 149, 110, 111, 141, 93, - 0, 159, 0, 0, 275, 0, 0, 135, 37, 0, + 330, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 309, 0, + 284, 101, 33, 0, 45, 52, 52, 52, 0, 0, + 0, 0, 283, 96, 0, 0, 0, 96, 96, 96, + 0, 43, 0, 311, 312, 29, 26, 28, 27, 1, + 310, 2, 0, 6, 5, 149, 110, 111, 141, 93, + 0, 159, 0, 0, 287, 0, 0, 135, 37, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 4, 0, 0, 129, 123, - 124, 122, 0, 126, 0, 0, 155, 273, 250, 253, - 255, 0, 256, 0, 251, 252, 261, 0, 158, 160, - 243, 244, 245, 254, 246, 247, 248, 249, 32, 31, - 0, 274, 0, 0, 105, 0, 100, 0, 0, 0, + 124, 122, 0, 126, 0, 0, 155, 285, 262, 265, + 267, 0, 268, 0, 263, 264, 273, 0, 158, 160, + 255, 256, 257, 266, 258, 259, 260, 261, 32, 31, + 0, 286, 0, 0, 105, 0, 100, 0, 0, 0, 0, 135, 107, 95, 0, 118, 117, 40, 38, 40, - 40, 94, 91, 92, 302, 301, 0, 148, 128, 0, + 40, 94, 91, 92, 314, 313, 0, 148, 128, 0, 141, 114, 113, 115, 125, 121, 0, 141, 0, 0, - 285, 257, 260, 34, 0, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 258, - 51, 0, 0, 298, 0, 0, 239, 0, 0, 0, - 0, 0, 0, 0, 241, 0, 134, 163, 170, 171, - 172, 165, 167, 173, 166, 186, 174, 175, 176, 177, - 169, 164, 179, 180, 0, 319, 0, 0, 103, 0, - 0, 106, 0, 97, 98, 0, 42, 135, 41, 24, - 0, 22, 132, 130, 156, 283, 155, 0, 140, 142, - 147, 155, 151, 153, 150, 0, 119, 284, 286, 259, - 161, 0, 0, 48, 0, 0, 0, 0, 53, 55, - 56, 298, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 182, 0, 181, 0, 0, 0, 0, 0, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 297, 269, 272, 34, 0, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 270, + 51, 0, 0, 310, 0, 0, 251, 0, 0, 0, + 0, 0, 0, 0, 253, 0, 134, 163, 171, 172, + 173, 165, 167, 168, 174, 166, 187, 175, 176, 177, + 178, 170, 164, 180, 181, 0, 331, 0, 0, 103, + 0, 0, 106, 0, 97, 98, 0, 42, 135, 41, + 24, 0, 22, 132, 130, 156, 295, 155, 0, 140, + 142, 147, 155, 151, 153, 150, 0, 119, 296, 298, + 271, 161, 0, 0, 48, 0, 0, 0, 0, 53, + 55, 56, 310, 129, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 183, 0, 182, 0, 0, 0, 0, + 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 0, 0, 109, 108, 96, 0, 36, - 0, 20, 0, 0, 135, 131, 0, 281, 0, 282, - 162, 112, 116, 0, 146, 145, 144, 285, 0, 0, - 290, 0, 0, 292, 296, 287, 0, 0, 74, 68, - 0, 70, 80, 71, 58, 0, 65, 66, 0, 62, - 63, 69, 72, 77, 67, 59, 82, 0, 0, 47, - 0, 50, 218, 0, 240, 242, 0, 0, 0, 0, - 0, 0, 0, 205, 0, 0, 0, 178, 168, 197, - 198, 0, 193, 0, 0, 0, 184, 0, 196, 195, - 211, 212, 213, 214, 215, 216, 217, 188, 187, 190, - 189, 191, 192, 0, 35, 320, 0, 0, 39, 0, - 23, 298, 133, 262, 264, 0, 266, 279, 265, 137, - 157, 280, 143, 120, 154, 152, 293, 0, 0, 295, - 0, 288, 0, 46, 0, 0, 64, 0, 0, 0, - 73, 0, 86, 87, 0, 57, 81, 83, 0, 0, - 54, 0, 209, 0, 0, 0, 0, 203, 0, 0, - 0, 236, 0, 194, 0, 0, 0, 185, 237, 102, - 99, 25, 0, 0, 314, 306, 312, 310, 313, 308, - 0, 0, 0, 278, 270, 276, 0, 127, 291, 296, - 294, 49, 0, 0, 0, 0, 0, 85, 88, 84, - 0, 90, 219, 0, 0, 207, 0, 206, 0, 210, - 238, 0, 0, 201, 199, 279, 0, 309, 311, 307, - 0, 263, 280, 0, 289, 61, 79, 0, 75, 60, - 76, 89, 220, 221, 204, 208, 202, 200, 267, 303, - 315, 0, 139, 0, 0, 0, 0, 0, 136, 78, - 0, 316, 304, 277, 138, 239, 0, 305 + 0, 0, 0, 0, 104, 0, 0, 109, 108, 96, + 0, 36, 0, 20, 0, 0, 135, 131, 0, 293, + 0, 294, 162, 112, 116, 0, 146, 145, 144, 297, + 0, 0, 302, 0, 0, 304, 308, 299, 0, 0, + 74, 68, 0, 70, 80, 71, 58, 0, 65, 66, + 0, 62, 63, 69, 72, 77, 67, 59, 82, 0, + 0, 47, 0, 50, 230, 0, 252, 254, 0, 0, + 0, 0, 0, 0, 0, 217, 0, 0, 0, 179, + 169, 198, 199, 0, 206, 194, 0, 0, 0, 185, + 0, 197, 196, 223, 224, 225, 226, 227, 228, 229, + 189, 188, 191, 190, 192, 193, 0, 35, 332, 0, + 0, 39, 0, 23, 310, 133, 274, 276, 0, 278, + 291, 277, 137, 157, 292, 143, 120, 154, 152, 305, + 0, 0, 307, 0, 300, 0, 46, 0, 0, 64, + 0, 0, 0, 73, 0, 86, 87, 0, 57, 81, + 83, 0, 0, 54, 0, 221, 0, 0, 0, 0, + 215, 0, 0, 0, 248, 0, 0, 141, 195, 0, + 0, 0, 186, 249, 102, 99, 25, 0, 0, 326, + 318, 324, 322, 325, 320, 0, 0, 0, 290, 282, + 288, 0, 127, 303, 308, 306, 49, 0, 0, 0, + 0, 0, 85, 88, 84, 0, 90, 231, 0, 0, + 219, 0, 218, 0, 222, 250, 0, 209, 0, 0, + 202, 200, 291, 0, 321, 323, 319, 0, 275, 292, + 0, 301, 61, 79, 0, 75, 60, 76, 89, 232, + 233, 216, 220, 205, 212, 210, 211, 0, 0, 203, + 201, 279, 315, 327, 0, 139, 0, 204, 0, 0, + 0, 207, 0, 0, 0, 0, 136, 78, 214, 213, + 0, 0, 328, 316, 289, 138, 0, 251, 0, 208, + 317 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -337, -337, -337, 498, -337, 545, -337, 240, -337, 229, - -337, -337, -337, -337, 249, -93, 193, -337, -337, -337, - 277, -337, 198, -337, 106, -337, -337, -337, -337, 116, - -337, -337, -50, -337, -337, -337, -337, -337, -337, 437, - -337, -337, 345, -193, -87, -337, 36, -54, -35, -337, - -337, -88, 301, -337, -337, -337, -120, -337, -337, 6, - -337, 243, -337, -337, -43, -273, -337, -246, 251, -143, - -194, -337, -337, -337, -337, -337, -337, 300, -337, -337, - -337, -337, -337, -144, -337, -337, -337, -337, -337, 22, - -80, -82, -337, -337, -95, -337, -337, -337, -337, -337, - -336, 53, -337, -337, -337, 1, -337, -337, 55, 339, - -337, 250, -337, 332, -337, 86, -337, -337, -337, 492, - -337, -337, -337, -337, -322 + -464, -464, -464, 565, -464, 614, -464, 300, -464, 227, + -464, -464, -464, -464, 312, -78, 123, -464, -464, -464, + 289, -464, 258, -464, 164, -464, -464, -464, -464, 178, + -464, -464, -51, -464, -464, -464, -464, -464, -464, 499, + -464, -464, 407, -200, -90, -464, 43, -53, -37, -464, + -464, -86, 370, -464, -464, -464, -123, -464, -464, -166, + -464, 304, -464, -464, 87, -259, -464, -14, 316, -145, + -198, -464, -464, -464, -464, -464, -464, -464, -464, -464, + -286, -464, 367, -464, -464, -464, -464, -464, -146, -464, + -464, -464, -464, -464, 61, -60, -80, -464, -464, -98, + -464, -464, -464, -464, -464, -463, 114, -464, -464, -464, + 0, -464, -464, 117, 402, -464, 313, -464, 392, -464, + 153, -464, -464, -464, 567, -464, -464, -464, -464, -321 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 19, 20, 21, 22, 73, 250, 251, 23, 66, - 24, 139, 25, 26, 89, 157, 246, 27, 28, 29, - 84, 277, 278, 279, 376, 460, 456, 465, 466, 467, - 280, 30, 93, 31, 243, 244, 32, 33, 34, 149, + 0, 19, 20, 21, 22, 73, 251, 252, 23, 66, + 24, 139, 25, 26, 89, 157, 247, 27, 28, 29, + 84, 278, 279, 280, 378, 463, 459, 468, 469, 470, + 281, 30, 93, 31, 244, 245, 32, 33, 34, 149, 35, 151, 152, 36, 170, 171, 172, 77, 112, 113, - 175, 78, 169, 252, 334, 335, 146, 507, 568, 116, - 258, 259, 346, 108, 180, 253, 127, 128, 254, 255, - 217, 218, 219, 220, 221, 222, 223, 289, 224, 225, - 226, 227, 228, 197, 198, 199, 229, 230, 231, 232, - 233, 130, 131, 132, 133, 134, 135, 136, 137, 432, - 433, 434, 435, 436, 51, 437, 142, 503, 504, 505, - 340, 266, 267, 268, 354, 451, 37, 38, 63, 64, - 438, 500, 572, 71, 236 + 175, 78, 169, 253, 336, 337, 146, 512, 586, 116, + 259, 260, 348, 108, 180, 254, 127, 128, 255, 256, + 217, 218, 219, 220, 221, 222, 223, 487, 567, 568, + 581, 224, 290, 225, 226, 227, 228, 229, 197, 198, + 199, 230, 231, 232, 233, 234, 130, 131, 132, 133, + 134, 135, 136, 137, 435, 436, 437, 438, 439, 51, + 440, 142, 508, 509, 510, 342, 267, 268, 269, 356, + 454, 37, 38, 63, 64, 441, 505, 593, 71, 237 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1145,188 +1166,190 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 95, 129, 216, 41, 159, 160, 44, 99, 100, 101, - 273, 52, 167, 56, 158, 158, 158, 292, 40, 294, - 396, 40, 384, 575, 173, 168, 567, 173, 177, 60, - 75, 241, 350, 260, 452, 262, 264, 337, 269, 305, - 337, 403, 297, 115, 75, 145, 178, 39, 55, 87, - 237, 90, 97, 45, 234, 48, 469, 109, 481, 298, - 57, 102, 46, 336, 179, 158, 40, 288, 404, 58, - 61, 349, 296, 76, 118, 119, 120, 202, 426, 282, - 319, 283, 320, 297, 429, 305, 143, 144, 381, 351, - 94, 98, 47, 110, 154, 238, 325, 292, 493, 59, - 298, 162, 163, 352, 270, 401, 42, 402, 203, 398, - 471, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 509, 329, 320, 111, - 353, 297, 486, 493, 206, 118, 119, 120, 257, 164, - 494, 387, 43, 388, 389, 495, 520, 240, 298, 297, - 552, 496, 497, 54, 399, 400, 448, 274, 121, 338, - 336, 295, 502, 461, 204, 541, 298, 50, 498, 173, - 342, 49, -315, 499, 122, 494, 256, 207, 208, 209, - 495, 275, 53, 261, 449, 450, 496, 497, 305, 206, - 118, 119, 120, 385, 214, 382, 54, 462, 65, 431, - 260, 109, 271, 498, 560, 444, 445, -315, 499, 483, - 62, 532, 69, 341, 439, 276, 210, 344, 347, 121, - 123, 124, 125, 70, 297, 423, 316, 317, 318, 319, - 386, 320, 207, 208, 209, 122, 391, 110, 492, 566, - 463, 298, 297, 345, 129, 263, 67, 68, 478, 479, - 129, 406, 211, 449, 450, 392, 126, 464, -268, 298, - 476, 393, 72, 287, 453, 475, 212, 297, 407, 114, - 562, 210, 297, 111, 121, 158, 79, 427, 81, 392, - 323, 123, 124, 125, 298, 477, 297, 528, 530, 298, - 122, 88, 322, -269, 297, 323, 474, 287, 80, 206, - 118, 119, 120, 298, 213, 214, 331, 211, 493, 332, - 379, 298, 215, 380, 297, 83, 527, 126, 297, 82, - 554, 212, 424, 85, 86, 206, 118, 119, 120, 91, - 523, 298, 525, 526, 96, 298, 123, 124, 125, 106, - 480, 92, 207, 208, 209, 489, 491, 103, 184, 184, - 494, 485, 247, 248, 75, 495, 107, 104, 117, 213, - 214, 496, 497, 511, 138, 564, 323, 215, 207, 208, - 209, 521, 126, 522, 323, 140, 336, 534, 498, 546, - 336, 210, 547, 499, 121, 555, 185, 186, 187, 188, - 189, 190, 141, 206, 118, 119, 120, 145, 551, 557, - 122, 323, 336, 573, 147, 148, 323, 210, 150, 153, - 121, 118, 155, 156, 565, 161, 54, 211, 166, 120, - 168, 174, 571, 176, 574, 181, 122, 182, 183, 184, - 531, 212, 200, 201, 235, 242, 290, 208, 209, 245, - 239, 249, 114, 211, 265, 272, 123, 124, 125, 15, - 281, 284, 285, 286, 293, 321, 327, 212, 328, 336, - 324, 206, 118, 119, 120, 330, 333, 343, 1, 213, - 214, 348, 123, 124, 125, 210, 2, 215, 121, 356, - 357, 377, 126, 3, 378, 75, 394, 4, 397, 405, - 425, 441, 446, 447, 122, 213, 214, 454, 5, 455, - 299, 6, 7, 215, 457, 208, 209, 403, 126, 458, - 459, 291, 472, 8, 9, 468, 473, 297, 487, 484, - 320, 490, 488, 506, 10, 212, 508, 11, 501, 510, - 512, 513, 514, 515, 516, 517, 518, 300, 529, 536, - 123, 124, 125, 210, 533, 537, 121, 538, 12, 535, - 539, 540, 13, 542, 543, 563, 545, 548, 549, 550, - 553, 556, 122, 213, 214, 561, 570, 14, 105, 74, - 569, 215, 430, 15, 283, 577, 126, 428, 470, 291, - 524, 205, 519, 383, 301, 326, 442, 440, 390, 559, - 558, 300, 576, 212, 339, 544, 165, 443, 0, 355, - 0, 0, 0, 0, 302, 0, 0, 0, 123, 124, - 125, 303, 304, 0, 0, 0, 16, 17, 18, 305, - 306, 0, 0, 0, 0, 0, 0, 0, -317, 0, - 0, 213, 214, 0, 0, 1, 0, 0, -318, 215, - 0, 0, 0, 2, 126, 307, 308, 309, 310, 311, - 3, 0, 312, 313, 4, 314, 315, 316, 317, 318, - 319, 0, 320, 0, 358, 5, 304, 0, 6, 7, - 0, 0, 0, 305, -318, 0, 0, 359, 0, 0, - 8, 9, 360, 361, 362, 363, 364, 0, 365, 0, - 0, 10, 0, 0, 11, 0, 366, 0, 0, -318, - -318, -318, 310, 311, 300, 0, 312, 313, 0, 314, - 315, 316, 317, 318, 319, 12, 320, 0, 0, 13, - 0, 0, 367, 0, 0, 0, 300, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 368, - 15, 369, 370, 0, 0, 0, 300, 0, 0, 0, - 0, 301, 0, 0, 0, 0, 371, 0, 0, 0, - 372, 0, 373, 0, 0, 482, 0, 0, 0, 0, - 0, 395, 374, 301, 0, 0, 0, 0, 0, 304, - 0, 0, 0, 16, 17, 18, 305, 306, 0, 0, - 0, 0, 0, 395, 0, 0, 0, 0, 0, 0, - 0, 304, 0, 0, 0, 0, 375, 0, 305, 306, - 0, 0, 307, 308, 309, 310, 311, 0, 0, 312, - 313, 304, 314, 315, 316, 317, 318, 319, 305, 320, - 0, 0, 0, 0, 307, 308, 309, 310, 311, 0, - 0, 312, 313, 0, 314, 315, 316, 317, 318, 319, - 0, 320, 0, 0, 0, 0, 0, -318, -318, 0, - 0, -318, -318, 0, 314, 315, 316, 317, 318, 319, - 0, 320, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196 + 216, 95, 41, 274, 257, 44, 99, 100, 101, 167, + 52, 262, 56, 293, 40, 295, 158, 158, 158, 159, + 160, 129, 386, 597, 40, 177, 173, 168, 242, 173, + 585, 261, 75, 263, 265, 398, 270, 455, 145, 202, + 339, 115, 60, 548, 178, 298, 48, 532, 87, 484, + 90, 452, 453, 339, 338, 55, 45, 40, 464, 472, + 102, 39, 299, 179, 307, 289, 97, 158, 46, 235, + 297, 203, 352, 351, 478, 118, 119, 120, 325, 275, + 76, 298, 383, 61, 573, 143, 144, 498, 206, 118, + 119, 120, 465, 154, 293, 327, 239, 94, 299, 47, + 162, 163, 403, 276, 42, 405, 98, 322, 43, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 271, 331, 474, 204, 49, 499, + 514, 207, 208, 209, 353, 500, 258, 277, 298, 466, + 389, 241, 390, 391, 501, 502, 164, 109, 354, 491, + 525, 307, 53, 401, 402, 299, 393, 467, 406, 50, + 54, 503, 296, 121, 298, -327, 504, 507, 344, 338, + 298, 298, 173, 62, 210, 355, 394, 121, 298, 122, + 340, 299, 395, 110, 65, 109, 407, 299, 299, 318, + 319, 320, 321, 122, 322, 299, 307, 54, 387, 214, + 261, 272, 384, 69, 264, 447, 448, 434, 488, 479, + 72, 211, 533, 442, 206, 118, 119, 120, 451, 298, + 283, 110, 284, 111, 426, 212, 123, 124, 125, 394, + 539, 400, 388, 79, 497, 480, 299, 321, 559, 322, + 123, 124, 125, 346, 67, 68, 452, 453, 481, 482, + 298, 498, -280, 584, 114, 409, 70, 207, 208, 209, + 477, 111, 126, 213, 214, 564, 129, 299, 57, 298, + 347, 215, 129, 410, 565, 566, 126, 563, 430, 158, + 58, 456, 248, 249, 498, 288, 299, 535, 298, 298, + 561, 575, 80, 499, 590, 206, 118, 119, 120, 500, + 210, 578, 81, 121, 579, 299, 299, 75, 501, 502, + 599, 59, 429, 238, 324, 580, 83, 325, 432, 122, + 82, 537, 92, 427, 88, 503, 499, 288, 91, -327, + 504, 528, 500, 530, 531, 85, 86, 211, 207, 208, + 209, 501, 502, 483, 343, 582, 96, 103, 104, 349, + 75, 212, 106, 333, 381, 490, 334, 382, 503, 494, + 117, 496, 184, 504, 184, 107, 123, 124, 125, 206, + 118, 119, 120, 301, 185, 186, 187, 188, 189, 190, + 516, 210, 526, 325, 121, 325, 138, 140, 562, 213, + 214, 527, 141, 541, 338, 583, 338, 215, 145, 147, + 122, 553, 126, 558, 554, 570, 325, 578, 338, 148, + 579, 150, 207, 208, 209, 153, -281, 118, 211, 206, + 118, 119, 120, 206, 118, 119, 120, 594, 155, 156, + 325, 161, 212, 54, 166, 120, 538, 168, 592, 174, + 595, 176, 181, 182, 183, 184, 200, 123, 124, 125, + 201, 240, 236, 306, 243, 210, 246, 250, 121, 114, + 307, 266, 291, 208, 209, 300, 273, 208, 209, 15, + 213, 214, 282, 285, 122, 323, 286, 287, 215, 294, + 326, 329, 330, 126, 359, 332, 335, 338, 379, -330, + -330, 345, 211, -330, -330, 350, 316, 317, 318, 319, + 320, 321, 301, 322, 358, 210, 212, 428, 121, 210, + 380, 75, 121, 396, 444, 399, 404, 408, 450, 449, + 457, 123, 124, 125, 122, 476, 458, 302, 122, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 460, 292, 475, 213, 214, 292, 461, 462, 406, + 471, 298, 215, 303, 486, 492, 212, 126, 489, 322, + 212, 493, 495, 511, 506, 513, 515, 517, 518, 519, + 520, 123, 124, 125, 304, 123, 124, 125, 521, 523, + 522, 305, 306, 534, 540, 542, 543, 536, 544, 307, + 308, 545, 546, 547, 213, 214, 549, 550, 213, 214, + 576, 552, 215, 588, 555, 556, 215, 126, 557, 560, + 569, 126, 574, 589, 596, 309, 310, 311, 312, 313, + 284, 577, 314, 315, -329, 316, 317, 318, 319, 320, + 321, 1, 322, 587, 433, 105, 1, 591, 74, 2, + 473, 529, 431, 205, 2, 600, 3, 524, 328, 445, + 4, 3, 598, 385, 443, 4, 392, 572, 341, 571, + 357, 5, 446, 0, 6, 7, 5, 551, 0, 6, + 7, 165, 0, 0, 0, 0, 8, 9, 0, 0, + 360, 8, 9, 0, 0, 301, 0, 10, 0, 0, + 11, 0, 10, 361, 0, 11, 0, 0, 362, 363, + 364, 365, 366, 0, 367, 0, 0, 0, 0, 0, + 0, 0, 368, 0, 0, 12, 301, 0, 0, 13, + 12, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 303, 0, 369, 0, + 14, 15, 0, 0, 0, 0, 15, 0, 0, 0, + 0, 485, 0, 0, 0, 0, 0, 397, 0, 370, + 0, 371, 372, 0, 0, 306, 0, 303, 301, 0, + 0, 0, 307, 308, 0, 0, 373, 0, 0, 0, + 0, 374, 0, 375, 16, 17, 18, 0, 397, 16, + 17, 18, 0, 376, 0, 0, 306, 0, 309, 310, + 311, 312, 313, 307, 308, 314, 315, 0, 316, 317, + 318, 319, 320, 321, 0, 322, 0, 0, 0, -330, + 0, 0, 0, 0, 0, 0, 0, 377, 0, 309, + 310, 311, 312, 313, 0, 0, 314, 315, 0, 316, + 317, 318, 319, 320, 321, 0, 322, 0, 306, 0, + 0, 0, 0, 0, 0, 307, -330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -330, -330, -330, 312, 313, 0, 0, 314, 315, + 0, 316, 317, 318, 319, 320, 321, 0, 322 }; static const yytype_int16 yycheck[] = { - 54, 81, 145, 2, 97, 98, 5, 57, 58, 59, - 203, 10, 107, 12, 96, 97, 98, 211, 3, 213, - 293, 3, 3, 3, 112, 12, 51, 115, 115, 19, - 58, 151, 63, 176, 356, 178, 179, 3, 182, 136, - 3, 101, 115, 78, 58, 83, 55, 26, 12, 48, - 64, 50, 94, 71, 147, 94, 378, 9, 180, 132, - 71, 60, 80, 185, 73, 147, 3, 210, 128, 80, - 60, 55, 215, 37, 4, 5, 6, 94, 324, 181, - 177, 183, 179, 115, 330, 136, 85, 86, 281, 120, - 54, 133, 110, 45, 93, 149, 239, 291, 25, 110, - 132, 100, 101, 134, 184, 299, 3, 301, 125, 182, - 383, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 448, 247, 179, 81, - 161, 115, 405, 25, 3, 4, 5, 6, 173, 103, - 67, 285, 3, 286, 287, 72, 468, 185, 132, 115, - 182, 78, 79, 181, 297, 298, 130, 3, 88, 125, - 185, 215, 125, 27, 181, 501, 132, 98, 95, 257, - 257, 94, 99, 100, 104, 67, 170, 46, 47, 48, - 72, 27, 80, 177, 158, 159, 78, 79, 136, 3, - 4, 5, 6, 174, 174, 182, 181, 61, 154, 181, - 343, 9, 201, 95, 540, 348, 349, 99, 100, 403, - 3, 484, 0, 256, 334, 61, 85, 90, 261, 88, - 150, 151, 152, 184, 115, 320, 174, 175, 176, 177, - 284, 179, 46, 47, 48, 104, 92, 45, 431, 561, - 104, 132, 115, 116, 324, 114, 17, 18, 391, 392, - 330, 104, 121, 158, 159, 111, 186, 121, 185, 132, - 92, 117, 112, 111, 357, 108, 135, 115, 121, 77, - 543, 85, 115, 81, 88, 357, 3, 327, 181, 111, - 185, 150, 151, 152, 132, 117, 115, 108, 482, 132, - 104, 3, 182, 185, 115, 185, 125, 111, 183, 3, - 4, 5, 6, 132, 173, 174, 182, 121, 25, 185, - 182, 132, 181, 185, 115, 127, 117, 186, 115, 94, - 117, 135, 321, 46, 47, 3, 4, 5, 6, 123, - 473, 132, 475, 476, 133, 132, 150, 151, 152, 97, - 394, 127, 46, 47, 48, 182, 182, 125, 185, 185, - 67, 405, 159, 160, 58, 72, 124, 185, 3, 173, - 174, 78, 79, 182, 4, 82, 185, 181, 46, 47, - 48, 182, 186, 182, 185, 121, 185, 182, 95, 182, - 185, 85, 185, 100, 88, 528, 138, 139, 140, 141, - 142, 143, 3, 3, 4, 5, 6, 83, 182, 182, - 104, 185, 185, 182, 93, 181, 185, 85, 3, 46, - 88, 4, 182, 182, 131, 3, 181, 121, 181, 6, - 12, 114, 565, 126, 567, 4, 104, 4, 182, 185, - 484, 135, 46, 131, 3, 91, 46, 47, 48, 112, - 162, 3, 77, 121, 118, 3, 150, 151, 152, 112, - 125, 181, 181, 181, 179, 98, 39, 135, 49, 185, - 181, 3, 4, 5, 6, 181, 94, 185, 7, 173, - 174, 55, 150, 151, 152, 85, 15, 181, 88, 181, - 93, 120, 186, 22, 181, 58, 181, 26, 182, 181, - 3, 3, 161, 120, 104, 173, 174, 181, 37, 181, - 17, 40, 41, 181, 181, 47, 48, 101, 186, 181, - 181, 121, 182, 52, 53, 181, 94, 115, 104, 181, - 179, 3, 180, 70, 63, 135, 63, 66, 185, 160, - 6, 6, 6, 6, 6, 120, 104, 54, 182, 99, - 150, 151, 152, 85, 182, 78, 88, 78, 87, 182, - 78, 99, 91, 3, 126, 6, 182, 182, 182, 182, - 182, 182, 104, 173, 174, 181, 181, 106, 70, 24, - 182, 181, 332, 112, 183, 182, 186, 328, 380, 121, - 474, 144, 466, 282, 101, 240, 343, 336, 288, 536, - 535, 54, 570, 135, 255, 509, 104, 347, -1, 267, - -1, -1, -1, -1, 121, -1, -1, -1, 150, 151, - 152, 128, 129, -1, -1, -1, 155, 156, 157, 136, - 137, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 173, 174, -1, -1, 7, -1, -1, 101, 181, - -1, -1, -1, 15, 186, 162, 163, 164, 165, 166, - 22, -1, 169, 170, 26, 172, 173, 174, 175, 176, - 177, -1, 179, -1, 11, 37, 129, -1, 40, 41, - -1, -1, -1, 136, 137, -1, -1, 24, -1, -1, - 52, 53, 29, 30, 31, 32, 33, -1, 35, -1, - -1, 63, -1, -1, 66, -1, 43, -1, -1, 162, - 163, 164, 165, 166, 54, -1, 169, 170, -1, 172, - 173, 174, 175, 176, 177, 87, 179, -1, -1, 91, - -1, -1, 69, -1, -1, -1, 54, -1, -1, -1, - -1, -1, -1, -1, 106, -1, -1, -1, -1, 86, - 112, 88, 89, -1, -1, -1, 54, -1, -1, -1, - -1, 101, -1, -1, -1, -1, 103, -1, -1, -1, - 107, -1, 109, -1, -1, 115, -1, -1, -1, -1, - -1, 121, 119, 101, -1, -1, -1, -1, -1, 129, - -1, -1, -1, 155, 156, 157, 136, 137, -1, -1, - -1, -1, -1, 121, -1, -1, -1, -1, -1, -1, - -1, 129, -1, -1, -1, -1, 153, -1, 136, 137, - -1, -1, 162, 163, 164, 165, 166, -1, -1, 169, - 170, 129, 172, 173, 174, 175, 176, 177, 136, 179, - -1, -1, -1, -1, 162, 163, 164, 165, 166, -1, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - -1, 179, -1, -1, -1, -1, -1, 165, 166, -1, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - -1, 179, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149 + 145, 54, 2, 203, 170, 5, 57, 58, 59, 107, + 10, 177, 12, 211, 3, 213, 96, 97, 98, 97, + 98, 81, 3, 3, 3, 115, 112, 12, 151, 115, + 51, 176, 58, 178, 179, 294, 182, 358, 87, 98, + 3, 78, 19, 506, 55, 120, 98, 122, 48, 185, + 50, 163, 164, 3, 190, 12, 72, 3, 27, 380, + 60, 26, 137, 74, 141, 210, 98, 147, 84, 147, + 215, 130, 63, 55, 113, 4, 5, 6, 190, 3, + 37, 120, 282, 60, 547, 85, 86, 25, 3, 4, + 5, 6, 61, 93, 292, 240, 149, 54, 137, 115, + 100, 101, 300, 27, 3, 303, 138, 184, 3, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 184, 248, 385, 186, 98, 67, + 451, 46, 47, 48, 125, 73, 173, 61, 120, 108, + 286, 190, 287, 288, 82, 83, 103, 9, 139, 408, + 471, 141, 84, 298, 299, 137, 96, 126, 105, 102, + 186, 99, 215, 92, 120, 103, 104, 130, 258, 190, + 120, 120, 258, 3, 89, 166, 116, 92, 120, 108, + 130, 137, 122, 45, 159, 9, 133, 137, 137, 179, + 180, 181, 182, 108, 184, 137, 141, 186, 179, 179, + 345, 201, 187, 0, 119, 350, 351, 186, 406, 96, + 117, 126, 113, 336, 3, 4, 5, 6, 135, 120, + 186, 45, 188, 85, 322, 140, 155, 156, 157, 116, + 489, 187, 285, 3, 434, 122, 137, 182, 187, 184, + 155, 156, 157, 94, 17, 18, 163, 164, 393, 394, + 120, 25, 190, 574, 78, 108, 189, 46, 47, 48, + 130, 85, 191, 178, 179, 71, 326, 137, 72, 120, + 121, 186, 332, 126, 80, 81, 191, 536, 329, 359, + 84, 359, 159, 160, 25, 116, 137, 485, 120, 120, + 122, 550, 188, 67, 580, 3, 4, 5, 6, 73, + 89, 3, 186, 92, 6, 137, 137, 58, 82, 83, + 596, 115, 326, 64, 187, 17, 132, 190, 332, 108, + 98, 487, 132, 323, 3, 99, 67, 116, 128, 103, + 104, 476, 73, 478, 479, 46, 47, 126, 46, 47, + 48, 82, 83, 396, 257, 86, 138, 130, 190, 262, + 58, 140, 101, 187, 187, 408, 190, 190, 99, 187, + 3, 187, 190, 104, 190, 129, 155, 156, 157, 3, + 4, 5, 6, 54, 143, 144, 145, 146, 147, 148, + 187, 89, 187, 190, 92, 190, 4, 126, 533, 178, + 179, 187, 3, 187, 190, 136, 190, 186, 87, 97, + 108, 187, 191, 187, 190, 187, 190, 3, 190, 186, + 6, 3, 46, 47, 48, 46, 190, 4, 126, 3, + 4, 5, 6, 3, 4, 5, 6, 187, 187, 187, + 190, 3, 140, 186, 186, 6, 489, 12, 583, 119, + 585, 131, 4, 4, 187, 190, 46, 155, 156, 157, + 136, 167, 3, 134, 95, 89, 117, 3, 92, 78, + 141, 123, 46, 47, 48, 17, 3, 47, 48, 117, + 178, 179, 130, 186, 108, 102, 186, 186, 186, 184, + 186, 39, 49, 191, 97, 186, 98, 190, 125, 170, + 171, 190, 126, 174, 175, 55, 177, 178, 179, 180, + 181, 182, 54, 184, 186, 89, 140, 3, 92, 89, + 186, 58, 92, 186, 3, 187, 186, 186, 125, 166, + 186, 155, 156, 157, 108, 98, 186, 79, 108, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 186, 126, 187, 178, 179, 126, 186, 186, 105, + 186, 120, 186, 105, 109, 108, 140, 191, 186, 184, + 140, 185, 3, 70, 190, 63, 165, 6, 6, 6, + 6, 155, 156, 157, 126, 155, 156, 157, 6, 108, + 125, 133, 134, 187, 187, 187, 103, 131, 82, 141, + 142, 82, 82, 103, 178, 179, 3, 131, 178, 179, + 6, 187, 186, 3, 187, 187, 186, 191, 187, 187, + 187, 191, 186, 3, 120, 167, 168, 169, 170, 171, + 188, 187, 174, 175, 0, 177, 178, 179, 180, 181, + 182, 7, 184, 187, 334, 70, 7, 186, 24, 15, + 382, 477, 330, 144, 15, 187, 22, 469, 241, 345, + 26, 22, 591, 283, 338, 26, 289, 543, 256, 542, + 268, 37, 349, -1, 40, 41, 37, 514, -1, 40, + 41, 104, -1, -1, -1, -1, 52, 53, -1, -1, + 11, 52, 53, -1, -1, 54, -1, 63, -1, -1, + 66, -1, 63, 24, -1, 66, -1, -1, 29, 30, + 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, + -1, -1, 43, -1, -1, 91, 54, -1, -1, 95, + 91, -1, -1, -1, 95, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 111, 105, -1, 69, -1, + 111, 117, -1, -1, -1, -1, 117, -1, -1, -1, + -1, 120, -1, -1, -1, -1, -1, 126, -1, 90, + -1, 92, 93, -1, -1, 134, -1, 105, 54, -1, + -1, -1, 141, 142, -1, -1, 107, -1, -1, -1, + -1, 112, -1, 114, 160, 161, 162, -1, 126, 160, + 161, 162, -1, 124, -1, -1, 134, -1, 167, 168, + 169, 170, 171, 141, 142, 174, 175, -1, 177, 178, + 179, 180, 181, 182, -1, 184, -1, -1, -1, 105, + -1, -1, -1, -1, -1, -1, -1, 158, -1, 167, + 168, 169, 170, 171, -1, -1, 174, 175, -1, 177, + 178, 179, 180, 181, 182, -1, 184, -1, 134, -1, + -1, -1, -1, -1, -1, 141, 142, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 167, 168, 169, 170, 171, -1, -1, 174, 175, + -1, 177, 178, 179, 180, 181, 182, -1, 184 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1334,101 +1357,105 @@ static const yytype_int16 yycheck[] = static const yytype_int16 yystos[] = { 0, 7, 15, 22, 26, 37, 40, 41, 52, 53, - 63, 66, 87, 91, 106, 112, 155, 156, 157, 188, - 189, 190, 191, 195, 197, 199, 200, 204, 205, 206, - 218, 220, 223, 224, 225, 227, 230, 303, 304, 26, - 3, 292, 3, 3, 292, 71, 80, 110, 94, 94, - 98, 291, 292, 80, 181, 233, 292, 71, 80, 110, - 19, 60, 3, 305, 306, 154, 196, 196, 196, 0, - 184, 310, 112, 192, 192, 58, 233, 234, 238, 3, - 183, 181, 94, 127, 207, 207, 207, 292, 3, 201, - 292, 123, 127, 219, 233, 234, 133, 94, 133, 219, - 219, 219, 292, 125, 185, 190, 97, 124, 250, 9, - 45, 81, 235, 236, 77, 235, 246, 3, 4, 5, - 6, 88, 104, 150, 151, 152, 186, 253, 254, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 4, 198, - 121, 3, 293, 292, 292, 83, 243, 93, 181, 226, - 3, 228, 229, 46, 292, 182, 182, 202, 278, 202, - 202, 3, 292, 292, 233, 306, 181, 281, 12, 239, - 231, 232, 233, 238, 114, 237, 126, 231, 55, 73, - 251, 4, 4, 182, 185, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 270, 271, 272, - 46, 131, 94, 125, 181, 226, 3, 46, 47, 48, - 85, 121, 135, 173, 174, 181, 256, 257, 258, 259, - 260, 261, 262, 263, 265, 266, 267, 268, 269, 273, - 274, 275, 276, 277, 202, 3, 311, 64, 234, 162, - 185, 243, 91, 221, 222, 112, 203, 203, 203, 3, - 193, 194, 240, 252, 255, 256, 246, 235, 247, 248, - 256, 246, 256, 114, 256, 118, 298, 299, 300, 270, - 277, 292, 3, 230, 3, 27, 61, 208, 209, 210, - 217, 125, 181, 183, 181, 181, 181, 111, 256, 264, - 46, 121, 257, 179, 257, 234, 256, 115, 132, 17, - 54, 101, 121, 128, 129, 136, 137, 162, 163, 164, - 165, 166, 169, 170, 172, 173, 174, 175, 176, 177, - 179, 98, 182, 185, 181, 256, 229, 39, 49, 243, - 181, 182, 185, 94, 241, 242, 185, 3, 125, 296, - 297, 251, 231, 185, 90, 116, 249, 251, 55, 55, - 63, 120, 134, 161, 301, 300, 181, 93, 11, 24, - 29, 30, 31, 32, 33, 35, 43, 69, 86, 88, - 89, 103, 107, 109, 119, 153, 211, 120, 181, 182, - 185, 230, 182, 239, 3, 174, 234, 270, 256, 256, - 264, 92, 111, 117, 181, 121, 252, 182, 182, 256, - 256, 257, 257, 101, 128, 181, 104, 121, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 281, 292, 3, 254, 219, 201, 254, - 194, 181, 286, 287, 288, 289, 290, 292, 307, 243, - 255, 3, 248, 298, 256, 256, 161, 120, 130, 158, - 159, 302, 311, 202, 181, 181, 213, 181, 181, 181, - 212, 27, 61, 104, 121, 214, 215, 216, 181, 311, - 209, 252, 182, 94, 125, 108, 92, 117, 256, 256, - 234, 180, 115, 257, 181, 234, 252, 104, 180, 182, - 3, 182, 230, 25, 67, 72, 78, 79, 95, 100, - 308, 185, 125, 294, 295, 296, 70, 244, 63, 311, - 160, 182, 6, 6, 6, 6, 6, 120, 104, 216, - 311, 182, 182, 256, 211, 256, 256, 117, 108, 182, - 257, 234, 252, 182, 182, 182, 99, 78, 78, 78, - 99, 287, 3, 126, 302, 182, 182, 185, 182, 182, - 182, 182, 182, 182, 117, 256, 182, 182, 295, 288, - 287, 181, 252, 6, 82, 131, 311, 51, 245, 182, - 181, 256, 309, 182, 256, 3, 276, 182 + 63, 66, 91, 95, 111, 117, 160, 161, 162, 193, + 194, 195, 196, 200, 202, 204, 205, 209, 210, 211, + 223, 225, 228, 229, 230, 232, 235, 313, 314, 26, + 3, 302, 3, 3, 302, 72, 84, 115, 98, 98, + 102, 301, 302, 84, 186, 238, 302, 72, 84, 115, + 19, 60, 3, 315, 316, 159, 201, 201, 201, 0, + 189, 320, 117, 197, 197, 58, 238, 239, 243, 3, + 188, 186, 98, 132, 212, 212, 212, 302, 3, 206, + 302, 128, 132, 224, 238, 239, 138, 98, 138, 224, + 224, 224, 302, 130, 190, 195, 101, 129, 255, 9, + 45, 85, 240, 241, 78, 240, 251, 3, 4, 5, + 6, 92, 108, 155, 156, 157, 191, 258, 259, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 4, 203, + 126, 3, 303, 302, 302, 87, 248, 97, 186, 231, + 3, 233, 234, 46, 302, 187, 187, 207, 288, 207, + 207, 3, 302, 302, 238, 316, 186, 291, 12, 244, + 236, 237, 238, 243, 119, 242, 131, 236, 55, 74, + 256, 4, 4, 187, 190, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 280, 281, 282, + 46, 136, 98, 130, 186, 231, 3, 46, 47, 48, + 89, 126, 140, 178, 179, 186, 261, 262, 263, 264, + 265, 266, 267, 268, 273, 275, 276, 277, 278, 279, + 283, 284, 285, 286, 287, 207, 3, 321, 64, 239, + 167, 190, 248, 95, 226, 227, 117, 208, 208, 208, + 3, 198, 199, 245, 257, 260, 261, 251, 240, 252, + 253, 261, 251, 261, 119, 261, 123, 308, 309, 310, + 280, 287, 302, 3, 235, 3, 27, 61, 213, 214, + 215, 222, 130, 186, 188, 186, 186, 186, 116, 261, + 274, 46, 126, 262, 184, 262, 239, 261, 120, 137, + 17, 54, 79, 105, 126, 133, 134, 141, 142, 167, + 168, 169, 170, 171, 174, 175, 177, 178, 179, 180, + 181, 182, 184, 102, 187, 190, 186, 261, 234, 39, + 49, 248, 186, 187, 190, 98, 246, 247, 190, 3, + 130, 306, 307, 256, 236, 190, 94, 121, 254, 256, + 55, 55, 63, 125, 139, 166, 311, 310, 186, 97, + 11, 24, 29, 30, 31, 32, 33, 35, 43, 69, + 90, 92, 93, 107, 112, 114, 124, 158, 216, 125, + 186, 187, 190, 235, 187, 244, 3, 179, 239, 280, + 261, 261, 274, 96, 116, 122, 186, 126, 257, 187, + 187, 261, 261, 262, 186, 262, 105, 133, 186, 108, + 126, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 291, 302, 3, 259, + 224, 206, 259, 199, 186, 296, 297, 298, 299, 300, + 302, 317, 248, 260, 3, 253, 308, 261, 261, 166, + 125, 135, 163, 164, 312, 321, 207, 186, 186, 218, + 186, 186, 186, 217, 27, 61, 108, 126, 219, 220, + 221, 186, 321, 214, 257, 187, 98, 130, 113, 96, + 122, 261, 261, 239, 185, 120, 109, 269, 262, 186, + 239, 257, 108, 185, 187, 3, 187, 235, 25, 67, + 73, 82, 83, 99, 104, 318, 190, 130, 304, 305, + 306, 70, 249, 63, 321, 165, 187, 6, 6, 6, + 6, 6, 125, 108, 221, 321, 187, 187, 261, 216, + 261, 261, 122, 113, 187, 262, 131, 251, 239, 257, + 187, 187, 187, 103, 82, 82, 82, 103, 297, 3, + 131, 312, 187, 187, 190, 187, 187, 187, 187, 187, + 187, 122, 261, 257, 71, 80, 81, 270, 271, 187, + 187, 305, 298, 297, 186, 257, 6, 187, 3, 6, + 17, 272, 86, 136, 321, 51, 250, 187, 3, 3, + 272, 186, 261, 319, 187, 261, 120, 3, 286, 272, + 187 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 187, 188, 189, 189, 190, 190, 190, 190, 190, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 192, 192, 193, 193, 194, 194, 195, 195, 195, 196, - 196, 197, 198, 199, 199, 200, 200, 201, 202, 203, - 203, 204, 204, 205, 205, 205, 206, 206, 206, 206, - 206, 207, 207, 208, 208, 209, 209, 210, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 212, 212, 213, 213, - 213, 214, 214, 215, 215, 216, 216, 216, 216, 217, - 217, 218, 218, 218, 218, 219, 219, 220, 221, 222, - 223, 224, 225, 225, 226, 226, 227, 228, 228, 229, - 230, 230, 230, 231, 231, 232, 232, 233, 233, 234, - 234, 235, 236, 236, 236, 237, 237, 238, 239, 239, - 240, 241, 241, 242, 243, 243, 244, 244, 245, 245, - 246, 246, 247, 247, 248, 249, 249, 249, 250, 250, - 251, 251, 251, 251, 251, 251, 252, 252, 253, 253, - 254, 254, 255, 256, 256, 256, 256, 256, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 258, - 258, 259, 259, 259, 259, 259, 260, 260, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 261, 261, 262, - 262, 262, 262, 263, 263, 263, 263, 264, 264, 265, - 265, 266, 266, 266, 266, 266, 266, 266, 267, 267, - 268, 269, 270, 270, 270, 270, 270, 270, 271, 271, - 271, 271, 271, 271, 272, 272, 273, 274, 275, 276, - 276, 276, 276, 277, 277, 277, 277, 277, 277, 277, - 278, 279, 279, 280, 280, 281, 282, 283, 284, 284, - 284, 285, 286, 286, 287, 287, 288, 288, 289, 289, - 290, 291, 292, 292, 293, 293, 294, 294, 295, 295, - 296, 296, 297, 297, 298, 298, 299, 299, 300, 300, - 301, 301, 301, 301, 302, 302, 302, 303, 303, 304, - 305, 305, 306, 307, 307, 307, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 309, 310, 310, 311, - 311 + 0, 192, 193, 194, 194, 195, 195, 195, 195, 195, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 197, 197, 198, 198, 199, 199, 200, 200, 200, 201, + 201, 202, 203, 204, 204, 205, 205, 206, 207, 208, + 208, 209, 209, 210, 210, 210, 211, 211, 211, 211, + 211, 212, 212, 213, 213, 214, 214, 215, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 217, 217, 218, 218, + 218, 219, 219, 220, 220, 221, 221, 221, 221, 222, + 222, 223, 223, 223, 223, 224, 224, 225, 226, 227, + 228, 229, 230, 230, 231, 231, 232, 233, 233, 234, + 235, 235, 235, 236, 236, 237, 237, 238, 238, 239, + 239, 240, 241, 241, 241, 242, 242, 243, 244, 244, + 245, 246, 246, 247, 248, 248, 249, 249, 250, 250, + 251, 251, 252, 252, 253, 254, 254, 254, 255, 255, + 256, 256, 256, 256, 256, 256, 257, 257, 258, 258, + 259, 259, 260, 261, 261, 261, 261, 261, 261, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 263, 263, 264, 264, 264, 264, 264, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, + 267, 267, 267, 267, 268, 269, 269, 270, 270, 270, + 271, 271, 271, 272, 272, 273, 273, 273, 273, 274, + 274, 275, 275, 276, 276, 276, 276, 276, 276, 276, + 277, 277, 278, 279, 280, 280, 280, 280, 280, 280, + 281, 281, 281, 281, 281, 281, 282, 282, 283, 284, + 285, 286, 286, 286, 286, 287, 287, 287, 287, 287, + 287, 287, 288, 289, 289, 290, 290, 291, 292, 293, + 294, 294, 294, 295, 296, 296, 297, 297, 298, 298, + 299, 299, 300, 301, 302, 302, 303, 303, 304, 304, + 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, + 310, 310, 311, 311, 311, 311, 312, 312, 312, 313, + 313, 314, 315, 315, 316, 317, 317, 317, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, + 320, 321, 321 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1450,23 +1477,24 @@ static const yytype_int8 yyr2[] = 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, 1, 2, 3, 5, - 1, 3, 1, 2, 2, 1, 0, 1, 0, 2, - 1, 3, 3, 4, 6, 8, 1, 2, 1, 2, - 1, 2, 1, 1, 1, 0, 1, 1, 0, 1, - 3 + 1, 3, 2, 1, 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, 7, 3, 0, 2, 5, 0, + 1, 1, 1, 2, 2, 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, 1, 2, + 3, 5, 1, 3, 1, 2, 2, 1, 0, 1, + 0, 2, 1, 3, 3, 4, 6, 8, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, + 0, 1, 3 }; @@ -2030,31 +2058,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 177 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2036 "bison_parser.cpp" +#line 2064 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 177 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2042 "bison_parser.cpp" +#line 2070 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2048 "bison_parser.cpp" +#line 2076 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2054 "bison_parser.cpp" +#line 2082 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).stmt_vec)) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2063,23 +2091,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2067 "bison_parser.cpp" +#line 2095 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2073 "bison_parser.cpp" +#line 2101 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2079 "bison_parser.cpp" +#line 2107 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2088,11 +2116,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2092 "bison_parser.cpp" +#line 2120 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2101,89 +2129,89 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2105 "bison_parser.cpp" +#line 2133 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2111 "bison_parser.cpp" +#line 2139 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2117 "bison_parser.cpp" +#line 2145 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2123 "bison_parser.cpp" +#line 2151 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 177 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2129 "bison_parser.cpp" +#line 2157 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2135 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2141 "bison_parser.cpp" +#line 2169 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2147 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 177 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2153 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2159 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2165 "bison_parser.cpp" +#line 2193 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2171 "bison_parser.cpp" +#line 2199 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2177 "bison_parser.cpp" +#line 2205 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2183 "bison_parser.cpp" +#line 2211 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).table_element_vec)) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2192,113 +2220,113 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2196 "bison_parser.cpp" +#line 2224 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2202 "bison_parser.cpp" +#line 2230 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2208 "bison_parser.cpp" +#line 2236 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2214 "bison_parser.cpp" +#line 2242 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2220 "bison_parser.cpp" +#line 2248 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2226 "bison_parser.cpp" +#line 2254 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2232 "bison_parser.cpp" +#line 2260 "bison_parser.cpp" break; case YYSYMBOL_column_constraint_set: /* column_constraint_set */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2238 "bison_parser.cpp" +#line 2266 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2244 "bison_parser.cpp" +#line 2272 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2250 "bison_parser.cpp" +#line 2278 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2256 "bison_parser.cpp" +#line 2284 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2262 "bison_parser.cpp" +#line 2290 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2268 "bison_parser.cpp" +#line 2296 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2274 "bison_parser.cpp" +#line 2302 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2280 "bison_parser.cpp" +#line 2308 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2286 "bison_parser.cpp" +#line 2314 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2292 "bison_parser.cpp" +#line 2320 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2298 "bison_parser.cpp" +#line 2326 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 169 "bison_parser.y" +#line 172 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2307,17 +2335,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2311 "bison_parser.cpp" +#line 2339 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2317 "bison_parser.cpp" +#line 2345 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).update_vec)) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2326,77 +2354,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2330 "bison_parser.cpp" +#line 2358 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2336 "bison_parser.cpp" +#line 2364 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2342 "bison_parser.cpp" +#line 2370 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2348 "bison_parser.cpp" +#line 2376 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2354 "bison_parser.cpp" +#line 2382 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2360 "bison_parser.cpp" +#line 2388 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2366 "bison_parser.cpp" +#line 2394 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2372 "bison_parser.cpp" +#line 2400 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2378 "bison_parser.cpp" +#line 2406 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2384 "bison_parser.cpp" +#line 2412 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2390 "bison_parser.cpp" +#line 2418 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2396 "bison_parser.cpp" +#line 2424 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2405,41 +2433,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2409 "bison_parser.cpp" +#line 2437 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2415 "bison_parser.cpp" +#line 2443 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2421 "bison_parser.cpp" +#line 2449 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2427 "bison_parser.cpp" +#line 2455 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2433 "bison_parser.cpp" +#line 2461 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2439 "bison_parser.cpp" +#line 2467 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2448,11 +2476,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2452 "bison_parser.cpp" +#line 2480 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2461,35 +2489,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2465 "bison_parser.cpp" +#line 2493 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2471 "bison_parser.cpp" +#line 2499 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2477 "bison_parser.cpp" +#line 2505 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2483 "bison_parser.cpp" +#line 2511 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2489 "bison_parser.cpp" +#line 2517 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2498,11 +2526,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2502 "bison_parser.cpp" +#line 2530 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2511,11 +2539,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2515 "bison_parser.cpp" +#line 2543 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2524,215 +2552,252 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2528 "bison_parser.cpp" +#line 2556 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2534 "bison_parser.cpp" +#line 2562 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2540 "bison_parser.cpp" +#line 2568 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2546 "bison_parser.cpp" +#line 2574 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2552 "bison_parser.cpp" +#line 2580 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2558 "bison_parser.cpp" +#line 2586 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2564 "bison_parser.cpp" +#line 2592 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2570 "bison_parser.cpp" +#line 2598 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2576 "bison_parser.cpp" +#line 2604 "bison_parser.cpp" + break; + + case YYSYMBOL_window_expr: /* window_expr */ +#line 189 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2610 "bison_parser.cpp" + break; + + case YYSYMBOL_opt_partition: /* opt_partition */ +#line 181 "bison_parser.y" + { + if (((*yyvaluep).expr_vec)) { + for (auto ptr : *(((*yyvaluep).expr_vec))) { + delete ptr; + } + } + delete (((*yyvaluep).expr_vec)); + } +#line 2623 "bison_parser.cpp" + break; + + case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ +#line 189 "bison_parser.y" + { delete (((*yyvaluep).frame_description)); } +#line 2629 "bison_parser.cpp" + break; + + case YYSYMBOL_frame_type: /* frame_type */ +#line 167 "bison_parser.y" + { } +#line 2635 "bison_parser.cpp" + break; + + case YYSYMBOL_frame_bound: /* frame_bound */ +#line 180 "bison_parser.y" + { free( (((*yyvaluep).sval)) ); } +#line 2641 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2582 "bison_parser.cpp" +#line 2647 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2588 "bison_parser.cpp" +#line 2653 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2594 "bison_parser.cpp" +#line 2659 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2600 "bison_parser.cpp" +#line 2665 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2606 "bison_parser.cpp" +#line 2671 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2612 "bison_parser.cpp" +#line 2677 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2618 "bison_parser.cpp" +#line 2683 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2624 "bison_parser.cpp" +#line 2689 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2630 "bison_parser.cpp" +#line 2695 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2636 "bison_parser.cpp" +#line 2701 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2642 "bison_parser.cpp" +#line 2707 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2648 "bison_parser.cpp" +#line 2713 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2654 "bison_parser.cpp" +#line 2719 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2660 "bison_parser.cpp" +#line 2725 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2666 "bison_parser.cpp" +#line 2731 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2672 "bison_parser.cpp" +#line 2737 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2678 "bison_parser.cpp" +#line 2743 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2684 "bison_parser.cpp" +#line 2749 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2690 "bison_parser.cpp" +#line 2755 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2696 "bison_parser.cpp" +#line 2761 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2702 "bison_parser.cpp" +#line 2767 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2708 "bison_parser.cpp" +#line 2773 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2714 "bison_parser.cpp" +#line 2779 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2720 "bison_parser.cpp" +#line 2785 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2726 "bison_parser.cpp" +#line 2791 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2732 "bison_parser.cpp" +#line 2797 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 178 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).table_vec)) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2741,134 +2806,134 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2745 "bison_parser.cpp" +#line 2810 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2751 "bison_parser.cpp" +#line 2816 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2757 "bison_parser.cpp" +#line 2822 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 165 "bison_parser.y" +#line 168 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2766 "bison_parser.cpp" +#line 2831 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 177 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2772 "bison_parser.cpp" +#line 2837 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2778 "bison_parser.cpp" +#line 2843 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2784 "bison_parser.cpp" +#line 2849 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2790 "bison_parser.cpp" +#line 2855 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2796 "bison_parser.cpp" +#line 2861 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2802 "bison_parser.cpp" +#line 2867 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2808 "bison_parser.cpp" +#line 2873 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2814 "bison_parser.cpp" +#line 2879 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2820 "bison_parser.cpp" +#line 2885 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2826 "bison_parser.cpp" +#line 2891 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2832 "bison_parser.cpp" +#line 2897 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2838 "bison_parser.cpp" +#line 2903 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2844 "bison_parser.cpp" +#line 2909 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2850 "bison_parser.cpp" +#line 2915 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2856 "bison_parser.cpp" +#line 2921 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 164 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2862 "bison_parser.cpp" +#line 2927 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 186 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2868 "bison_parser.cpp" +#line 2933 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 169 "bison_parser.y" +#line 172 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2877,7 +2942,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2881 "bison_parser.cpp" +#line 2946 "bison_parser.cpp" break; default: @@ -2974,7 +3039,7 @@ YYLTYPE yylloc = yyloc_default; /* User initialization code. */ -#line 75 "bison_parser.y" +#line 76 "bison_parser.y" { // Initialize yylloc.first_column = 0; @@ -2985,7 +3050,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2989 "bison_parser.cpp" +#line 3054 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3196,7 +3261,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 313 "bison_parser.y" +#line 319 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3214,236 +3279,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3218 "bison_parser.cpp" +#line 3283 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 332 "bison_parser.y" +#line 338 "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 3229 "bison_parser.cpp" +#line 3294 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 338 "bison_parser.y" +#line 344 "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 3240 "bison_parser.cpp" +#line 3305 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 345 "bison_parser.y" +#line 351 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3249 "bison_parser.cpp" +#line 3314 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 349 "bison_parser.y" +#line 355 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3258 "bison_parser.cpp" +#line 3323 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 353 "bison_parser.y" +#line 359 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3264 "bison_parser.cpp" +#line 3329 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 354 "bison_parser.y" +#line 360 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3270 "bison_parser.cpp" +#line 3335 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 355 "bison_parser.y" +#line 361 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3276 "bison_parser.cpp" +#line 3341 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 357 "bison_parser.y" +#line 363 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3282 "bison_parser.cpp" +#line 3347 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 358 "bison_parser.y" +#line 364 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3288 "bison_parser.cpp" +#line 3353 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 359 "bison_parser.y" +#line 365 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3294 "bison_parser.cpp" +#line 3359 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 360 "bison_parser.y" +#line 366 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3300 "bison_parser.cpp" +#line 3365 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 361 "bison_parser.y" +#line 367 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3306 "bison_parser.cpp" +#line 3371 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 362 "bison_parser.y" +#line 368 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3312 "bison_parser.cpp" +#line 3377 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 363 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3318 "bison_parser.cpp" +#line 3383 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 364 "bison_parser.y" +#line 370 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3324 "bison_parser.cpp" +#line 3389 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 365 "bison_parser.y" +#line 371 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3330 "bison_parser.cpp" +#line 3395 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 366 "bison_parser.y" +#line 372 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3336 "bison_parser.cpp" +#line 3401 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 372 "bison_parser.y" +#line 378 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3342 "bison_parser.cpp" +#line 3407 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 373 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3348 "bison_parser.cpp" +#line 3413 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 375 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3357 "bison_parser.cpp" +#line 3422 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 379 "bison_parser.y" +#line 385 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3366 "bison_parser.cpp" +#line 3431 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 384 "bison_parser.y" +#line 390 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3375 "bison_parser.cpp" +#line 3440 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 388 "bison_parser.y" +#line 394 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3385 "bison_parser.cpp" +#line 3450 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 398 "bison_parser.y" +#line 404 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3391 "bison_parser.cpp" +#line 3456 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 399 "bison_parser.y" +#line 405 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3397 "bison_parser.cpp" +#line 3462 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 400 "bison_parser.y" +#line 406 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3403 "bison_parser.cpp" +#line 3468 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 408 "bison_parser.y" +#line 414 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3413 "bison_parser.cpp" +#line 3478 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 416 "bison_parser.y" +#line 422 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3422 "bison_parser.cpp" +#line 3487 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 420 "bison_parser.y" +#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 3432 "bison_parser.cpp" +#line 3497 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 431 "bison_parser.y" +#line 437 "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 3443 "bison_parser.cpp" +#line 3508 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_file_type opt_where */ -#line 437 "bison_parser.y" +#line 443 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3451,11 +3516,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.import_stmt)->whereClause = (yyvsp[0].expr); } -#line 3455 "bison_parser.cpp" +#line 3520 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 445 "bison_parser.y" +#line 451 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3470,79 +3535,79 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3474 "bison_parser.cpp" +#line 3539 "bison_parser.cpp" break; case 38: /* file_path: string_literal */ -#line 460 "bison_parser.y" +#line 466 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3483 "bison_parser.cpp" +#line 3548 "bison_parser.cpp" break; case 39: /* opt_file_type: WITH FORMAT file_type */ -#line 465 "bison_parser.y" +#line 471 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3489 "bison_parser.cpp" +#line 3554 "bison_parser.cpp" break; case 40: /* opt_file_type: %empty */ -#line 466 "bison_parser.y" +#line 472 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3495 "bison_parser.cpp" +#line 3560 "bison_parser.cpp" break; case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 472 "bison_parser.y" +#line 478 "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 3506 "bison_parser.cpp" +#line 3571 "bison_parser.cpp" break; case 42: /* export_statement: COPY select_with_paren TO file_path opt_file_type */ -#line 478 "bison_parser.y" +#line 484 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->select = (yyvsp[-3].select_stmt); } -#line 3516 "bison_parser.cpp" +#line 3581 "bison_parser.cpp" break; case 43: /* show_statement: SHOW TABLES */ -#line 489 "bison_parser.y" +#line 495 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3522 "bison_parser.cpp" +#line 3587 "bison_parser.cpp" break; case 44: /* show_statement: SHOW COLUMNS table_name */ -#line 490 "bison_parser.y" +#line 496 "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 3532 "bison_parser.cpp" +#line 3597 "bison_parser.cpp" break; case 45: /* show_statement: DESCRIBE table_name */ -#line 495 "bison_parser.y" +#line 501 "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 3542 "bison_parser.cpp" +#line 3607 "bison_parser.cpp" break; case 46: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 506 "bison_parser.y" +#line 512 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3556,11 +3621,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3560 "bison_parser.cpp" +#line 3625 "bison_parser.cpp" break; case 47: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 519 "bison_parser.y" +#line 525 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3573,11 +3638,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3577 "bison_parser.cpp" +#line 3642 "bison_parser.cpp" break; case 48: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 531 "bison_parser.y" +#line 537 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3585,11 +3650,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3589 "bison_parser.cpp" +#line 3654 "bison_parser.cpp" break; case 49: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 538 "bison_parser.y" +#line 544 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3597,11 +3662,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3601 "bison_parser.cpp" +#line 3666 "bison_parser.cpp" break; case 50: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 545 "bison_parser.y" +#line 551 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3610,371 +3675,371 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3614 "bison_parser.cpp" +#line 3679 "bison_parser.cpp" break; case 51: /* opt_not_exists: IF NOT EXISTS */ -#line 554 "bison_parser.y" +#line 560 "bison_parser.y" { (yyval.bval) = true; } -#line 3620 "bison_parser.cpp" +#line 3685 "bison_parser.cpp" break; case 52: /* opt_not_exists: %empty */ -#line 555 "bison_parser.y" +#line 561 "bison_parser.y" { (yyval.bval) = false; } -#line 3626 "bison_parser.cpp" +#line 3691 "bison_parser.cpp" break; case 53: /* table_elem_commalist: table_elem */ -#line 557 "bison_parser.y" +#line 563 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3635 "bison_parser.cpp" +#line 3700 "bison_parser.cpp" break; case 54: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 561 "bison_parser.y" +#line 567 "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 3644 "bison_parser.cpp" +#line 3709 "bison_parser.cpp" break; case 55: /* table_elem: column_def */ -#line 566 "bison_parser.y" +#line 572 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3650 "bison_parser.cpp" +#line 3715 "bison_parser.cpp" break; case 56: /* table_elem: table_constraint */ -#line 567 "bison_parser.y" +#line 573 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3656 "bison_parser.cpp" +#line 3721 "bison_parser.cpp" break; case 57: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 569 "bison_parser.y" +#line 575 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_set)); if (!(yyval.column_t)->trySetNullableExplicit()) { yyerror(&yyloc, result, scanner, ("Conflicting nullability constraints for " + std::string{(yyvsp[-2].sval)}).c_str()); } } -#line 3667 "bison_parser.cpp" +#line 3732 "bison_parser.cpp" break; case 58: /* column_type: BIGINT */ -#line 576 "bison_parser.y" +#line 582 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3673 "bison_parser.cpp" +#line 3738 "bison_parser.cpp" break; case 59: /* column_type: BOOLEAN */ -#line 577 "bison_parser.y" +#line 583 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3679 "bison_parser.cpp" +#line 3744 "bison_parser.cpp" break; case 60: /* column_type: CHAR '(' INTVAL ')' */ -#line 578 "bison_parser.y" +#line 584 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3685 "bison_parser.cpp" +#line 3750 "bison_parser.cpp" break; case 61: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 579 "bison_parser.y" +#line 585 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3691 "bison_parser.cpp" +#line 3756 "bison_parser.cpp" break; case 62: /* column_type: DATE */ -#line 580 "bison_parser.y" +#line 586 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3697 "bison_parser.cpp" +#line 3762 "bison_parser.cpp" break; case 63: /* column_type: DATETIME */ -#line 581 "bison_parser.y" +#line 587 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3703 "bison_parser.cpp" +#line 3768 "bison_parser.cpp" break; case 64: /* column_type: DECIMAL opt_decimal_specification */ -#line 582 "bison_parser.y" +#line 588 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3712 "bison_parser.cpp" +#line 3777 "bison_parser.cpp" break; case 65: /* column_type: DOUBLE */ -#line 586 "bison_parser.y" +#line 592 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3718 "bison_parser.cpp" +#line 3783 "bison_parser.cpp" break; case 66: /* column_type: FLOAT */ -#line 587 "bison_parser.y" +#line 593 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3724 "bison_parser.cpp" +#line 3789 "bison_parser.cpp" break; case 67: /* column_type: INT */ -#line 588 "bison_parser.y" +#line 594 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3730 "bison_parser.cpp" +#line 3795 "bison_parser.cpp" break; case 68: /* column_type: INTEGER */ -#line 589 "bison_parser.y" +#line 595 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3736 "bison_parser.cpp" +#line 3801 "bison_parser.cpp" break; case 69: /* column_type: LONG */ -#line 590 "bison_parser.y" +#line 596 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3742 "bison_parser.cpp" +#line 3807 "bison_parser.cpp" break; case 70: /* column_type: REAL */ -#line 591 "bison_parser.y" +#line 597 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3748 "bison_parser.cpp" +#line 3813 "bison_parser.cpp" break; case 71: /* column_type: SMALLINT */ -#line 592 "bison_parser.y" +#line 598 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3754 "bison_parser.cpp" +#line 3819 "bison_parser.cpp" break; case 72: /* column_type: TEXT */ -#line 593 "bison_parser.y" +#line 599 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3760 "bison_parser.cpp" +#line 3825 "bison_parser.cpp" break; case 73: /* column_type: TIME opt_time_precision */ -#line 594 "bison_parser.y" +#line 600 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3766 "bison_parser.cpp" +#line 3831 "bison_parser.cpp" break; case 74: /* column_type: TIMESTAMP */ -#line 595 "bison_parser.y" +#line 601 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3772 "bison_parser.cpp" +#line 3837 "bison_parser.cpp" break; case 75: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 596 "bison_parser.y" +#line 602 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3778 "bison_parser.cpp" +#line 3843 "bison_parser.cpp" break; case 76: /* opt_time_precision: '(' INTVAL ')' */ -#line 598 "bison_parser.y" +#line 604 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3784 "bison_parser.cpp" +#line 3849 "bison_parser.cpp" break; case 77: /* opt_time_precision: %empty */ -#line 599 "bison_parser.y" +#line 605 "bison_parser.y" { (yyval.ival) = 0; } -#line 3790 "bison_parser.cpp" +#line 3855 "bison_parser.cpp" break; case 78: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 601 "bison_parser.y" +#line 607 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3796 "bison_parser.cpp" +#line 3861 "bison_parser.cpp" break; case 79: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 602 "bison_parser.y" +#line 608 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3802 "bison_parser.cpp" +#line 3867 "bison_parser.cpp" break; case 80: /* opt_decimal_specification: %empty */ -#line 603 "bison_parser.y" +#line 609 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3808 "bison_parser.cpp" +#line 3873 "bison_parser.cpp" break; case 81: /* opt_column_constraints: column_constraint_set */ -#line 605 "bison_parser.y" +#line 611 "bison_parser.y" { (yyval.column_constraint_set) = (yyvsp[0].column_constraint_set); } -#line 3814 "bison_parser.cpp" +#line 3879 "bison_parser.cpp" break; case 82: /* opt_column_constraints: %empty */ -#line 606 "bison_parser.y" +#line 612 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); } -#line 3820 "bison_parser.cpp" +#line 3885 "bison_parser.cpp" break; case 83: /* column_constraint_set: column_constraint */ -#line 608 "bison_parser.y" +#line 614 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); (yyval.column_constraint_set)->insert((yyvsp[0].column_constraint_t)); } -#line 3829 "bison_parser.cpp" +#line 3894 "bison_parser.cpp" break; case 84: /* column_constraint_set: column_constraint_set column_constraint */ -#line 612 "bison_parser.y" +#line 618 "bison_parser.y" { (yyvsp[-1].column_constraint_set)->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraint_set) = (yyvsp[-1].column_constraint_set); } -#line 3838 "bison_parser.cpp" +#line 3903 "bison_parser.cpp" break; case 85: /* column_constraint: PRIMARY KEY */ -#line 617 "bison_parser.y" +#line 623 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 3844 "bison_parser.cpp" +#line 3909 "bison_parser.cpp" break; case 86: /* column_constraint: UNIQUE */ -#line 618 "bison_parser.y" +#line 624 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 3850 "bison_parser.cpp" +#line 3915 "bison_parser.cpp" break; case 87: /* column_constraint: NULL */ -#line 619 "bison_parser.y" +#line 625 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 3856 "bison_parser.cpp" +#line 3921 "bison_parser.cpp" break; case 88: /* column_constraint: NOT NULL */ -#line 620 "bison_parser.y" +#line 626 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 3862 "bison_parser.cpp" +#line 3927 "bison_parser.cpp" break; case 89: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 622 "bison_parser.y" +#line 628 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 3868 "bison_parser.cpp" +#line 3933 "bison_parser.cpp" break; case 90: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 623 "bison_parser.y" +#line 629 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 3874 "bison_parser.cpp" +#line 3939 "bison_parser.cpp" break; case 91: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 631 "bison_parser.y" +#line 637 "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 3885 "bison_parser.cpp" +#line 3950 "bison_parser.cpp" break; case 92: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 637 "bison_parser.y" +#line 643 "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 3896 "bison_parser.cpp" +#line 3961 "bison_parser.cpp" break; case 93: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 643 "bison_parser.y" +#line 649 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3906 "bison_parser.cpp" +#line 3971 "bison_parser.cpp" break; case 94: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 649 "bison_parser.y" +#line 655 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 3916 "bison_parser.cpp" +#line 3981 "bison_parser.cpp" break; case 95: /* opt_exists: IF EXISTS */ -#line 655 "bison_parser.y" +#line 661 "bison_parser.y" { (yyval.bval) = true; } -#line 3922 "bison_parser.cpp" +#line 3987 "bison_parser.cpp" break; case 96: /* opt_exists: %empty */ -#line 656 "bison_parser.y" +#line 662 "bison_parser.y" { (yyval.bval) = false; } -#line 3928 "bison_parser.cpp" +#line 3993 "bison_parser.cpp" break; case 97: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 663 "bison_parser.y" +#line 669 "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 3938 "bison_parser.cpp" +#line 4003 "bison_parser.cpp" break; case 98: /* alter_action: drop_action */ -#line 669 "bison_parser.y" +#line 675 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 3944 "bison_parser.cpp" +#line 4009 "bison_parser.cpp" break; case 99: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 671 "bison_parser.y" +#line 677 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 3953 "bison_parser.cpp" +#line 4018 "bison_parser.cpp" break; case 100: /* delete_statement: DELETE FROM table_name opt_where */ -#line 681 "bison_parser.y" +#line 687 "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 3964 "bison_parser.cpp" +#line 4029 "bison_parser.cpp" break; case 101: /* truncate_statement: TRUNCATE table_name */ -#line 688 "bison_parser.y" +#line 694 "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 3974 "bison_parser.cpp" +#line 4039 "bison_parser.cpp" break; case 102: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 699 "bison_parser.y" +#line 705 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3982,11 +4047,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3986 "bison_parser.cpp" +#line 4051 "bison_parser.cpp" break; case 103: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 706 "bison_parser.y" +#line 712 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3994,80 +4059,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3998 "bison_parser.cpp" +#line 4063 "bison_parser.cpp" break; case 104: /* opt_column_list: '(' ident_commalist ')' */ -#line 714 "bison_parser.y" +#line 720 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4004 "bison_parser.cpp" +#line 4069 "bison_parser.cpp" break; case 105: /* opt_column_list: %empty */ -#line 715 "bison_parser.y" +#line 721 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4010 "bison_parser.cpp" +#line 4075 "bison_parser.cpp" break; case 106: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 722 "bison_parser.y" +#line 728 "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 4021 "bison_parser.cpp" +#line 4086 "bison_parser.cpp" break; case 107: /* update_clause_commalist: update_clause */ -#line 729 "bison_parser.y" +#line 735 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4030 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; case 108: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 733 "bison_parser.y" +#line 739 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4039 "bison_parser.cpp" +#line 4104 "bison_parser.cpp" break; case 109: /* update_clause: IDENTIFIER '=' expr */ -#line 738 "bison_parser.y" +#line 744 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4049 "bison_parser.cpp" +#line 4114 "bison_parser.cpp" break; case 110: /* select_statement: opt_with_clause select_with_paren */ -#line 748 "bison_parser.y" +#line 754 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4058 "bison_parser.cpp" +#line 4123 "bison_parser.cpp" break; case 111: /* select_statement: opt_with_clause select_no_paren */ -#line 752 "bison_parser.y" +#line 758 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4067 "bison_parser.cpp" +#line 4132 "bison_parser.cpp" break; case 112: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 756 "bison_parser.y" +#line 762 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4079,17 +4144,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4083 "bison_parser.cpp" +#line 4148 "bison_parser.cpp" break; case 115: /* select_within_set_operation_no_parentheses: select_clause */ -#line 770 "bison_parser.y" +#line 776 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4089 "bison_parser.cpp" +#line 4154 "bison_parser.cpp" break; case 116: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 771 "bison_parser.y" +#line 777 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4098,23 +4163,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 4102 "bison_parser.cpp" +#line 4167 "bison_parser.cpp" break; case 117: /* select_with_paren: '(' select_no_paren ')' */ -#line 780 "bison_parser.y" +#line 786 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4108 "bison_parser.cpp" +#line 4173 "bison_parser.cpp" break; case 118: /* select_with_paren: '(' select_with_paren ')' */ -#line 781 "bison_parser.y" +#line 787 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4114 "bison_parser.cpp" +#line 4179 "bison_parser.cpp" break; case 119: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 783 "bison_parser.y" +#line 789 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4129,11 +4194,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4133 "bison_parser.cpp" +#line 4198 "bison_parser.cpp" break; case 120: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 797 "bison_parser.y" +#line 803 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4145,59 +4210,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4149 "bison_parser.cpp" +#line 4214 "bison_parser.cpp" break; case 121: /* set_operator: set_type opt_all */ -#line 809 "bison_parser.y" +#line 815 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4158 "bison_parser.cpp" +#line 4223 "bison_parser.cpp" break; case 122: /* set_type: UNION */ -#line 814 "bison_parser.y" +#line 820 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4167 "bison_parser.cpp" +#line 4232 "bison_parser.cpp" break; case 123: /* set_type: INTERSECT */ -#line 818 "bison_parser.y" +#line 824 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4176 "bison_parser.cpp" +#line 4241 "bison_parser.cpp" break; case 124: /* set_type: EXCEPT */ -#line 822 "bison_parser.y" +#line 828 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4185 "bison_parser.cpp" +#line 4250 "bison_parser.cpp" break; case 125: /* opt_all: ALL */ -#line 827 "bison_parser.y" +#line 833 "bison_parser.y" { (yyval.bval) = true; } -#line 4191 "bison_parser.cpp" +#line 4256 "bison_parser.cpp" break; case 126: /* opt_all: %empty */ -#line 828 "bison_parser.y" +#line 834 "bison_parser.y" { (yyval.bval) = false; } -#line 4197 "bison_parser.cpp" +#line 4262 "bison_parser.cpp" break; case 127: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 830 "bison_parser.y" +#line 836 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4207,231 +4272,231 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4211 "bison_parser.cpp" +#line 4276 "bison_parser.cpp" break; case 128: /* opt_distinct: DISTINCT */ -#line 840 "bison_parser.y" +#line 846 "bison_parser.y" { (yyval.bval) = true; } -#line 4217 "bison_parser.cpp" +#line 4282 "bison_parser.cpp" break; case 129: /* opt_distinct: %empty */ -#line 841 "bison_parser.y" +#line 847 "bison_parser.y" { (yyval.bval) = false; } -#line 4223 "bison_parser.cpp" +#line 4288 "bison_parser.cpp" break; case 131: /* opt_from_clause: from_clause */ -#line 845 "bison_parser.y" +#line 851 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4229 "bison_parser.cpp" +#line 4294 "bison_parser.cpp" break; case 132: /* opt_from_clause: %empty */ -#line 846 "bison_parser.y" +#line 852 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4235 "bison_parser.cpp" +#line 4300 "bison_parser.cpp" break; case 133: /* from_clause: FROM table_ref */ -#line 848 "bison_parser.y" +#line 854 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4241 "bison_parser.cpp" +#line 4306 "bison_parser.cpp" break; case 134: /* opt_where: WHERE expr */ -#line 850 "bison_parser.y" +#line 856 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4247 "bison_parser.cpp" +#line 4312 "bison_parser.cpp" break; case 135: /* opt_where: %empty */ -#line 851 "bison_parser.y" +#line 857 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4253 "bison_parser.cpp" +#line 4318 "bison_parser.cpp" break; case 136: /* opt_group: GROUP BY expr_list opt_having */ -#line 853 "bison_parser.y" +#line 859 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4263 "bison_parser.cpp" +#line 4328 "bison_parser.cpp" break; case 137: /* opt_group: %empty */ -#line 858 "bison_parser.y" +#line 864 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4269 "bison_parser.cpp" +#line 4334 "bison_parser.cpp" break; case 138: /* opt_having: HAVING expr */ -#line 860 "bison_parser.y" +#line 866 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4275 "bison_parser.cpp" +#line 4340 "bison_parser.cpp" break; case 139: /* opt_having: %empty */ -#line 861 "bison_parser.y" +#line 867 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4281 "bison_parser.cpp" +#line 4346 "bison_parser.cpp" break; case 140: /* opt_order: ORDER BY order_list */ -#line 863 "bison_parser.y" +#line 869 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4287 "bison_parser.cpp" +#line 4352 "bison_parser.cpp" break; case 141: /* opt_order: %empty */ -#line 864 "bison_parser.y" +#line 870 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4293 "bison_parser.cpp" +#line 4358 "bison_parser.cpp" break; case 142: /* order_list: order_desc */ -#line 866 "bison_parser.y" +#line 872 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4302 "bison_parser.cpp" +#line 4367 "bison_parser.cpp" break; case 143: /* order_list: order_list ',' order_desc */ -#line 870 "bison_parser.y" +#line 876 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4311 "bison_parser.cpp" +#line 4376 "bison_parser.cpp" break; case 144: /* order_desc: expr opt_order_type */ -#line 875 "bison_parser.y" +#line 881 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4317 "bison_parser.cpp" +#line 4382 "bison_parser.cpp" break; case 145: /* opt_order_type: ASC */ -#line 877 "bison_parser.y" +#line 883 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4323 "bison_parser.cpp" +#line 4388 "bison_parser.cpp" break; case 146: /* opt_order_type: DESC */ -#line 878 "bison_parser.y" +#line 884 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4329 "bison_parser.cpp" +#line 4394 "bison_parser.cpp" break; case 147: /* opt_order_type: %empty */ -#line 879 "bison_parser.y" +#line 885 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4335 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; case 148: /* opt_top: TOP int_literal */ -#line 883 "bison_parser.y" +#line 889 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4341 "bison_parser.cpp" +#line 4406 "bison_parser.cpp" break; case 149: /* opt_top: %empty */ -#line 884 "bison_parser.y" +#line 890 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4347 "bison_parser.cpp" +#line 4412 "bison_parser.cpp" break; case 150: /* opt_limit: LIMIT expr */ -#line 886 "bison_parser.y" +#line 892 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4353 "bison_parser.cpp" +#line 4418 "bison_parser.cpp" break; case 151: /* opt_limit: OFFSET expr */ -#line 887 "bison_parser.y" +#line 893 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4359 "bison_parser.cpp" +#line 4424 "bison_parser.cpp" break; case 152: /* opt_limit: LIMIT expr OFFSET expr */ -#line 888 "bison_parser.y" +#line 894 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4365 "bison_parser.cpp" +#line 4430 "bison_parser.cpp" break; case 153: /* opt_limit: LIMIT ALL */ -#line 889 "bison_parser.y" +#line 895 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4371 "bison_parser.cpp" +#line 4436 "bison_parser.cpp" break; case 154: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 890 "bison_parser.y" +#line 896 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4377 "bison_parser.cpp" +#line 4442 "bison_parser.cpp" break; case 155: /* opt_limit: %empty */ -#line 891 "bison_parser.y" +#line 897 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4383 "bison_parser.cpp" +#line 4448 "bison_parser.cpp" break; case 156: /* expr_list: expr_alias */ -#line 896 "bison_parser.y" +#line 902 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4392 "bison_parser.cpp" +#line 4457 "bison_parser.cpp" break; case 157: /* expr_list: expr_list ',' expr_alias */ -#line 900 "bison_parser.y" +#line 906 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4401 "bison_parser.cpp" +#line 4466 "bison_parser.cpp" break; case 158: /* opt_literal_list: literal_list */ -#line 905 "bison_parser.y" +#line 911 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4407 "bison_parser.cpp" +#line 4472 "bison_parser.cpp" break; case 159: /* opt_literal_list: %empty */ -#line 906 "bison_parser.y" +#line 912 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4413 "bison_parser.cpp" +#line 4478 "bison_parser.cpp" break; case 160: /* literal_list: literal */ -#line 908 "bison_parser.y" +#line 914 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4422 "bison_parser.cpp" +#line 4487 "bison_parser.cpp" break; case 161: /* literal_list: literal_list ',' literal */ -#line 912 "bison_parser.y" +#line 918 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4431 "bison_parser.cpp" +#line 4496 "bison_parser.cpp" break; case 162: /* expr_alias: expr opt_alias */ -#line 917 "bison_parser.y" +#line 923 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4439,415 +4504,500 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4443 "bison_parser.cpp" +#line 4508 "bison_parser.cpp" break; - case 168: /* operand: '(' expr ')' */ -#line 927 "bison_parser.y" + case 169: /* operand: '(' expr ')' */ +#line 933 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4449 "bison_parser.cpp" +#line 4514 "bison_parser.cpp" break; - case 178: /* operand: '(' select_no_paren ')' */ -#line 929 "bison_parser.y" + case 179: /* operand: '(' select_no_paren ')' */ +#line 935 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4457 "bison_parser.cpp" +#line 4522 "bison_parser.cpp" break; - case 181: /* unary_expr: '-' operand */ -#line 935 "bison_parser.y" + case 182: /* unary_expr: '-' operand */ +#line 941 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4463 "bison_parser.cpp" +#line 4528 "bison_parser.cpp" break; - case 182: /* unary_expr: NOT operand */ -#line 936 "bison_parser.y" + case 183: /* unary_expr: NOT operand */ +#line 942 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4469 "bison_parser.cpp" +#line 4534 "bison_parser.cpp" break; - case 183: /* unary_expr: operand ISNULL */ -#line 937 "bison_parser.y" + case 184: /* unary_expr: operand ISNULL */ +#line 943 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4475 "bison_parser.cpp" +#line 4540 "bison_parser.cpp" break; - case 184: /* unary_expr: operand IS NULL */ -#line 938 "bison_parser.y" + case 185: /* unary_expr: operand IS NULL */ +#line 944 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4481 "bison_parser.cpp" +#line 4546 "bison_parser.cpp" break; - case 185: /* unary_expr: operand IS NOT NULL */ -#line 939 "bison_parser.y" + case 186: /* unary_expr: operand IS NOT NULL */ +#line 945 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4487 "bison_parser.cpp" +#line 4552 "bison_parser.cpp" break; - case 187: /* binary_expr: operand '-' operand */ -#line 941 "bison_parser.y" + case 188: /* binary_expr: operand '-' operand */ +#line 947 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4493 "bison_parser.cpp" +#line 4558 "bison_parser.cpp" break; - case 188: /* binary_expr: operand '+' operand */ -#line 942 "bison_parser.y" + case 189: /* binary_expr: operand '+' operand */ +#line 948 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4499 "bison_parser.cpp" +#line 4564 "bison_parser.cpp" break; - case 189: /* binary_expr: operand '/' operand */ -#line 943 "bison_parser.y" + case 190: /* binary_expr: operand '/' operand */ +#line 949 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4505 "bison_parser.cpp" +#line 4570 "bison_parser.cpp" break; - case 190: /* binary_expr: operand '*' operand */ -#line 944 "bison_parser.y" + case 191: /* binary_expr: operand '*' operand */ +#line 950 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4511 "bison_parser.cpp" +#line 4576 "bison_parser.cpp" break; - case 191: /* binary_expr: operand '%' operand */ -#line 945 "bison_parser.y" + case 192: /* binary_expr: operand '%' operand */ +#line 951 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4517 "bison_parser.cpp" +#line 4582 "bison_parser.cpp" break; - case 192: /* binary_expr: operand '^' operand */ -#line 946 "bison_parser.y" + case 193: /* binary_expr: operand '^' operand */ +#line 952 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4523 "bison_parser.cpp" +#line 4588 "bison_parser.cpp" break; - case 193: /* binary_expr: operand LIKE operand */ -#line 947 "bison_parser.y" + case 194: /* binary_expr: operand LIKE operand */ +#line 953 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4529 "bison_parser.cpp" +#line 4594 "bison_parser.cpp" break; - case 194: /* binary_expr: operand NOT LIKE operand */ -#line 948 "bison_parser.y" + case 195: /* binary_expr: operand NOT LIKE operand */ +#line 954 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4535 "bison_parser.cpp" +#line 4600 "bison_parser.cpp" break; - case 195: /* binary_expr: operand ILIKE operand */ -#line 949 "bison_parser.y" + case 196: /* binary_expr: operand ILIKE operand */ +#line 955 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4541 "bison_parser.cpp" +#line 4606 "bison_parser.cpp" break; - case 196: /* binary_expr: operand CONCAT operand */ -#line 950 "bison_parser.y" + case 197: /* binary_expr: operand CONCAT operand */ +#line 956 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4547 "bison_parser.cpp" +#line 4612 "bison_parser.cpp" break; - case 197: /* logic_expr: expr AND expr */ -#line 952 "bison_parser.y" + case 198: /* logic_expr: expr AND expr */ +#line 958 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4553 "bison_parser.cpp" +#line 4618 "bison_parser.cpp" break; - case 198: /* logic_expr: expr OR expr */ -#line 953 "bison_parser.y" + case 199: /* logic_expr: expr OR expr */ +#line 959 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4559 "bison_parser.cpp" +#line 4624 "bison_parser.cpp" break; - case 199: /* in_expr: operand IN '(' expr_list ')' */ -#line 955 "bison_parser.y" + case 200: /* in_expr: operand IN '(' expr_list ')' */ +#line 961 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4565 "bison_parser.cpp" +#line 4630 "bison_parser.cpp" break; - case 200: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 956 "bison_parser.y" + case 201: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 962 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4571 "bison_parser.cpp" +#line 4636 "bison_parser.cpp" break; - case 201: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 957 "bison_parser.y" + case 202: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 963 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4577 "bison_parser.cpp" +#line 4642 "bison_parser.cpp" break; - case 202: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 958 "bison_parser.y" + case 203: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 964 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4583 "bison_parser.cpp" +#line 4648 "bison_parser.cpp" break; - case 203: /* case_expr: CASE expr case_list END */ -#line 962 "bison_parser.y" + case 204: /* window_expr: operand OVER '(' opt_partition opt_order opt_frame_clause ')' */ +#line 968 "bison_parser.y" + { (yyval.expr) = Expr::makeWindow((yyvsp[-6].expr), (yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } +#line 4654 "bison_parser.cpp" + break; + + case 205: /* opt_partition: PARTITION BY expr_list */ +#line 970 "bison_parser.y" + { (yyval.expr_vec) = (yyvsp[0].expr_vec); } +#line 4660 "bison_parser.cpp" + break; + + case 206: /* opt_partition: %empty */ +#line 971 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 4666 "bison_parser.cpp" + break; + + case 207: /* opt_frame_clause: frame_type frame_bound */ +#line 973 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].sval), nullptr}; } +#line 4672 "bison_parser.cpp" + break; + + case 208: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ +#line 974 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].sval), (yyvsp[0].sval)}; } +#line 4678 "bison_parser.cpp" + break; + + case 209: /* opt_frame_clause: %empty */ +#line 975 "bison_parser.y" + { (yyval.frame_description) = nullptr; } +#line 4684 "bison_parser.cpp" + break; + + case 210: /* frame_type: RANGE */ +#line 977 "bison_parser.y" + { (yyval.frame_type) = FrameType::kRange; } +#line 4690 "bison_parser.cpp" + break; + + case 211: /* frame_type: ROWS */ +#line 978 "bison_parser.y" + { (yyval.frame_type) = FrameType::kRows; } +#line 4696 "bison_parser.cpp" + break; + + case 212: /* frame_type: GROUPS */ +#line 979 "bison_parser.y" + { (yyval.frame_type) = FrameType::kGroups; } +#line 4702 "bison_parser.cpp" + break; + + case 213: /* frame_bound: INTVAL IDENTIFIER */ +#line 985 "bison_parser.y" + { + // This is a rather ugly workaround to get a string out of the INTVAL. We cannot use IDENTIFIER because it must not + // start with a number. STRING is also not possible because it must be in single quotes. + std::stringstream stream; + stream << (yyvsp[-1].ival); + std::string temp_str = stream.str(); + + // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. + char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + 1))); + strcpy(char_type, temp_str.c_str()); + strcat(char_type, " "); + strcat(char_type, (yyvsp[0].sval)); + free((yyvsp[0].sval)); + (yyval.sval) = char_type; +} +#line 4722 "bison_parser.cpp" + break; + + case 214: /* frame_bound: IDENTIFIER IDENTIFIER */ +#line 1000 "bison_parser.y" + { + strcat((yyvsp[-1].sval), " "); + strcat((yyvsp[-1].sval), (yyvsp[0].sval)); + free((yyvsp[0].sval)); + (yyval.sval) = (yyvsp[-1].sval); +} +#line 4733 "bison_parser.cpp" + break; + + case 215: /* case_expr: CASE expr case_list END */ +#line 1009 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4589 "bison_parser.cpp" +#line 4739 "bison_parser.cpp" break; - case 204: /* case_expr: CASE expr case_list ELSE expr END */ -#line 963 "bison_parser.y" + case 216: /* case_expr: CASE expr case_list ELSE expr END */ +#line 1010 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4595 "bison_parser.cpp" +#line 4745 "bison_parser.cpp" break; - case 205: /* case_expr: CASE case_list END */ -#line 964 "bison_parser.y" + case 217: /* case_expr: CASE case_list END */ +#line 1011 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4601 "bison_parser.cpp" +#line 4751 "bison_parser.cpp" break; - case 206: /* case_expr: CASE case_list ELSE expr END */ -#line 965 "bison_parser.y" + case 218: /* case_expr: CASE case_list ELSE expr END */ +#line 1012 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4607 "bison_parser.cpp" +#line 4757 "bison_parser.cpp" break; - case 207: /* case_list: WHEN expr THEN expr */ -#line 967 "bison_parser.y" + case 219: /* case_list: WHEN expr THEN expr */ +#line 1014 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4613 "bison_parser.cpp" +#line 4763 "bison_parser.cpp" break; - case 208: /* case_list: case_list WHEN expr THEN expr */ -#line 968 "bison_parser.y" + case 220: /* case_list: case_list WHEN expr THEN expr */ +#line 1015 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4619 "bison_parser.cpp" +#line 4769 "bison_parser.cpp" break; - case 209: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 970 "bison_parser.y" + case 221: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1017 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4625 "bison_parser.cpp" +#line 4775 "bison_parser.cpp" break; - case 210: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 971 "bison_parser.y" + case 222: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1018 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4631 "bison_parser.cpp" +#line 4781 "bison_parser.cpp" break; - case 211: /* comp_expr: operand '=' operand */ -#line 973 "bison_parser.y" + case 223: /* comp_expr: operand '=' operand */ +#line 1020 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4637 "bison_parser.cpp" +#line 4787 "bison_parser.cpp" break; - case 212: /* comp_expr: operand EQUALS operand */ -#line 974 "bison_parser.y" + case 224: /* comp_expr: operand EQUALS operand */ +#line 1021 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4643 "bison_parser.cpp" +#line 4793 "bison_parser.cpp" break; - case 213: /* comp_expr: operand NOTEQUALS operand */ -#line 975 "bison_parser.y" + case 225: /* comp_expr: operand NOTEQUALS operand */ +#line 1022 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4649 "bison_parser.cpp" +#line 4799 "bison_parser.cpp" break; - case 214: /* comp_expr: operand '<' operand */ -#line 976 "bison_parser.y" + case 226: /* comp_expr: operand '<' operand */ +#line 1023 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4655 "bison_parser.cpp" +#line 4805 "bison_parser.cpp" break; - case 215: /* comp_expr: operand '>' operand */ -#line 977 "bison_parser.y" + case 227: /* comp_expr: operand '>' operand */ +#line 1024 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4661 "bison_parser.cpp" +#line 4811 "bison_parser.cpp" break; - case 216: /* comp_expr: operand LESSEQ operand */ -#line 978 "bison_parser.y" + case 228: /* comp_expr: operand LESSEQ operand */ +#line 1025 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4667 "bison_parser.cpp" +#line 4817 "bison_parser.cpp" break; - case 217: /* comp_expr: operand GREATEREQ operand */ -#line 979 "bison_parser.y" + case 229: /* comp_expr: operand GREATEREQ operand */ +#line 1026 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4673 "bison_parser.cpp" +#line 4823 "bison_parser.cpp" break; - case 218: /* function_expr: IDENTIFIER '(' ')' */ -#line 981 "bison_parser.y" + case 230: /* function_expr: IDENTIFIER '(' ')' */ +#line 1028 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4679 "bison_parser.cpp" +#line 4829 "bison_parser.cpp" break; - case 219: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 982 "bison_parser.y" + case 231: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ +#line 1029 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4685 "bison_parser.cpp" +#line 4835 "bison_parser.cpp" break; - case 220: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 984 "bison_parser.y" + case 232: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1031 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4691 "bison_parser.cpp" +#line 4841 "bison_parser.cpp" break; - case 221: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 986 "bison_parser.y" + case 233: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1033 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4697 "bison_parser.cpp" +#line 4847 "bison_parser.cpp" break; - case 222: /* datetime_field: SECOND */ -#line 988 "bison_parser.y" + case 234: /* datetime_field: SECOND */ +#line 1035 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4703 "bison_parser.cpp" +#line 4853 "bison_parser.cpp" break; - case 223: /* datetime_field: MINUTE */ -#line 989 "bison_parser.y" + case 235: /* datetime_field: MINUTE */ +#line 1036 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4709 "bison_parser.cpp" +#line 4859 "bison_parser.cpp" break; - case 224: /* datetime_field: HOUR */ -#line 990 "bison_parser.y" + case 236: /* datetime_field: HOUR */ +#line 1037 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4715 "bison_parser.cpp" +#line 4865 "bison_parser.cpp" break; - case 225: /* datetime_field: DAY */ -#line 991 "bison_parser.y" + case 237: /* datetime_field: DAY */ +#line 1038 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4721 "bison_parser.cpp" +#line 4871 "bison_parser.cpp" break; - case 226: /* datetime_field: MONTH */ -#line 992 "bison_parser.y" + case 238: /* datetime_field: MONTH */ +#line 1039 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4727 "bison_parser.cpp" +#line 4877 "bison_parser.cpp" break; - case 227: /* datetime_field: YEAR */ -#line 993 "bison_parser.y" + case 239: /* datetime_field: YEAR */ +#line 1040 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4733 "bison_parser.cpp" +#line 4883 "bison_parser.cpp" break; - case 228: /* datetime_field_plural: SECONDS */ -#line 995 "bison_parser.y" + case 240: /* datetime_field_plural: SECONDS */ +#line 1042 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4739 "bison_parser.cpp" +#line 4889 "bison_parser.cpp" break; - case 229: /* datetime_field_plural: MINUTES */ -#line 996 "bison_parser.y" + case 241: /* datetime_field_plural: MINUTES */ +#line 1043 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4745 "bison_parser.cpp" +#line 4895 "bison_parser.cpp" break; - case 230: /* datetime_field_plural: HOURS */ -#line 997 "bison_parser.y" + case 242: /* datetime_field_plural: HOURS */ +#line 1044 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4751 "bison_parser.cpp" +#line 4901 "bison_parser.cpp" break; - case 231: /* datetime_field_plural: DAYS */ -#line 998 "bison_parser.y" + case 243: /* datetime_field_plural: DAYS */ +#line 1045 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4757 "bison_parser.cpp" +#line 4907 "bison_parser.cpp" break; - case 232: /* datetime_field_plural: MONTHS */ -#line 999 "bison_parser.y" + case 244: /* datetime_field_plural: MONTHS */ +#line 1046 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4763 "bison_parser.cpp" +#line 4913 "bison_parser.cpp" break; - case 233: /* datetime_field_plural: YEARS */ -#line 1000 "bison_parser.y" + case 245: /* datetime_field_plural: YEARS */ +#line 1047 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4769 "bison_parser.cpp" +#line 4919 "bison_parser.cpp" break; - case 236: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1004 "bison_parser.y" + case 248: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1051 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4775 "bison_parser.cpp" +#line 4925 "bison_parser.cpp" break; - case 237: /* array_index: operand '[' int_literal ']' */ -#line 1006 "bison_parser.y" + case 249: /* array_index: operand '[' int_literal ']' */ +#line 1053 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4781 "bison_parser.cpp" +#line 4931 "bison_parser.cpp" break; - case 238: /* between_expr: operand BETWEEN operand AND operand */ -#line 1008 "bison_parser.y" + case 250: /* between_expr: operand BETWEEN operand AND operand */ +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4787 "bison_parser.cpp" +#line 4937 "bison_parser.cpp" break; - case 239: /* column_name: IDENTIFIER */ -#line 1010 "bison_parser.y" + case 251: /* column_name: IDENTIFIER */ +#line 1057 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4793 "bison_parser.cpp" +#line 4943 "bison_parser.cpp" break; - case 240: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1011 "bison_parser.y" + case 252: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1058 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4799 "bison_parser.cpp" +#line 4949 "bison_parser.cpp" break; - case 241: /* column_name: '*' */ -#line 1012 "bison_parser.y" + case 253: /* column_name: '*' */ +#line 1059 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4805 "bison_parser.cpp" +#line 4955 "bison_parser.cpp" break; - case 242: /* column_name: IDENTIFIER '.' '*' */ -#line 1013 "bison_parser.y" + case 254: /* column_name: IDENTIFIER '.' '*' */ +#line 1060 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4811 "bison_parser.cpp" +#line 4961 "bison_parser.cpp" break; - case 250: /* string_literal: STRING */ -#line 1017 "bison_parser.y" + case 262: /* string_literal: STRING */ +#line 1064 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4817 "bison_parser.cpp" +#line 4967 "bison_parser.cpp" break; - case 251: /* bool_literal: TRUE */ -#line 1019 "bison_parser.y" + case 263: /* bool_literal: TRUE */ +#line 1066 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4823 "bison_parser.cpp" +#line 4973 "bison_parser.cpp" break; - case 252: /* bool_literal: FALSE */ -#line 1020 "bison_parser.y" + case 264: /* bool_literal: FALSE */ +#line 1067 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4829 "bison_parser.cpp" +#line 4979 "bison_parser.cpp" break; - case 253: /* num_literal: FLOATVAL */ -#line 1022 "bison_parser.y" + case 265: /* num_literal: FLOATVAL */ +#line 1069 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4835 "bison_parser.cpp" +#line 4985 "bison_parser.cpp" break; - case 255: /* int_literal: INTVAL */ -#line 1025 "bison_parser.y" + case 267: /* int_literal: INTVAL */ +#line 1072 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4841 "bison_parser.cpp" +#line 4991 "bison_parser.cpp" break; - case 256: /* null_literal: NULL */ -#line 1027 "bison_parser.y" + case 268: /* null_literal: NULL */ +#line 1074 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4847 "bison_parser.cpp" +#line 4997 "bison_parser.cpp" break; - case 257: /* date_literal: DATE STRING */ -#line 1029 "bison_parser.y" + case 269: /* date_literal: DATE STRING */ +#line 1076 "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 @@ -4858,20 +5008,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 4862 "bison_parser.cpp" +#line 5012 "bison_parser.cpp" break; - case 258: /* interval_literal: int_literal duration_field */ -#line 1040 "bison_parser.y" + case 270: /* interval_literal: int_literal duration_field */ +#line 1087 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 4871 "bison_parser.cpp" +#line 5021 "bison_parser.cpp" break; - case 259: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1044 "bison_parser.y" + case 271: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1091 "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 @@ -4883,11 +5033,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 4887 "bison_parser.cpp" +#line 5037 "bison_parser.cpp" break; - case 260: /* interval_literal: INTERVAL STRING */ -#line 1055 "bison_parser.y" + case 272: /* interval_literal: INTERVAL STRING */ +#line 1102 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -4919,61 +5069,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 4923 "bison_parser.cpp" +#line 5073 "bison_parser.cpp" break; - case 261: /* param_expr: '?' */ -#line 1087 "bison_parser.y" + case 273: /* param_expr: '?' */ +#line 1134 "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 4933 "bison_parser.cpp" +#line 5083 "bison_parser.cpp" break; - case 263: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1096 "bison_parser.y" + case 275: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1143 "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 4944 "bison_parser.cpp" +#line 5094 "bison_parser.cpp" break; - case 267: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1105 "bison_parser.y" + case 279: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1152 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4955 "bison_parser.cpp" +#line 5105 "bison_parser.cpp" break; - case 268: /* table_ref_commalist: table_ref_atomic */ -#line 1112 "bison_parser.y" + case 280: /* table_ref_commalist: table_ref_atomic */ +#line 1159 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4964 "bison_parser.cpp" +#line 5114 "bison_parser.cpp" break; - case 269: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1116 "bison_parser.y" + case 281: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1163 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4973 "bison_parser.cpp" +#line 5123 "bison_parser.cpp" break; - case 270: /* table_ref_name: table_name opt_table_alias */ -#line 1121 "bison_parser.y" + case 282: /* table_ref_name: table_name opt_table_alias */ +#line 1168 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -4981,215 +5131,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4985 "bison_parser.cpp" +#line 5135 "bison_parser.cpp" break; - case 271: /* table_ref_name_no_alias: table_name */ -#line 1129 "bison_parser.y" + case 283: /* table_ref_name_no_alias: table_name */ +#line 1176 "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 4995 "bison_parser.cpp" +#line 5145 "bison_parser.cpp" break; - case 272: /* table_name: IDENTIFIER */ -#line 1135 "bison_parser.y" + case 284: /* table_name: IDENTIFIER */ +#line 1182 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5004 "bison_parser.cpp" +#line 5154 "bison_parser.cpp" break; - case 273: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1139 "bison_parser.y" + case 285: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1186 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5013 "bison_parser.cpp" +#line 5163 "bison_parser.cpp" break; - case 274: /* opt_index_name: IDENTIFIER */ -#line 1144 "bison_parser.y" + case 286: /* opt_index_name: IDENTIFIER */ +#line 1191 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5019 "bison_parser.cpp" +#line 5169 "bison_parser.cpp" break; - case 275: /* opt_index_name: %empty */ -#line 1145 "bison_parser.y" + case 287: /* opt_index_name: %empty */ +#line 1192 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5025 "bison_parser.cpp" +#line 5175 "bison_parser.cpp" break; - case 277: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1147 "bison_parser.y" + case 289: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1194 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5031 "bison_parser.cpp" +#line 5181 "bison_parser.cpp" break; - case 279: /* opt_table_alias: %empty */ -#line 1149 "bison_parser.y" + case 291: /* opt_table_alias: %empty */ +#line 1196 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5037 "bison_parser.cpp" +#line 5187 "bison_parser.cpp" break; - case 280: /* alias: AS IDENTIFIER */ -#line 1151 "bison_parser.y" + case 292: /* alias: AS IDENTIFIER */ +#line 1198 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5043 "bison_parser.cpp" +#line 5193 "bison_parser.cpp" break; - case 281: /* alias: IDENTIFIER */ -#line 1152 "bison_parser.y" + case 293: /* alias: IDENTIFIER */ +#line 1199 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5049 "bison_parser.cpp" +#line 5199 "bison_parser.cpp" break; - case 283: /* opt_alias: %empty */ -#line 1154 "bison_parser.y" + case 295: /* opt_alias: %empty */ +#line 1201 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5055 "bison_parser.cpp" +#line 5205 "bison_parser.cpp" break; - case 284: /* opt_locking_clause: opt_locking_clause_list */ -#line 1160 "bison_parser.y" + case 296: /* opt_locking_clause: opt_locking_clause_list */ +#line 1207 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5061 "bison_parser.cpp" +#line 5211 "bison_parser.cpp" break; - case 285: /* opt_locking_clause: %empty */ -#line 1161 "bison_parser.y" + case 297: /* opt_locking_clause: %empty */ +#line 1208 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5067 "bison_parser.cpp" +#line 5217 "bison_parser.cpp" break; - case 286: /* opt_locking_clause_list: locking_clause */ -#line 1163 "bison_parser.y" + case 298: /* opt_locking_clause_list: locking_clause */ +#line 1210 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5076 "bison_parser.cpp" +#line 5226 "bison_parser.cpp" break; - case 287: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1167 "bison_parser.y" + case 299: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ +#line 1214 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5085 "bison_parser.cpp" +#line 5235 "bison_parser.cpp" break; - case 288: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1172 "bison_parser.y" + case 300: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ +#line 1219 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5096 "bison_parser.cpp" +#line 5246 "bison_parser.cpp" break; - case 289: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1178 "bison_parser.y" + case 301: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ +#line 1225 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5107 "bison_parser.cpp" +#line 5257 "bison_parser.cpp" break; - case 290: /* row_lock_mode: UPDATE */ -#line 1185 "bison_parser.y" + case 302: /* row_lock_mode: UPDATE */ +#line 1232 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5113 "bison_parser.cpp" +#line 5263 "bison_parser.cpp" break; - case 291: /* row_lock_mode: NO KEY UPDATE */ -#line 1186 "bison_parser.y" + case 303: /* row_lock_mode: NO KEY UPDATE */ +#line 1233 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5119 "bison_parser.cpp" +#line 5269 "bison_parser.cpp" break; - case 292: /* row_lock_mode: SHARE */ -#line 1187 "bison_parser.y" + case 304: /* row_lock_mode: SHARE */ +#line 1234 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5125 "bison_parser.cpp" +#line 5275 "bison_parser.cpp" break; - case 293: /* row_lock_mode: KEY SHARE */ -#line 1188 "bison_parser.y" + case 305: /* row_lock_mode: KEY SHARE */ +#line 1235 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5131 "bison_parser.cpp" +#line 5281 "bison_parser.cpp" break; - case 294: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1190 "bison_parser.y" + case 306: /* opt_row_lock_policy: SKIP LOCKED */ +#line 1237 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5137 "bison_parser.cpp" +#line 5287 "bison_parser.cpp" break; - case 295: /* opt_row_lock_policy: NOWAIT */ -#line 1191 "bison_parser.y" + case 307: /* opt_row_lock_policy: NOWAIT */ +#line 1238 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5143 "bison_parser.cpp" +#line 5293 "bison_parser.cpp" break; - case 296: /* opt_row_lock_policy: %empty */ -#line 1192 "bison_parser.y" + case 308: /* opt_row_lock_policy: %empty */ +#line 1239 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5149 "bison_parser.cpp" +#line 5299 "bison_parser.cpp" break; - case 298: /* opt_with_clause: %empty */ -#line 1198 "bison_parser.y" + case 310: /* opt_with_clause: %empty */ +#line 1245 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5155 "bison_parser.cpp" +#line 5305 "bison_parser.cpp" break; - case 299: /* with_clause: WITH with_description_list */ -#line 1200 "bison_parser.y" + case 311: /* with_clause: WITH with_description_list */ +#line 1247 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5161 "bison_parser.cpp" +#line 5311 "bison_parser.cpp" break; - case 300: /* with_description_list: with_description */ -#line 1202 "bison_parser.y" + case 312: /* with_description_list: with_description */ +#line 1249 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5170 "bison_parser.cpp" +#line 5320 "bison_parser.cpp" break; - case 301: /* with_description_list: with_description_list ',' with_description */ -#line 1206 "bison_parser.y" + case 313: /* with_description_list: with_description_list ',' with_description */ +#line 1253 "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 5179 "bison_parser.cpp" +#line 5329 "bison_parser.cpp" break; - case 302: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1211 "bison_parser.y" + case 314: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1258 "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 5189 "bison_parser.cpp" +#line 5339 "bison_parser.cpp" break; - case 303: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1221 "bison_parser.y" + case 315: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1268 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5197,11 +5347,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5201 "bison_parser.cpp" +#line 5351 "bison_parser.cpp" break; - case 304: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1228 "bison_parser.y" + case 316: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1275 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5210,11 +5360,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5214 "bison_parser.cpp" +#line 5364 "bison_parser.cpp" break; - case 305: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1236 "bison_parser.y" + case 317: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ +#line 1283 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5238,89 +5388,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5242 "bison_parser.cpp" +#line 5392 "bison_parser.cpp" break; - case 306: /* opt_join_type: INNER */ -#line 1260 "bison_parser.y" + case 318: /* opt_join_type: INNER */ +#line 1307 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5248 "bison_parser.cpp" +#line 5398 "bison_parser.cpp" break; - case 307: /* opt_join_type: LEFT OUTER */ -#line 1261 "bison_parser.y" + case 319: /* opt_join_type: LEFT OUTER */ +#line 1308 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5254 "bison_parser.cpp" +#line 5404 "bison_parser.cpp" break; - case 308: /* opt_join_type: LEFT */ -#line 1262 "bison_parser.y" + case 320: /* opt_join_type: LEFT */ +#line 1309 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5260 "bison_parser.cpp" +#line 5410 "bison_parser.cpp" break; - case 309: /* opt_join_type: RIGHT OUTER */ -#line 1263 "bison_parser.y" + case 321: /* opt_join_type: RIGHT OUTER */ +#line 1310 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5266 "bison_parser.cpp" +#line 5416 "bison_parser.cpp" break; - case 310: /* opt_join_type: RIGHT */ -#line 1264 "bison_parser.y" + case 322: /* opt_join_type: RIGHT */ +#line 1311 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5272 "bison_parser.cpp" +#line 5422 "bison_parser.cpp" break; - case 311: /* opt_join_type: FULL OUTER */ -#line 1265 "bison_parser.y" + case 323: /* opt_join_type: FULL OUTER */ +#line 1312 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5278 "bison_parser.cpp" +#line 5428 "bison_parser.cpp" break; - case 312: /* opt_join_type: OUTER */ -#line 1266 "bison_parser.y" + case 324: /* opt_join_type: OUTER */ +#line 1313 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5284 "bison_parser.cpp" +#line 5434 "bison_parser.cpp" break; - case 313: /* opt_join_type: FULL */ -#line 1267 "bison_parser.y" + case 325: /* opt_join_type: FULL */ +#line 1314 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5290 "bison_parser.cpp" +#line 5440 "bison_parser.cpp" break; - case 314: /* opt_join_type: CROSS */ -#line 1268 "bison_parser.y" + case 326: /* opt_join_type: CROSS */ +#line 1315 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5296 "bison_parser.cpp" +#line 5446 "bison_parser.cpp" break; - case 315: /* opt_join_type: %empty */ -#line 1269 "bison_parser.y" + case 327: /* opt_join_type: %empty */ +#line 1316 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5302 "bison_parser.cpp" +#line 5452 "bison_parser.cpp" break; - case 319: /* ident_commalist: IDENTIFIER */ -#line 1280 "bison_parser.y" + case 331: /* ident_commalist: IDENTIFIER */ +#line 1327 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5311 "bison_parser.cpp" +#line 5461 "bison_parser.cpp" break; - case 320: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1284 "bison_parser.y" + case 332: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1331 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5320 "bison_parser.cpp" +#line 5470 "bison_parser.cpp" break; -#line 5324 "bison_parser.cpp" +#line 5474 "bison_parser.cpp" default: break; } @@ -5549,11 +5699,11 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1290 "bison_parser.y" +#line 1337 "bison_parser.y" -// clang-format on -/********************************* + // clang-format on + /********************************* ** Section 4: Additional C code *********************************/ -/* empty */ + /* empty */ diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 99db62fc..a5fb5a6a 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -36,24 +36,24 @@ private implementation details that can be changed or removed. */ #ifndef YY_HSQL_BISON_PARSER_H_INCLUDED -#define YY_HSQL_BISON_PARSER_H_INCLUDED +# define YY_HSQL_BISON_PARSER_H_INCLUDED /* Debug traces. */ #ifndef HSQL_DEBUG -#if defined YYDEBUG +# if defined YYDEBUG #if YYDEBUG -#define HSQL_DEBUG 1 -#else -#define HSQL_DEBUG 0 -#endif -#else /* ! defined YYDEBUG */ -#define HSQL_DEBUG 0 -#endif /* ! defined YYDEBUG */ -#endif /* ! defined HSQL_DEBUG */ +# define HSQL_DEBUG 1 +# else +# define HSQL_DEBUG 0 +# endif +# else /* ! defined YYDEBUG */ +# define HSQL_DEBUG 0 +# endif /* ! defined YYDEBUG */ +#endif /* ! defined HSQL_DEBUG */ #if HSQL_DEBUG extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 38 "bison_parser.y" +#line 39 "bison_parser.y" // %code requires block @@ -80,187 +80,194 @@ extern int hsql_debug; /* Token kinds. */ #ifndef HSQL_TOKENTYPE -#define HSQL_TOKENTYPE -enum hsql_tokentype { - SQL_HSQL_EMPTY = -2, - SQL_YYEOF = 0, /* "end of file" */ - SQL_HSQL_error = 256, /* error */ - SQL_HSQL_UNDEF = 257, /* "invalid token" */ - SQL_IDENTIFIER = 258, /* IDENTIFIER */ - SQL_STRING = 259, /* STRING */ - SQL_FLOATVAL = 260, /* FLOATVAL */ - SQL_INTVAL = 261, /* INTVAL */ - SQL_DEALLOCATE = 262, /* DEALLOCATE */ - SQL_PARAMETERS = 263, /* PARAMETERS */ - SQL_INTERSECT = 264, /* INTERSECT */ - SQL_TEMPORARY = 265, /* TEMPORARY */ - SQL_TIMESTAMP = 266, /* TIMESTAMP */ - SQL_DISTINCT = 267, /* DISTINCT */ - SQL_NVARCHAR = 268, /* NVARCHAR */ - SQL_RESTRICT = 269, /* RESTRICT */ - SQL_TRUNCATE = 270, /* TRUNCATE */ - SQL_ANALYZE = 271, /* ANALYZE */ - SQL_BETWEEN = 272, /* BETWEEN */ - SQL_CASCADE = 273, /* CASCADE */ - SQL_COLUMNS = 274, /* COLUMNS */ - SQL_CONTROL = 275, /* CONTROL */ - SQL_DEFAULT = 276, /* DEFAULT */ - SQL_EXECUTE = 277, /* EXECUTE */ - SQL_EXPLAIN = 278, /* EXPLAIN */ - SQL_INTEGER = 279, /* INTEGER */ - SQL_NATURAL = 280, /* NATURAL */ - SQL_PREPARE = 281, /* PREPARE */ - SQL_PRIMARY = 282, /* PRIMARY */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ - SQL_REAL = 285, /* REAL */ - SQL_DECIMAL = 286, /* DECIMAL */ - SQL_SMALLINT = 287, /* SMALLINT */ - SQL_BIGINT = 288, /* BIGINT */ - SQL_SPATIAL = 289, /* SPATIAL */ - SQL_VARCHAR = 290, /* VARCHAR */ - SQL_VIRTUAL = 291, /* VIRTUAL */ - SQL_DESCRIBE = 292, /* DESCRIBE */ - SQL_BEFORE = 293, /* BEFORE */ - SQL_COLUMN = 294, /* COLUMN */ - SQL_CREATE = 295, /* CREATE */ - SQL_DELETE = 296, /* DELETE */ - SQL_DIRECT = 297, /* DIRECT */ - SQL_DOUBLE = 298, /* DOUBLE */ - SQL_ESCAPE = 299, /* ESCAPE */ - SQL_EXCEPT = 300, /* EXCEPT */ - SQL_EXISTS = 301, /* EXISTS */ - SQL_EXTRACT = 302, /* EXTRACT */ - SQL_CAST = 303, /* CAST */ - SQL_FORMAT = 304, /* FORMAT */ - SQL_GLOBAL = 305, /* GLOBAL */ - SQL_HAVING = 306, /* HAVING */ - SQL_IMPORT = 307, /* IMPORT */ - SQL_INSERT = 308, /* INSERT */ - SQL_ISNULL = 309, /* ISNULL */ - SQL_OFFSET = 310, /* OFFSET */ - SQL_RENAME = 311, /* RENAME */ - SQL_SCHEMA = 312, /* SCHEMA */ - SQL_SELECT = 313, /* SELECT */ - SQL_SORTED = 314, /* SORTED */ - SQL_TABLES = 315, /* TABLES */ - SQL_UNIQUE = 316, /* UNIQUE */ - SQL_UNLOAD = 317, /* UNLOAD */ - SQL_UPDATE = 318, /* UPDATE */ - SQL_VALUES = 319, /* VALUES */ - SQL_AFTER = 320, /* AFTER */ - SQL_ALTER = 321, /* ALTER */ - SQL_CROSS = 322, /* CROSS */ - SQL_DELTA = 323, /* DELTA */ - SQL_FLOAT = 324, /* FLOAT */ - SQL_GROUP = 325, /* GROUP */ - SQL_INDEX = 326, /* INDEX */ - SQL_INNER = 327, /* INNER */ - SQL_LIMIT = 328, /* LIMIT */ - SQL_LOCAL = 329, /* LOCAL */ - SQL_MERGE = 330, /* MERGE */ - SQL_MINUS = 331, /* MINUS */ - SQL_ORDER = 332, /* ORDER */ - SQL_OUTER = 333, /* OUTER */ - SQL_RIGHT = 334, /* RIGHT */ - SQL_TABLE = 335, /* TABLE */ - SQL_UNION = 336, /* UNION */ - SQL_USING = 337, /* USING */ - SQL_WHERE = 338, /* WHERE */ - SQL_CALL = 339, /* CALL */ - SQL_CASE = 340, /* CASE */ - SQL_CHAR = 341, /* CHAR */ - SQL_COPY = 342, /* COPY */ - SQL_DATE = 343, /* DATE */ - SQL_DATETIME = 344, /* DATETIME */ - SQL_DESC = 345, /* DESC */ - SQL_DROP = 346, /* DROP */ - SQL_ELSE = 347, /* ELSE */ - SQL_FILE = 348, /* FILE */ - SQL_FROM = 349, /* FROM */ - SQL_FULL = 350, /* FULL */ - SQL_HASH = 351, /* HASH */ - SQL_HINT = 352, /* HINT */ - SQL_INTO = 353, /* INTO */ - SQL_JOIN = 354, /* JOIN */ - SQL_LEFT = 355, /* LEFT */ - SQL_LIKE = 356, /* LIKE */ - SQL_LOAD = 357, /* LOAD */ - SQL_LONG = 358, /* LONG */ - SQL_NULL = 359, /* NULL */ - SQL_PLAN = 360, /* PLAN */ - SQL_SHOW = 361, /* SHOW */ - SQL_TEXT = 362, /* TEXT */ - SQL_THEN = 363, /* THEN */ - SQL_TIME = 364, /* TIME */ - SQL_VIEW = 365, /* VIEW */ - SQL_WHEN = 366, /* WHEN */ - SQL_WITH = 367, /* WITH */ - SQL_ADD = 368, /* ADD */ - SQL_ALL = 369, /* ALL */ - SQL_AND = 370, /* AND */ - SQL_ASC = 371, /* ASC */ - SQL_END = 372, /* END */ - SQL_FOR = 373, /* FOR */ - SQL_INT = 374, /* INT */ - SQL_KEY = 375, /* KEY */ - SQL_NOT = 376, /* NOT */ - SQL_OFF = 377, /* OFF */ - SQL_SET = 378, /* SET */ - SQL_TOP = 379, /* TOP */ - SQL_AS = 380, /* AS */ - SQL_BY = 381, /* BY */ - SQL_IF = 382, /* IF */ - SQL_IN = 383, /* IN */ - SQL_IS = 384, /* IS */ - SQL_OF = 385, /* OF */ - SQL_ON = 386, /* ON */ - SQL_OR = 387, /* OR */ - SQL_TO = 388, /* TO */ - SQL_NO = 389, /* NO */ - SQL_ARRAY = 390, /* ARRAY */ - SQL_CONCAT = 391, /* CONCAT */ - SQL_ILIKE = 392, /* ILIKE */ - SQL_SECOND = 393, /* SECOND */ - SQL_MINUTE = 394, /* MINUTE */ - SQL_HOUR = 395, /* HOUR */ - SQL_DAY = 396, /* DAY */ - SQL_MONTH = 397, /* MONTH */ - SQL_YEAR = 398, /* YEAR */ - SQL_SECONDS = 399, /* SECONDS */ - SQL_MINUTES = 400, /* MINUTES */ - SQL_HOURS = 401, /* HOURS */ - SQL_DAYS = 402, /* DAYS */ - SQL_MONTHS = 403, /* MONTHS */ - SQL_YEARS = 404, /* YEARS */ - SQL_INTERVAL = 405, /* INTERVAL */ - SQL_TRUE = 406, /* TRUE */ - SQL_FALSE = 407, /* FALSE */ - SQL_BOOLEAN = 408, /* BOOLEAN */ - SQL_TRANSACTION = 409, /* TRANSACTION */ - SQL_BEGIN = 410, /* BEGIN */ - SQL_COMMIT = 411, /* COMMIT */ - SQL_ROLLBACK = 412, /* ROLLBACK */ - SQL_NOWAIT = 413, /* NOWAIT */ - SQL_SKIP = 414, /* SKIP */ - SQL_LOCKED = 415, /* LOCKED */ - SQL_SHARE = 416, /* SHARE */ - SQL_EQUALS = 417, /* EQUALS */ - SQL_NOTEQUALS = 418, /* NOTEQUALS */ - SQL_LESS = 419, /* LESS */ - SQL_GREATER = 420, /* GREATER */ - SQL_LESSEQ = 421, /* LESSEQ */ - SQL_GREATEREQ = 422, /* GREATEREQ */ - SQL_NOTNULL = 423, /* NOTNULL */ - SQL_UMINUS = 424 /* UMINUS */ -}; -typedef enum hsql_tokentype hsql_token_kind_t; +# define HSQL_TOKENTYPE + enum hsql_tokentype + { + SQL_HSQL_EMPTY = -2, + SQL_YYEOF = 0, /* "end of file" */ + SQL_HSQL_error = 256, /* error */ + SQL_HSQL_UNDEF = 257, /* "invalid token" */ + SQL_IDENTIFIER = 258, /* IDENTIFIER */ + SQL_STRING = 259, /* STRING */ + SQL_FLOATVAL = 260, /* FLOATVAL */ + SQL_INTVAL = 261, /* INTVAL */ + SQL_DEALLOCATE = 262, /* DEALLOCATE */ + SQL_PARAMETERS = 263, /* PARAMETERS */ + SQL_INTERSECT = 264, /* INTERSECT */ + SQL_TEMPORARY = 265, /* TEMPORARY */ + SQL_TIMESTAMP = 266, /* TIMESTAMP */ + SQL_DISTINCT = 267, /* DISTINCT */ + SQL_NVARCHAR = 268, /* NVARCHAR */ + SQL_RESTRICT = 269, /* RESTRICT */ + SQL_TRUNCATE = 270, /* TRUNCATE */ + SQL_ANALYZE = 271, /* ANALYZE */ + SQL_BETWEEN = 272, /* BETWEEN */ + SQL_CASCADE = 273, /* CASCADE */ + SQL_COLUMNS = 274, /* COLUMNS */ + SQL_CONTROL = 275, /* CONTROL */ + SQL_DEFAULT = 276, /* DEFAULT */ + SQL_EXECUTE = 277, /* EXECUTE */ + SQL_EXPLAIN = 278, /* EXPLAIN */ + SQL_INTEGER = 279, /* INTEGER */ + SQL_NATURAL = 280, /* NATURAL */ + SQL_PREPARE = 281, /* PREPARE */ + SQL_PRIMARY = 282, /* PRIMARY */ + SQL_SCHEMAS = 283, /* SCHEMAS */ + SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ + SQL_REAL = 285, /* REAL */ + SQL_DECIMAL = 286, /* DECIMAL */ + SQL_SMALLINT = 287, /* SMALLINT */ + SQL_BIGINT = 288, /* BIGINT */ + SQL_SPATIAL = 289, /* SPATIAL */ + SQL_VARCHAR = 290, /* VARCHAR */ + SQL_VIRTUAL = 291, /* VIRTUAL */ + SQL_DESCRIBE = 292, /* DESCRIBE */ + SQL_BEFORE = 293, /* BEFORE */ + SQL_COLUMN = 294, /* COLUMN */ + SQL_CREATE = 295, /* CREATE */ + SQL_DELETE = 296, /* DELETE */ + SQL_DIRECT = 297, /* DIRECT */ + SQL_DOUBLE = 298, /* DOUBLE */ + SQL_ESCAPE = 299, /* ESCAPE */ + SQL_EXCEPT = 300, /* EXCEPT */ + SQL_EXISTS = 301, /* EXISTS */ + SQL_EXTRACT = 302, /* EXTRACT */ + SQL_CAST = 303, /* CAST */ + SQL_FORMAT = 304, /* FORMAT */ + SQL_GLOBAL = 305, /* GLOBAL */ + SQL_HAVING = 306, /* HAVING */ + SQL_IMPORT = 307, /* IMPORT */ + SQL_INSERT = 308, /* INSERT */ + SQL_ISNULL = 309, /* ISNULL */ + SQL_OFFSET = 310, /* OFFSET */ + SQL_RENAME = 311, /* RENAME */ + SQL_SCHEMA = 312, /* SCHEMA */ + SQL_SELECT = 313, /* SELECT */ + SQL_SORTED = 314, /* SORTED */ + SQL_TABLES = 315, /* TABLES */ + SQL_UNIQUE = 316, /* UNIQUE */ + SQL_UNLOAD = 317, /* UNLOAD */ + SQL_UPDATE = 318, /* UPDATE */ + SQL_VALUES = 319, /* VALUES */ + SQL_AFTER = 320, /* AFTER */ + SQL_ALTER = 321, /* ALTER */ + SQL_CROSS = 322, /* CROSS */ + SQL_DELTA = 323, /* DELTA */ + SQL_FLOAT = 324, /* FLOAT */ + SQL_GROUP = 325, /* GROUP */ + SQL_GROUPS = 326, /* GROUPS */ + SQL_INDEX = 327, /* INDEX */ + SQL_INNER = 328, /* INNER */ + SQL_LIMIT = 329, /* LIMIT */ + SQL_LOCAL = 330, /* LOCAL */ + SQL_MERGE = 331, /* MERGE */ + SQL_MINUS = 332, /* MINUS */ + SQL_ORDER = 333, /* ORDER */ + SQL_OVER = 334, /* OVER */ + SQL_RANGE = 335, /* RANGE */ + SQL_ROWS = 336, /* ROWS */ + SQL_OUTER = 337, /* OUTER */ + SQL_RIGHT = 338, /* RIGHT */ + SQL_TABLE = 339, /* TABLE */ + SQL_UNION = 340, /* UNION */ + SQL_USING = 341, /* USING */ + SQL_WHERE = 342, /* WHERE */ + SQL_CALL = 343, /* CALL */ + SQL_CASE = 344, /* CASE */ + SQL_CHAR = 345, /* CHAR */ + SQL_COPY = 346, /* COPY */ + SQL_DATE = 347, /* DATE */ + SQL_DATETIME = 348, /* DATETIME */ + SQL_DESC = 349, /* DESC */ + SQL_DROP = 350, /* DROP */ + SQL_ELSE = 351, /* ELSE */ + SQL_FILE = 352, /* FILE */ + SQL_FROM = 353, /* FROM */ + SQL_FULL = 354, /* FULL */ + SQL_HASH = 355, /* HASH */ + SQL_HINT = 356, /* HINT */ + SQL_INTO = 357, /* INTO */ + SQL_JOIN = 358, /* JOIN */ + SQL_LEFT = 359, /* LEFT */ + SQL_LIKE = 360, /* LIKE */ + SQL_LOAD = 361, /* LOAD */ + SQL_LONG = 362, /* LONG */ + SQL_NULL = 363, /* NULL */ + SQL_PARTITION = 364, /* PARTITION */ + SQL_PLAN = 365, /* PLAN */ + SQL_SHOW = 366, /* SHOW */ + SQL_TEXT = 367, /* TEXT */ + SQL_THEN = 368, /* THEN */ + SQL_TIME = 369, /* TIME */ + SQL_VIEW = 370, /* VIEW */ + SQL_WHEN = 371, /* WHEN */ + SQL_WITH = 372, /* WITH */ + SQL_ADD = 373, /* ADD */ + SQL_ALL = 374, /* ALL */ + SQL_AND = 375, /* AND */ + SQL_ASC = 376, /* ASC */ + SQL_END = 377, /* END */ + SQL_FOR = 378, /* FOR */ + SQL_INT = 379, /* INT */ + SQL_KEY = 380, /* KEY */ + SQL_NOT = 381, /* NOT */ + SQL_OFF = 382, /* OFF */ + SQL_SET = 383, /* SET */ + SQL_TOP = 384, /* TOP */ + SQL_AS = 385, /* AS */ + SQL_BY = 386, /* BY */ + SQL_IF = 387, /* IF */ + SQL_IN = 388, /* IN */ + SQL_IS = 389, /* IS */ + SQL_OF = 390, /* OF */ + SQL_ON = 391, /* ON */ + SQL_OR = 392, /* OR */ + SQL_TO = 393, /* TO */ + SQL_NO = 394, /* NO */ + SQL_ARRAY = 395, /* ARRAY */ + SQL_CONCAT = 396, /* CONCAT */ + SQL_ILIKE = 397, /* ILIKE */ + SQL_SECOND = 398, /* SECOND */ + SQL_MINUTE = 399, /* MINUTE */ + SQL_HOUR = 400, /* HOUR */ + SQL_DAY = 401, /* DAY */ + SQL_MONTH = 402, /* MONTH */ + SQL_YEAR = 403, /* YEAR */ + SQL_SECONDS = 404, /* SECONDS */ + SQL_MINUTES = 405, /* MINUTES */ + SQL_HOURS = 406, /* HOURS */ + SQL_DAYS = 407, /* DAYS */ + SQL_MONTHS = 408, /* MONTHS */ + SQL_YEARS = 409, /* YEARS */ + SQL_INTERVAL = 410, /* INTERVAL */ + SQL_TRUE = 411, /* TRUE */ + SQL_FALSE = 412, /* FALSE */ + SQL_BOOLEAN = 413, /* BOOLEAN */ + SQL_TRANSACTION = 414, /* TRANSACTION */ + SQL_BEGIN = 415, /* BEGIN */ + SQL_COMMIT = 416, /* COMMIT */ + SQL_ROLLBACK = 417, /* ROLLBACK */ + SQL_NOWAIT = 418, /* NOWAIT */ + SQL_SKIP = 419, /* SKIP */ + SQL_LOCKED = 420, /* LOCKED */ + SQL_SHARE = 421, /* SHARE */ + SQL_EQUALS = 422, /* EQUALS */ + SQL_NOTEQUALS = 423, /* NOTEQUALS */ + SQL_LESS = 424, /* LESS */ + SQL_GREATER = 425, /* GREATER */ + SQL_LESSEQ = 426, /* LESSEQ */ + SQL_GREATEREQ = 427, /* GREATEREQ */ + SQL_NOTNULL = 428, /* NOTNULL */ + SQL_UMINUS = 429 /* UMINUS */ + }; + typedef enum hsql_tokentype hsql_token_kind_t; #endif /* Value type. */ -#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED -union HSQL_STYPE { -#line 96 "bison_parser.y" +#if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED +union HSQL_STYPE +{ +#line 97 "bison_parser.y" // clang-format on bool bval; @@ -293,10 +300,13 @@ union HSQL_STYPE { hsql::DatetimeField datetime_field; hsql::DropColumnAction* drop_action_t; hsql::Expr* expr; + hsql::FrameDescription* frame_description; + hsql::FrameType frame_type; hsql::GroupByDescription* group_t; hsql::ImportType import_type_t; hsql::JoinType join_type; hsql::LimitDescription* limit; + hsql::LockingClause* locking_t; hsql::OrderDescription* order; hsql::OrderType order_type; hsql::SetOperation* set_operator_t; @@ -306,7 +316,6 @@ union HSQL_STYPE { hsql::TableRef* table; hsql::UpdateClause* update_t; hsql::WithDescription* with_description_t; - hsql::LockingClause* locking_t; std::vector* str_vec; std::unordered_set* column_constraint_set; @@ -324,26 +333,32 @@ union HSQL_STYPE { hsql::RowLockMode lock_mode_t; hsql::RowLockWaitPolicy lock_wait_policy_t; -#line 330 "bison_parser.h" +#line 337 "bison_parser.h" + }; typedef union HSQL_STYPE HSQL_STYPE; -#define HSQL_STYPE_IS_TRIVIAL 1 -#define HSQL_STYPE_IS_DECLARED 1 +# define HSQL_STYPE_IS_TRIVIAL 1 +# define HSQL_STYPE_IS_DECLARED 1 #endif /* Location type. */ -#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED +#if ! defined HSQL_LTYPE && ! defined HSQL_LTYPE_IS_DECLARED typedef struct HSQL_LTYPE HSQL_LTYPE; -struct HSQL_LTYPE { +struct HSQL_LTYPE +{ int first_line; int first_column; int last_line; int last_column; }; -#define HSQL_LTYPE_IS_DECLARED 1 -#define HSQL_LTYPE_IS_TRIVIAL 1 +# define HSQL_LTYPE_IS_DECLARED 1 +# define HSQL_LTYPE_IS_TRIVIAL 1 #endif -int hsql_parse(hsql::SQLParserResult* result, yyscan_t scanner); + + + +int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); + #endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 3853fff2..cc4cc72f 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -17,6 +17,7 @@ #include "flex_lexer.h" #include +#include #include using namespace hsql; @@ -125,10 +126,13 @@ hsql::DatetimeField datetime_field; hsql::DropColumnAction* drop_action_t; hsql::Expr* expr; + hsql::FrameDescription* frame_description; + hsql::FrameType frame_type; hsql::GroupByDescription* group_t; hsql::ImportType import_type_t; hsql::JoinType join_type; hsql::LimitDescription* limit; + hsql::LockingClause* locking_t; hsql::OrderDescription* order; hsql::OrderType order_type; hsql::SetOperation* set_operator_t; @@ -138,7 +142,6 @@ hsql::TableRef* table; hsql::UpdateClause* update_t; hsql::WithDescription* with_description_t; - hsql::LockingClause* locking_t; std::vector* str_vec; std::unordered_set* column_constraint_set; @@ -161,7 +164,7 @@ ** Destructor symbols *********************************/ // clang-format off - %destructor { } + %destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); @@ -202,10 +205,10 @@ %token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT CAST FORMAT GLOBAL HAVING IMPORT %token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED %token TABLES UNIQUE UNLOAD UPDATE VALUES AFTER ALTER CROSS - %token DELTA FLOAT GROUP INDEX INNER LIMIT LOCAL MERGE MINUS ORDER + %token DELTA FLOAT GROUP GROUPS INDEX INNER LIMIT LOCAL MERGE MINUS ORDER OVER RANGE ROWS %token OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR COPY DATE DATETIME %token DESC DROP ELSE FILE FROM FULL HASH HINT INTO JOIN - %token LEFT LIKE LOAD LONG NULL PLAN SHOW TEXT THEN TIME + %token LEFT LIKE LOAD LONG NULL PARTITION PLAN SHOW TEXT THEN TIME %token VIEW WHEN WITH ADD ALL AND ASC END FOR INT KEY %token NOT OFF SET TOP AS BY IF IN IS OF ON OR TO NO %token ARRAY CONCAT ILIKE SECOND MINUTE HOUR DAY MONTH YEAR @@ -235,6 +238,9 @@ %type table_name %type opt_index_name %type file_path prepare_target_query + %type opt_frame_clause + %type frame_type + %type frame_bound %type opt_not_exists opt_exists opt_distinct opt_all %type opt_decimal_specification %type opt_time_precision @@ -242,7 +248,7 @@ %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 function_expr between_expr expr_alias param_expr window_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 @@ -272,7 +278,7 @@ %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 expr_list select_list opt_literal_list literal_list hint_list opt_hints opt_partition %type table_ref_commalist %type opt_order order_list %type opt_with_clause with_clause with_description_list @@ -922,7 +928,7 @@ expr_alias : expr opt_alias { } }; -expr : operand | between_expr | logic_expr | exists_expr | in_expr; +expr : operand | between_expr | logic_expr | exists_expr | in_expr | window_expr; operand : '(' expr ')' { $$ = $2; } | array_index | scalar_expr | unary_expr | binary_expr | case_expr | function_expr | extract_expr | cast_expr | @@ -957,6 +963,47 @@ in_expr : operand IN '(' expr_list ')' { $$ = Expr::makeInOperator($1, $4); } | operand IN '(' select_no_paren ')' { $$ = Expr::makeInOperator($1, $4); } | operand NOT IN '(' select_no_paren ')' { $$ = Expr::makeOpUnary(kOpNot, Expr::makeInOperator($1, $5)); }; +// Window function expressions, based on https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS +// We do not support named windows (for simplicity) and filters (not part of the SQL standard). +window_expr : operand OVER '(' opt_partition opt_order opt_frame_clause ')' { $$ = Expr::makeWindow($1, $4, $5, $6); }; + +opt_partition : PARTITION BY expr_list { $$ = $3; } +| /* empty */ { $$ = nullptr; }; + +opt_frame_clause : frame_type frame_bound { $$ = new FrameDescription{$1, $2, nullptr}; } +| frame_type BETWEEN frame_bound AND frame_bound { $$ = new FrameDescription{$1, $3, $5}; } +| /* empty */ { $$ = nullptr; }; + +frame_type : RANGE { $$ = FrameType::kRange; } +| ROWS { $$ = FrameType::kRows; } +| GROUPS { $$ = FrameType::kGroups; }; + + +// We keep the frame clauses simple by passing string values for the frame bounds. The DBMS has to check if they are +// correct. SQL:2003 allows the following five options, which all consist of two tokens: +// UNBOUNDED PRECEDING | unsigned-integer PRECEDING | CURRENT ROW | unsigned-integer FOLLOWING | UNBOUNDED FOLLOWING +frame_bound : INTVAL IDENTIFIER { + // This is a rather ugly workaround to get a string out of the INTVAL. We cannot use IDENTIFIER because it must not + // start with a number. STRING is also not possible because it must be in single quotes. + std::stringstream stream; + stream << $1; + std::string temp_str = stream.str(); + + // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. + char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + 1))); + strcpy(char_type, temp_str.c_str()); + strcat(char_type, " "); + strcat(char_type, $2); + free($2); + $$ = char_type; +} +| IDENTIFIER IDENTIFIER { + strcat($1, " "); + strcat($1, $2); + free($2); + $$ = $1; +}; + // CASE grammar based on: flex & bison by John Levine // https://www.safaribooksonline.com/library/view/flex-bison/9780596805418/ch04.html#id352665 case_expr : CASE expr case_list END { $$ = Expr::makeCase($2, $3, nullptr); } diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index e907eeb7..d6a21f17 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -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 177 -#define YY_END_OF_BUFFER 178 +#define YY_NUM_RULES 182 +#define YY_END_OF_BUFFER 183 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,28 +582,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1240] = +static const flex_int16_t yy_accept[1272] = { 0, - 0, 0, 174, 174, 2, 2, 178, 176, 4, 4, - 176, 176, 165, 172, 165, 165, 169, 165, 165, 165, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 165, 174, 175, 2, 2, 3, + 0, 0, 179, 179, 2, 2, 183, 181, 4, 4, + 181, 181, 170, 177, 170, 170, 174, 170, 170, 170, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 170, 179, 180, 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, 160, 0, 1, 0, - 167, 166, 169, 162, 161, 159, 163, 171, 171, 171, - - 171, 171, 171, 12, 171, 171, 171, 19, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 69, 171, 171, 72, 81, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 99, 171, 171, 104, - 107, 108, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 139, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 164, 174, 173, 2, 2, 2, 2, 1, 2, 2, + 2, 2, 2, 2, 2, 4, 165, 0, 1, 0, + 172, 171, 174, 167, 166, 164, 168, 176, 176, 176, + + 176, 176, 176, 12, 176, 176, 176, 19, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 70, 176, 176, 73, 82, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 100, 176, 176, 105, + 108, 109, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 144, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 169, 179, 178, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -614,21 +614,21 @@ static const flex_int16_t yy_accept[1240] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 170, 0, 166, 5, 171, 7, 171, 171, 10, 171, - 13, 171, 171, 171, 171, 171, 171, 171, 171, 171, - - 171, 171, 171, 171, 171, 171, 34, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 48, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 58, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 76, 171, 171, 84, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 100, 171, 171, 171, 105, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 125, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 140, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 175, 0, 171, 5, 176, 7, + 176, 176, 10, 176, 13, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 34, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 48, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 58, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 77, 176, 176, 85, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 101, + 176, 176, 176, 106, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 130, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 145, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -640,22 +640,22 @@ static const flex_int16_t yy_accept[1240] = 2, 2, 2, 2, 2, 2, 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, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 20, 171, 22, 23, 24, 171, 171, 171, 29, 171, - 171, 32, 35, 171, 171, 171, 171, 171, 41, 171, - 171, 171, 46, 47, 171, 171, 171, 171, 171, 171, - 171, 56, 171, 171, 60, 61, 171, 171, 64, 171, - 66, 67, 171, 171, 171, 171, 171, 171, 80, 171, - 83, 85, 86, 171, 88, 171, 171, 91, 171, 171, - 171, 171, 171, 102, 171, 171, 171, 171, 171, 112, - - 171, 171, 115, 171, 171, 171, 171, 171, 171, 171, - 171, 127, 128, 171, 171, 171, 171, 171, 135, 136, - 137, 171, 142, 171, 171, 171, 171, 171, 171, 171, - 171, 151, 171, 153, 171, 155, 156, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 20, 176, 22, 23, 24, 176, 176, 176, 29, 176, + 176, 32, 35, 176, 176, 176, 176, 176, 41, 176, + 176, 176, 46, 47, 176, 176, 176, 176, 176, 176, + 176, 56, 176, 176, 60, 61, 176, 176, 65, 176, + 67, 68, 176, 176, 176, 176, 176, 176, 81, 176, + 84, 86, 87, 176, 89, 176, 176, 92, 176, 176, + + 176, 176, 176, 103, 176, 176, 176, 176, 112, 176, + 176, 115, 176, 176, 176, 119, 176, 176, 176, 176, + 124, 176, 176, 176, 176, 132, 133, 176, 176, 176, + 176, 176, 140, 141, 142, 176, 147, 176, 176, 176, + 176, 176, 176, 176, 176, 156, 176, 158, 176, 160, + 161, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -666,19 +666,19 @@ static const flex_int16_t yy_accept[1240] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 6, 8, 171, 11, 171, - 15, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 31, 171, 171, 171, 171, 171, 40, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 55, 57, 171, - 171, 63, 171, 68, 70, 171, 73, 74, 171, 171, - - 171, 171, 87, 89, 171, 92, 93, 171, 96, 171, - 171, 171, 171, 109, 110, 171, 171, 171, 171, 171, - 118, 171, 171, 171, 171, 126, 171, 171, 171, 132, - 171, 171, 171, 171, 144, 171, 171, 171, 148, 171, - 171, 171, 154, 157, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 6, 8, 176, 11, 176, 15, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 31, 176, + 176, 176, 176, 176, 40, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 55, 57, 176, 176, 63, + 176, 69, 71, 176, 74, 75, 176, 176, 176, 176, + 88, 90, 176, 93, 94, 176, 97, 176, 176, 176, + 176, 110, 111, 176, 176, 176, 176, 118, 176, 176, + 122, 176, 176, 176, 176, 131, 176, 176, 176, 137, + 176, 176, 176, 176, 149, 176, 176, 176, 153, 176, + 176, 176, 159, 162, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -686,40 +686,44 @@ static const flex_int16_t yy_accept[1240] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 171, 14, 171, 17, 171, - 171, 171, 25, 27, 171, 30, 171, 171, 171, 171, - 39, 171, 43, 171, 45, 49, 50, 171, 52, 171, - 171, 59, 62, 65, 71, 75, 171, 171, 171, 82, - 90, 94, 97, 171, 101, 171, 106, 171, 171, 171, - 116, 171, 171, 120, 122, 124, 171, 130, 171, 133, - 171, 171, 171, 171, 145, 146, 147, 149, 171, 171, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 176, 14, 176, + 17, 176, 176, 176, 25, 27, 176, 30, 176, 176, + 176, 176, 39, 176, 43, 176, 45, 49, 50, 176, + 52, 176, 176, 59, 62, 64, 66, 72, 76, 176, + 176, 176, 83, 91, 95, 98, 176, 102, 176, 107, + + 176, 176, 176, 176, 120, 176, 176, 125, 127, 129, + 176, 135, 176, 138, 176, 176, 176, 176, 150, 151, + 152, 154, 176, 176, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 9, 16, 18, - 21, 171, 26, 28, 171, 171, 37, 38, 171, 171, - 51, 53, 54, 77, 171, 171, 95, 98, 171, 171, - 113, 114, 171, 171, 121, 123, 171, 131, 171, 171, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 9, 16, 18, 21, 176, 26, 28, - 171, 171, 150, 152, 2, 2, 2, 2, 2, 2, + 176, 176, 37, 38, 176, 176, 51, 53, 54, 78, + 176, 176, 96, 99, 176, 176, 176, 116, 117, 176, + 176, 126, 128, 176, 136, 176, 176, 176, 176, 155, + 157, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 171, 33, 171, 42, 44, 171, 79, - 103, 171, 117, 119, 129, 171, 171, 171, 143, 2, + 0, 176, 33, 176, 42, 44, 176, 80, 104, 176, + 176, 121, 123, 134, 176, 176, 176, 148, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 171, 171, 78, - 171, 134, 138, 171, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 0, 36, 111, 171, 2, 2, 2, - 2, 2, 0, 0, 141, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 2, 0, 176, 176, 79, + 176, 114, 139, 143, 176, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 36, 113, 176, 2, + 2, 2, 2, 2, 0, 0, 146, 2, 2, 2, + 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, - 0, 0, 2, 2, 0, 0, 2, 2, 0, 158, - 2, 2, 0, 2, 0, 2, 168, 2, 0 + 0, 163, 2, 2, 0, 2, 0, 2, 173, 2, + 0 } ; static const YY_CHAR yy_ec[256] = @@ -766,289 +770,295 @@ static const YY_CHAR yy_meta[77] = 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1247] = +static const flex_int16_t yy_base[1279] = { 0, - 0, 0, 727, 703, 76, 0, 709, 8217, 151, 153, - 687, 0, 8217, 8217, 149, 148, 160, 159, 685, 637, + 0, 0, 653, 632, 76, 0, 610, 8316, 151, 153, + 584, 0, 8316, 8316, 149, 148, 160, 159, 583, 582, 156, 156, 165, 181, 192, 243, 173, 220, 253, 152, - 171, 215, 245, 248, 289, 288, 0, 269, 335, 378, - 298, 317, 206, 173, 558, 0, 622, 0, 183, 247, - 578, 576, 0, 0, 239, 366, 437, 240, 522, 521, - 456, 532, 586, 638, 686, 738, 370, 444, 785, 452, - 518, 519, 520, 836, 883, 934, 534, 573, 983, 1035, - 618, 640, 688, 574, 459, 265, 8217, 524, 8217, 516, - 948, 975, 1101, 8217, 8217, 8217, 8217, 0, 249, 255, - - 352, 367, 280, 301, 445, 301, 294, 0, 330, 319, - 526, 375, 438, 743, 463, 353, 366, 366, 388, 434, - 749, 432, 434, 451, 481, 507, 524, 561, 566, 571, - 578, 575, 0, 588, 584, 695, 588, 604, 608, 629, - 633, 792, 630, 636, 637, 632, 684, 642, 657, 661, - 0, 685, 682, 688, 707, 752, 786, 714, 733, 743, - 791, 800, 766, 806, 790, 811, 811, 830, 812, 806, - 807, 828, 843, 843, 839, 841, 855, 858, 845, 865, - 8217, 0, 8217, 0, 343, 0, 522, 0, 513, 1111, - 1121, 1132, 0, 0, 0, 0, 978, 997, 1022, 1118, - - 1169, 1121, 1165, 1215, 1168, 1208, 1221, 1253, 1257, 1297, - 1265, 1309, 1361, 1308, 1357, 1401, 1358, 1410, 1416, 1465, - 1452, 1463, 1406, 1474, 1506, 1506, 1518, 1519, 1550, 1554, - 1563, 1594, 1607, 1612, 1661, 1612, 1647, 1652, 1681, 1729, - 1781, 1679, 1707, 1773, 1782, 1822, 1825, 1846, 1869, 1838, - 1882, 1905, 1918, 1926, 1734, 1954, 1967, 1973, 2003, 2052, - 2025, 1747, 2064, 2065, 2103, 2100, 2134, 2016, 2125, 2154, - 2206, 2193, 2178, 2208, 2237, 2248, 2260, 2286, 2298, 0, - 8217, 510, 1158, 0, 862, 0, 864, 859, 0, 882, - 0, 876, 890, 880, 896, 894, 908, 1171, 905, 906, - - 936, 931, 930, 956, 958, 984, 971, 985, 996, 1006, - 1036, 1008, 1040, 1026, 1046, 1035, 1047, 0, 1054, 1052, - 1056, 1112, 1122, 1118, 1125, 1173, 1184, 1185, 1211, 1216, - 1230, 1216, 1233, 1243, 1255, 1260, 1277, 1291, 1307, 1314, - 1318, 1412, 1304, 1314, 0, 1310, 1326, 1351, 1359, 1458, - 1358, 1359, 1347, 1354, 1365, 0, 1417, 1408, 1405, 1406, - 1431, 1468, 1477, 1499, 1506, 1516, 1520, 1535, 1533, 1557, - 1555, 1571, 1568, 1583, 0, 1580, 1584, 1603, 1608, 1603, - 1621, 1630, 1658, 1658, 1668, 1690, 0, 1696, 1736, 1773, - 1713, 1735, 1733, 1730, 1761, 1757, 1778, 1790, 1795, 1795, - - 0, 508, 2363, 2262, 2356, 2357, 2358, 2296, 2356, 2400, - 2372, 2411, 2412, 2447, 2425, 2454, 2457, 2506, 2505, 2497, - 2519, 2547, 2555, 2573, 2592, 2560, 2605, 2608, 2625, 2657, - 2655, 2681, 2683, 2707, 2719, 2721, 2747, 2760, 2765, 2773, - 2801, 2799, 2808, 2843, 2827, 2855, 2870, 2895, 2896, 2905, - 2931, 2940, 2954, 2960, 2989, 2992, 3018, 3017, 3030, 3042, - 3043, 3056, 3068, 3087, 3093, 3111, 3104, 3136, 3138, 3190, - 3168, 3202, 3214, 3228, 3236, 3254, 3272, 3279, 3293, 3307, - 3318, 3332, 3350, 3357, 3371, 3387, 3401, 3417, 3441, 3459, - 3445, 3470, 3484, 3492, 3506, 3514, 3528, 3552, 3557, 3573, - - 3587, 3603, 3627, 3611, 3641, 3654, 3666, 3681, 3702, 3708, - 3730, 3756, 3744, 3755, 3788, 3797, 3811, 3837, 3851, 3855, - 500, 1798, 1808, 1826, 1830, 1862, 1877, 1890, 1885, 1899, - 0, 1911, 0, 0, 1913, 1903, 1925, 1917, 0, 1928, - 1930, 1933, 0, 1959, 1970, 1968, 1976, 2001, 1991, 2017, - 2023, 2021, 0, 0, 2019, 2035, 2063, 2066, 2086, 2093, - 2090, 0, 2104, 2126, 0, 0, 2132, 2121, 0, 2127, - 0, 2125, 2144, 2144, 2148, 2174, 2177, 2194, 0, 2204, - 0, 0, 0, 2217, 0, 2229, 2242, 0, 2247, 2297, - 2251, 2244, 2261, 0, 2302, 2304, 2301, 2303, 2336, 0, - - 2376, 2377, 0, 2366, 2397, 2402, 2429, 2419, 2419, 2435, - 2450, 0, 0, 2462, 2475, 2477, 2485, 2477, 0, 0, - 2497, 2508, 0, 2543, 2549, 2545, 2567, 2556, 2574, 2581, - 2602, 0, 2593, 0, 2613, 0, 2602, 492, 3891, 3899, - 3899, 3924, 3943, 3943, 3938, 3959, 3972, 3987, 4002, 4011, - 4016, 4041, 4046, 4055, 4085, 4070, 4099, 4099, 4135, 4144, - 4148, 4179, 4188, 4202, 4223, 4226, 4249, 4100, 4268, 4272, - 4291, 4310, 4319, 4333, 4363, 4366, 4387, 4388, 4414, 4416, - 4442, 4440, 4464, 4476, 4494, 4502, 4474, 4521, 4529, 4546, - 4568, 4573, 4577, 4613, 4658, 4622, 4655, 4666, 4669, 4699, - - 4702, 4713, 4732, 4752, 4757, 4760, 4767, 4803, 4807, 4815, - 4830, 4856, 4855, 4884, 4885, 4909, 4910, 4938, 4939, 4963, - 4964, 4992, 4993, 5017, 5018, 5043, 5049, 5066, 5071, 5096, - 5073, 5101, 5120, 5125, 5149, 5150, 5164, 5164, 5185, 5199, - 5218, 5215, 5239, 5267, 5253, 5291, 5292, 5311, 5324, 5336, - 5349, 5350, 5362, 5381, 459, 0, 0, 2600, 0, 2623, - 0, 2631, 2622, 2651, 2664, 2670, 2660, 2656, 2663, 2678, - 0, 2695, 2699, 2717, 2708, 2735, 0, 2741, 2740, 2754, - 2771, 2776, 2774, 2809, 2817, 2833, 2862, 0, 0, 2852, - 2864, 0, 2879, 0, 0, 2876, 0, 0, 2894, 2910, - - 3157, 2914, 0, 0, 2926, 0, 0, 2935, 2930, 2962, - 2964, 2995, 2993, 0, 0, 3014, 3045, 3046, 3071, 3078, - 0, 3096, 3120, 3118, 3107, 0, 3128, 3151, 3158, 3141, - 3147, 3147, 3170, 3180, 0, 3180, 3185, 3192, 0, 3194, - 3224, 3230, 0, 0, 457, 5394, 5397, 5405, 5435, 5448, - 5457, 5460, 5486, 5512, 5499, 5540, 5538, 5547, 5576, 5590, - 5591, 5604, 5605, 5630, 5640, 5658, 5660, 5684, 5698, 5703, - 5696, 5699, 5738, 5747, 5745, 5756, 5792, 5795, 5800, 5830, - 5802, 5837, 5851, 5845, 5875, 5881, 5894, 5905, 5929, 5949, - 5938, 5947, 5978, 5991, 5992, 6022, 6033, 6035, 6064, 6080, - - 6077, 6121, 6118, 6122, 6162, 6170, 6173, 6175, 6214, 6219, - 6227, 6232, 6271, 6273, 6286, 6285, 6311, 6325, 6330, 6175, - 6330, 6366, 6382, 6390, 6273, 6383, 6433, 6415, 6434, 6449, - 6470, 6491, 6494, 6510, 452, 3242, 0, 3235, 0, 3241, - 3260, 3247, 3264, 0, 3277, 0, 3282, 3298, 3290, 3289, - 0, 3311, 0, 3312, 0, 0, 0, 3330, 0, 3331, - 3332, 0, 0, 0, 0, 0, 3343, 3361, 3366, 0, - 0, 3358, 0, 3368, 0, 3388, 0, 3377, 3400, 3394, - 0, 3418, 3420, 3416, 3420, 0, 3429, 0, 3437, 0, - 3453, 3476, 3500, 3488, 0, 0, 0, 0, 3495, 3502, - - 427, 6538, 6539, 6538, 6554, 6573, 6593, 6601, 6603, 6622, - 6638, 6646, 6662, 6692, 6686, 6695, 6716, 6737, 6740, 6768, - 6781, 6782, 6812, 6820, 6825, 6825, 6861, 6870, 6874, 6905, - 6914, 6918, 6949, 6957, 6976, 6971, 7001, 7003, 7017, 7026, - 7045, 7059, 7078, 7087, 7107, 7116, 7131, 7157, 7166, 7166, - 7192, 7201, 7210, 7234, 7243, 7252, 7276, 7295, 7294, 7318, - 7336, 7337, 7360, 7378, 7386, 7402, 428, 0, 0, 0, - 0, 3513, 0, 0, 3520, 3526, 0, 0, 3542, 3535, - 0, 0, 0, 0, 3559, 3551, 0, 0, 3555, 3570, - 0, 0, 3563, 3575, 0, 0, 3571, 0, 3587, 3596, - - 3601, 3624, 0, 0, 415, 7416, 7430, 7444, 7458, 7469, - 7483, 7491, 7505, 7517, 7519, 7531, 7543, 7545, 7557, 7569, - 7571, 7593, 7601, 7600, 7603, 7636, 7644, 7656, 7661, 7669, - 7695, 7707, 7719, 7721, 7745, 7743, 7771, 7769, 7795, 7793, - 7819, 7821, 416, 3619, 0, 3620, 0, 0, 3625, 0, - 0, 3629, 0, 0, 0, 3636, 3660, 3668, 0, 415, - 7834, 7849, 7863, 7875, 7887, 7888, 7889, 7913, 7928, 7927, - 7942, 7957, 7966, 7981, 7995, 7996, 411, 348, 3678, 0, - 3665, 0, 0, 3670, 409, 8034, 8020, 8021, 8055, 8063, - 8066, 8056, 403, 3748, 0, 0, 3683, 372, 3756, 8088, - - 8106, 8104, 356, 3714, 0, 336, 3718, 8113, 328, 3741, - 326, 3759, 323, 3762, 321, 3774, 288, 3801, 278, 3804, - 273, 3801, 242, 3803, 241, 3812, 239, 3826, 226, 8217, - 223, 0, 196, 191, 181, 176, 8217, 0, 8217, 8186, - 8191, 186, 8196, 8201, 8206, 8211 + 171, 215, 245, 248, 289, 288, 0, 300, 340, 383, + 298, 322, 206, 173, 510, 0, 541, 0, 183, 247, + 526, 535, 0, 0, 239, 371, 442, 240, 513, 512, + 461, 537, 591, 643, 691, 743, 375, 449, 790, 457, + 523, 524, 525, 841, 888, 939, 539, 593, 988, 1040, + 591, 645, 657, 642, 456, 265, 8316, 525, 8316, 515, + 953, 980, 1106, 8316, 8316, 8316, 8316, 0, 249, 255, + + 334, 348, 280, 305, 450, 306, 305, 0, 378, 368, + 531, 380, 443, 701, 468, 356, 371, 381, 438, 446, + 754, 439, 459, 489, 509, 526, 572, 571, 572, 582, + 579, 574, 0, 588, 596, 731, 635, 644, 631, 653, + 701, 753, 645, 650, 684, 681, 699, 699, 725, 754, + 0, 761, 746, 768, 762, 788, 801, 784, 798, 798, + 799, 800, 831, 812, 809, 819, 803, 827, 850, 840, + 852, 845, 843, 867, 862, 856, 856, 885, 920, 867, + 861, 895, 8316, 0, 8316, 0, 293, 0, 520, 0, + 506, 1116, 1126, 1137, 0, 0, 0, 0, 983, 1002, + + 1027, 1123, 1174, 1126, 1170, 1220, 1173, 1213, 1226, 1258, + 1262, 1302, 1270, 1314, 1366, 1313, 1362, 1406, 1363, 1415, + 1421, 1470, 1457, 1468, 1411, 1479, 1511, 1511, 1523, 1524, + 1555, 1559, 1568, 1599, 1612, 1617, 1666, 1617, 1652, 1657, + 1686, 1734, 1786, 1684, 1712, 1778, 1787, 1827, 1830, 1851, + 1874, 1843, 1887, 1910, 1739, 1922, 1954, 1752, 1929, 1959, + 1985, 1989, 2003, 2052, 2042, 2043, 2072, 2087, 2106, 2111, + 2132, 2145, 2171, 2183, 2235, 2170, 2185, 2209, 2234, 2263, + 2234, 2287, 2288, 0, 8316, 498, 1163, 0, 899, 0, + 900, 916, 0, 934, 0, 939, 947, 936, 951, 970, + + 977, 1176, 976, 974, 989, 990, 987, 1042, 1027, 1045, + 1032, 1041, 1047, 1056, 1163, 1057, 1056, 1042, 1062, 1120, + 1134, 0, 1148, 1185, 1200, 1210, 1221, 1219, 1223, 1241, + 1256, 1267, 1270, 1281, 1309, 1296, 1316, 1319, 1310, 1315, + 1324, 1321, 1360, 1363, 1365, 1417, 1350, 1359, 0, 1359, + 1386, 1414, 1421, 1463, 1421, 1423, 1420, 1458, 1462, 0, + 1517, 1515, 1516, 1518, 1536, 1553, 1552, 1592, 1558, 1565, + 1575, 1596, 1612, 1624, 1608, 1638, 1635, 1660, 1678, 1672, + 1695, 0, 1697, 1710, 1725, 1734, 1732, 1735, 1744, 1753, + 1765, 1779, 1790, 0, 1789, 1804, 1841, 1793, 1812, 1807, + + 1839, 1893, 1882, 1888, 1948, 1901, 1894, 0, 465, 2353, + 2285, 2346, 2347, 2348, 2346, 2362, 2390, 2393, 2401, 2410, + 2415, 2445, 2444, 2447, 2496, 2495, 2487, 2509, 2537, 2545, + 2563, 2582, 2550, 2595, 2598, 2615, 2647, 2645, 2671, 2673, + 2697, 2709, 2711, 2737, 2750, 2755, 2763, 2791, 2789, 2798, + 2833, 2817, 2845, 2860, 2885, 2886, 2895, 2921, 2930, 2944, + 2950, 2979, 2982, 3008, 3007, 3020, 3032, 3033, 3046, 3058, + 3077, 3083, 3101, 3094, 3126, 3128, 3180, 3158, 3192, 3204, + 3218, 3226, 3244, 3262, 3269, 3283, 3297, 3308, 3322, 3337, + 3389, 3337, 3356, 3372, 3396, 3410, 3426, 3450, 3468, 3454, + + 3492, 3493, 3512, 3515, 3517, 3547, 3561, 3566, 3522, 3576, + 3600, 3614, 3618, 3654, 3658, 3666, 3671, 3698, 3714, 3715, + 3716, 3761, 3759, 3760, 3804, 3803, 3800, 3844, 3852, 3855, + 462, 1899, 1901, 1920, 1925, 1973, 1980, 1997, 1993, 2009, + 0, 2022, 0, 0, 2031, 2020, 2044, 2038, 0, 2041, + 2043, 2043, 0, 2089, 2093, 2089, 2102, 2124, 2112, 2132, + 2132, 2152, 0, 0, 2150, 2158, 2183, 2185, 2219, 2227, + 2225, 0, 2218, 2241, 0, 0, 2263, 2258, 0, 2268, + 0, 2265, 2293, 2286, 2282, 2314, 2348, 2499, 0, 2355, + 0, 0, 0, 2348, 0, 2357, 2416, 0, 2417, 2612, + + 2420, 2427, 2455, 0, 2473, 2475, 2464, 2518, 0, 2540, + 2547, 0, 2557, 2565, 2566, 0, 2563, 2582, 2588, 2609, + 0, 2603, 2604, 2623, 2637, 0, 0, 2651, 2659, 2657, + 2663, 2658, 0, 0, 2675, 2685, 0, 2705, 2696, 2709, + 2739, 2730, 2751, 2761, 2763, 0, 2763, 0, 2814, 0, + 2807, 461, 3890, 3893, 3915, 3918, 3937, 3944, 3956, 3972, + 3992, 3994, 4020, 3995, 4007, 4049, 4048, 4061, 4074, 4089, + 4102, 4116, 4139, 4152, 4158, 4182, 4193, 4196, 4212, 4236, + 4254, 4247, 4278, 4282, 4296, 4320, 4329, 4343, 4373, 4376, + 4397, 4398, 4424, 4426, 4452, 4450, 4474, 4486, 4504, 4512, + + 4484, 4531, 4539, 4556, 4578, 4583, 4587, 4623, 4668, 4632, + 4665, 4676, 4679, 4709, 4712, 4723, 4742, 4762, 4767, 4770, + 4777, 4813, 4817, 4825, 4840, 4866, 4865, 4894, 4895, 4919, + 4920, 4933, 4948, 4973, 4978, 4987, 5002, 5027, 5028, 5036, + 5072, 5077, 5080, 5109, 5122, 5122, 5134, 5160, 5165, 5173, + 5178, 5192, 5214, 5217, 5222, 5221, 5224, 5259, 5265, 5268, + 5301, 5317, 5314, 5350, 5361, 5370, 5362, 5402, 5410, 5411, + 5424, 5445, 432, 0, 0, 2806, 0, 2850, 0, 2857, + 2846, 2875, 2882, 2901, 2891, 2896, 2905, 2925, 0, 2930, + 2938, 2973, 2981, 2998, 0, 3000, 3033, 3040, 3061, 3072, + + 3067, 3091, 3093, 3108, 3124, 0, 0, 3125, 3137, 3131, + 3148, 0, 0, 3137, 0, 0, 3141, 3161, 3226, 3157, + 0, 0, 3167, 0, 0, 3170, 3160, 3186, 3183, 3207, + 3217, 0, 0, 3234, 3235, 3239, 3255, 0, 3274, 3276, + 0, 3290, 3291, 3295, 3283, 0, 3296, 3335, 3364, 3382, + 3387, 3386, 3415, 3418, 0, 3421, 3440, 3443, 0, 3433, + 3456, 3457, 0, 0, 419, 5453, 5456, 5459, 5489, 5506, + 5509, 5511, 5524, 5563, 5550, 5564, 5589, 5598, 5616, 5618, + 5642, 5650, 5664, 5676, 5691, 5702, 5704, 5716, 5730, 5745, + 5738, 5756, 5774, 5792, 5781, 5804, 5828, 5836, 5850, 5864, + + 5811, 5871, 5901, 5885, 5909, 5925, 5939, 5955, 5963, 5983, + 5981, 5999, 6012, 6025, 6043, 6056, 6067, 6068, 6097, 6100, + 6103, 6121, 6145, 6149, 6163, 6174, 6188, 6213, 6214, 6212, + 6238, 6252, 6264, 6267, 6282, 6308, 6306, 6320, 6332, 6350, + 6362, 6364, 6377, 6405, 6419, 6447, 6443, 6472, 6486, 6487, + 6500, 6521, 6529, 6557, 6565, 6576, 414, 3454, 0, 3449, + 0, 3469, 3483, 3492, 3504, 0, 3516, 0, 3545, 3557, + 3562, 3557, 0, 3576, 0, 3577, 0, 0, 0, 3589, + 0, 3602, 3605, 0, 0, 0, 0, 0, 0, 3611, + 3626, 3634, 0, 0, 3617, 0, 3628, 0, 3678, 0, + + 3664, 3678, 3683, 3664, 0, 3724, 3726, 3715, 3717, 0, + 3728, 0, 3738, 0, 3763, 3774, 3779, 3774, 0, 0, + 0, 0, 3786, 3813, 413, 6577, 6582, 6609, 6618, 6627, + 6638, 6647, 6663, 6672, 6681, 6705, 6721, 6735, 6729, 6759, + 6770, 6783, 6789, 6824, 6825, 6833, 6866, 6656, 6868, 6875, + 6889, 6910, 6913, 6919, 6943, 6954, 6957, 6973, 7001, 7006, + 7020, 7035, 7008, 7027, 7051, 7062, 7081, 7092, 7105, 7125, + 7130, 7144, 7149, 7184, 7185, 7183, 7194, 7227, 7230, 7236, + 7260, 7271, 7279, 7307, 7320, 7343, 7356, 7362, 7386, 7392, + 7400, 7416, 417, 0, 0, 0, 0, 3825, 0, 0, + + 3827, 3837, 0, 0, 3843, 3841, 0, 0, 0, 0, + 3867, 3860, 0, 0, 3868, 3887, 3895, 0, 0, 3898, + 3910, 0, 0, 3902, 0, 3908, 3953, 3955, 3973, 0, + 0, 416, 7430, 7444, 7458, 7472, 7483, 7497, 7505, 7519, + 7531, 7533, 7545, 7557, 7559, 7571, 7583, 7585, 7607, 7615, + 7614, 7617, 7650, 7658, 7670, 7675, 7683, 7705, 7719, 7727, + 7745, 7753, 7771, 7779, 7801, 7815, 7829, 7820, 7854, 7855, + 417, 3969, 0, 3986, 0, 0, 3995, 0, 0, 4020, + 4026, 0, 0, 0, 4016, 4035, 4046, 0, 415, 7880, + 7868, 7894, 7906, 7908, 7934, 7942, 7947, 7982, 7984, 7992, + + 7998, 8028, 8036, 8041, 8050, 8055, 411, 303, 4055, 0, + 4050, 0, 0, 0, 4060, 383, 8109, 8090, 8091, 8089, + 8125, 8134, 8138, 8163, 377, 4143, 0, 0, 4091, 363, + 4162, 8177, 8178, 8182, 333, 4108, 0, 330, 4111, 8212, + 331, 4100, 328, 4102, 327, 4104, 326, 4108, 309, 4137, + 283, 4139, 273, 4138, 242, 4147, 241, 4193, 239, 4195, + 226, 8316, 223, 0, 196, 191, 181, 176, 8316, 0, + 8316, 8285, 8290, 186, 8295, 8300, 8305, 8310 } ; -static const flex_int16_t yy_def[1247] = +static const flex_int16_t yy_def[1279] = { 0, - 1239, 1, 1240, 1240, 1239, 5, 1239, 1239, 1239, 1239, - 1239, 1241, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1239, 1243, 1239, 1244, 1244, 1239, - 1244, 1245, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, - 1246, 1246, 62, 62, 62, 62, 65, 62, 65, 62, + 1271, 1, 1272, 1272, 1271, 5, 1271, 1271, 1271, 1271, + 1271, 1273, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1271, 1275, 1271, 1276, 1276, 1271, + 1276, 1277, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, + 1278, 1278, 62, 62, 62, 62, 65, 62, 65, 62, 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, - 65, 62, 62, 62, 1244, 1239, 1239, 1241, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1242, 1242, 1242, - - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1239, 1243, 1239, 1244, 1244, 1244, 1245, 1244, 1244, 1244, - 1244, 1244, 1244, 1244, 1244, 1244, 62, 62, 62, 65, - - 65, 65, 65, 65, 65, 62, 62, 65, 65, 65, - 62, 62, 65, 65, 65, 62, 65, 65, 65, 62, - 65, 65, 62, 62, 62, 65, 62, 62, 65, 65, - 65, 65, 62, 62, 65, 65, 62, 62, 62, 62, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, - 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, - 62, 62, 62, 62, 65, 62, 62, 62, 62, 1244, - 1239, 1239, 1239, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - - 1244, 1244, 1244, 62, 62, 62, 62, 65, 65, 65, - 65, 62, 62, 62, 62, 65, 65, 62, 62, 62, - 62, 62, 62, 62, 65, 62, 65, 65, 62, 62, + 65, 62, 62, 62, 1276, 1271, 1271, 1273, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1271, 1275, 1271, 1276, 1276, 1276, 1277, 1276, + 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 62, 62, + + 62, 65, 65, 65, 65, 65, 65, 62, 62, 65, + 65, 65, 62, 62, 65, 65, 65, 62, 65, 65, + 65, 62, 65, 65, 62, 62, 62, 65, 62, 62, + 65, 65, 65, 65, 62, 62, 65, 65, 62, 62, + 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, + 65, 62, 62, 62, 62, 62, 62, 62, 65, 62, + 62, 62, 62, 1276, 1271, 1271, 1271, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 1276, 1276, + 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, + 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, + 62, 65, 62, 65, 65, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, - 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 1239, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1244, 65, 65, - 62, 62, 62, 65, 62, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 65, 65, 65, 62, + 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1276, 65, 65, 62, 62, 62, 65, 62, 65, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, + 65, 65, 65, 62, 62, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, + 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, - 65, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 62, 65, 1239, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1244, 65, 65, 65, 65, 62, + 62, 62, 62, 65, 65, 62, 62, 62, 65, 62, + 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, + 62, 65, 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1276, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, - 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, - 65, 65, 65, 65, 65, 62, 62, 62, 62, 65, - 65, 65, 65, 65, 1239, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - - 1244, 62, 62, 65, 65, 65, 62, 62, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 62, 62, 65, 65, 65, 65, 65, - 65, 65, 65, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 62, 65, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 65, 62, 62, 62, + 62, 65, 65, 65, 65, 65, 1271, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1276, 62, 62, 65, 65, 65, + 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, + 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, + 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 1239, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, + 65, 65, 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1242, 1242, 1242, 1242, 1244, 65, 65, 65, 65, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 65, 65, 65, 65, 62, 62, 62, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1276, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1239, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1244, + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1239, 1242, 1242, 1242, - 1242, 1242, 1242, 1242, 1244, 62, 62, 62, 65, 65, - 65, 62, 1239, 1239, 1242, 1242, 1242, 1244, 1244, 62, - - 62, 65, 1239, 1239, 1242, 1244, 1244, 65, 1239, 1239, - 1244, 1244, 1239, 1239, 1244, 1244, 1239, 1239, 1244, 1244, - 1239, 1239, 1244, 1244, 1239, 1239, 1244, 1244, 1239, 1239, - 1244, 1244, 1239, 1244, 1239, 1244, 1239, 1244, 0, 1239, - 1239, 1239, 1239, 1239, 1239, 1239 + 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, + + 65, 65, 62, 62, 62, 62, 1271, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1276, 62, 62, 62, 65, + 65, 65, 65, 62, 1271, 1271, 1274, 1274, 1274, 1276, + 1276, 62, 62, 65, 1271, 1271, 1274, 1276, 1276, 65, + 1271, 1271, 1276, 1276, 1271, 1271, 1276, 1276, 1271, 1271, + 1276, 1276, 1271, 1271, 1276, 1276, 1271, 1271, 1276, 1276, + 1271, 1271, 1276, 1276, 1271, 1276, 1271, 1276, 1271, 1276, + 0, 1271, 1271, 1271, 1271, 1271, 1271, 1271 } ; -static const flex_int16_t yy_nxt[8294] = +static const flex_int16_t yy_nxt[8393] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, @@ -1069,903 +1079,914 @@ static const flex_int16_t yy_nxt[8294] = 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, - 95, 99, 105, 100, 185, 86, 106, 109, 138, 101, - 98, 102, 107, 1238, 110, 103, 104, 139, 1237, 180, + 95, 99, 105, 100, 187, 86, 106, 109, 138, 101, + 98, 102, 107, 1270, 110, 103, 104, 139, 1269, 182, - 1236, 111, 108, 113, 112, 1235, 128, 114, 99, 105, + 1268, 111, 108, 113, 112, 1267, 128, 114, 99, 105, 100, 115, 129, 106, 109, 138, 101, 116, 102, 107, - 117, 110, 103, 104, 139, 118, 180, 119, 111, 108, - 113, 112, 120, 128, 114, 178, 179, 121, 115, 129, - 1234, 140, 130, 1233, 116, 141, 188, 117, 86, 86, - 131, 142, 118, 1231, 119, 1229, 132, 189, 1227, 120, - 193, 194, 178, 179, 121, 122, 86, 86, 140, 130, - 146, 143, 141, 123, 284, 144, 124, 131, 142, 125, - 133, 145, 126, 132, 147, 127, 134, 135, 136, 1225, - 148, 149, 122, 137, 1223, 157, 285, 146, 143, 158, - - 123, 284, 144, 124, 1221, 159, 125, 133, 145, 126, - 154, 147, 127, 134, 135, 136, 150, 148, 149, 290, - 137, 155, 157, 285, 151, 291, 158, 156, 152, 295, - 296, 153, 159, 173, 1219, 174, 1217, 154, 175, 176, - 1215, 299, 1213, 150, 185, 86, 290, 177, 155, 1194, - 1194, 151, 291, 1211, 156, 152, 295, 296, 153, 160, - 173, 161, 174, 297, 162, 175, 176, 163, 299, 164, - 298, 165, 166, 1209, 177, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 286, 160, 1206, 161, 288, - 297, 162, 289, 287, 163, 315, 164, 298, 165, 166, - - 167, 304, 316, 227, 168, 197, 317, 169, 170, 228, - 197, 305, 286, 318, 171, 197, 288, 172, 1203, 289, - 287, 1198, 315, 1193, 1185, 1177, 1160, 167, 304, 316, - 227, 168, 197, 317, 169, 170, 228, 197, 305, 1143, - 318, 171, 197, 1105, 172, 191, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 184, 184, 319, 184, - 184, 184, 184, 184, 184, 325, 229, 326, 1067, 1001, - 197, 935, 292, 293, 230, 184, 184, 184, 197, 306, - 231, 198, 197, 199, 307, 319, 294, 327, 237, 200, - 197, 201, 325, 229, 326, 202, 203, 197, 197, 292, - - 293, 230, 313, 314, 845, 197, 306, 231, 198, 197, - 199, 307, 755, 294, 327, 237, 200, 197, 201, 638, - 328, 521, 202, 203, 402, 197, 401, 282, 281, 313, - 314, 184, 184, 184, 280, 184, 184, 184, 184, 184, - 184, 196, 195, 329, 238, 239, 242, 328, 197, 240, - 243, 184, 184, 184, 197, 241, 244, 330, 204, 300, - 301, 302, 205, 303, 197, 197, 197, 197, 206, 197, - 329, 238, 239, 242, 197, 197, 240, 243, 207, 197, - 184, 197, 241, 244, 330, 204, 300, 301, 302, 205, - 303, 197, 197, 197, 197, 206, 197, 331, 186, 256, - - 279, 197, 332, 257, 197, 207, 197, 184, 208, 258, - 197, 333, 197, 335, 334, 209, 197, 336, 337, 197, - 197, 338, 210, 343, 331, 211, 256, 279, 183, 332, - 257, 197, 197, 181, 344, 208, 258, 197, 333, 197, - 335, 334, 209, 197, 336, 337, 197, 197, 338, 210, - 343, 197, 211, 272, 345, 273, 346, 97, 274, 197, - 212, 344, 275, 197, 213, 347, 197, 348, 214, 352, - 276, 353, 354, 355, 215, 358, 197, 216, 197, 359, - 272, 345, 273, 346, 197, 274, 197, 212, 360, 275, - 197, 213, 347, 197, 348, 214, 352, 276, 353, 354, - - 355, 215, 358, 197, 216, 96, 359, 87, 1239, 47, - 361, 197, 197, 197, 197, 360, 197, 277, 278, 217, - 339, 218, 197, 362, 197, 356, 219, 363, 357, 364, - 340, 220, 197, 47, 197, 341, 342, 361, 1239, 197, - 1239, 197, 370, 197, 277, 278, 217, 339, 218, 197, - 362, 197, 356, 219, 363, 357, 364, 340, 220, 197, - 221, 197, 341, 342, 197, 308, 371, 309, 222, 370, - 310, 223, 372, 320, 224, 321, 311, 225, 365, 322, - 226, 1239, 366, 312, 197, 1239, 323, 221, 1239, 1239, - 324, 197, 308, 371, 309, 222, 378, 310, 223, 372, - - 320, 224, 321, 311, 225, 365, 322, 226, 367, 366, - 312, 197, 232, 323, 349, 373, 350, 324, 233, 234, - 235, 368, 376, 378, 374, 236, 369, 351, 379, 380, - 197, 1239, 375, 381, 382, 367, 377, 1239, 385, 232, - 386, 349, 373, 350, 387, 233, 234, 235, 368, 376, - 388, 374, 236, 369, 351, 379, 380, 197, 245, 375, - 381, 382, 197, 377, 383, 385, 197, 386, 392, 393, - 389, 387, 246, 390, 394, 384, 391, 388, 247, 248, - 395, 396, 197, 1239, 398, 245, 399, 400, 522, 197, - 523, 383, 524, 197, 397, 392, 393, 389, 1239, 246, - - 390, 394, 384, 391, 525, 247, 248, 395, 396, 197, - 249, 398, 526, 399, 400, 522, 197, 523, 250, 524, - 527, 397, 251, 197, 528, 252, 529, 530, 197, 1239, - 1239, 525, 1239, 1239, 1239, 1239, 1239, 249, 1239, 526, - 1239, 531, 1239, 197, 535, 250, 1239, 527, 536, 251, - 197, 528, 252, 529, 530, 197, 253, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 254, 531, 197, - 537, 535, 538, 255, 197, 536, 539, 1239, 540, 197, - 1239, 1239, 1239, 253, 283, 283, 283, 283, 283, 283, - 283, 283, 283, 283, 254, 1239, 197, 537, 541, 538, - - 255, 197, 1239, 539, 197, 540, 197, 259, 197, 260, - 542, 543, 261, 197, 197, 262, 1239, 263, 544, 264, - 265, 1239, 404, 197, 197, 541, 545, 197, 546, 197, - 1239, 197, 549, 197, 259, 197, 260, 542, 543, 261, - 197, 197, 262, 197, 263, 544, 264, 265, 197, 404, - 197, 197, 197, 545, 197, 546, 197, 266, 197, 549, - 197, 267, 547, 405, 268, 269, 550, 551, 197, 552, - 197, 270, 553, 554, 271, 197, 555, 548, 556, 197, - 557, 197, 1239, 1239, 266, 197, 1239, 1239, 267, 547, - 405, 268, 269, 550, 551, 197, 552, 1239, 270, 553, - - 554, 271, 1239, 555, 548, 556, 1239, 557, 197, 92, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 406, 558, 197, 197, 559, 197, 560, 197, 407, - 410, 197, 1239, 197, 1239, 561, 197, 283, 283, 283, - 283, 283, 283, 283, 283, 283, 283, 1239, 406, 558, - 197, 197, 559, 197, 560, 197, 407, 410, 197, 411, - 197, 408, 561, 197, 409, 532, 415, 533, 197, 562, - - 197, 197, 197, 197, 197, 197, 563, 1239, 197, 197, - 197, 1239, 534, 197, 197, 1239, 411, 1239, 408, 564, - 1239, 409, 532, 415, 533, 197, 562, 197, 197, 197, - 197, 197, 197, 563, 197, 197, 197, 197, 197, 534, - 197, 197, 412, 413, 416, 565, 564, 197, 197, 566, - 197, 197, 1239, 567, 197, 197, 414, 197, 568, 1239, - 197, 197, 569, 1239, 1239, 197, 1239, 197, 1239, 412, - 413, 416, 565, 570, 197, 197, 566, 197, 197, 419, - 567, 197, 197, 414, 197, 568, 417, 197, 197, 569, - 197, 424, 197, 418, 197, 197, 571, 197, 197, 572, - - 570, 425, 197, 1239, 1239, 1239, 419, 1239, 1239, 573, - 1239, 197, 1239, 417, 1239, 197, 1239, 197, 424, 197, - 418, 1239, 197, 571, 197, 197, 572, 574, 425, 197, - 420, 421, 422, 575, 423, 197, 573, 197, 197, 197, - 576, 197, 197, 197, 577, 197, 580, 433, 434, 581, - 426, 582, 583, 197, 574, 427, 1239, 420, 421, 422, - 575, 423, 197, 1239, 197, 1239, 197, 576, 197, 197, - 197, 577, 197, 580, 433, 434, 581, 426, 582, 583, - 197, 584, 427, 428, 585, 429, 588, 589, 430, 590, - 197, 197, 197, 197, 431, 591, 197, 197, 437, 435, - - 1239, 432, 197, 197, 1239, 1239, 197, 592, 584, 1239, - 428, 585, 429, 588, 589, 430, 590, 197, 197, 197, - 197, 431, 591, 197, 197, 437, 435, 197, 432, 197, - 197, 197, 197, 197, 592, 438, 197, 436, 578, 593, - 439, 594, 447, 197, 595, 197, 596, 197, 579, 197, - 197, 197, 197, 1239, 197, 197, 197, 597, 197, 197, - 1239, 197, 438, 197, 436, 578, 593, 439, 594, 447, - 197, 595, 197, 596, 197, 579, 197, 197, 197, 197, - 586, 1239, 197, 197, 597, 445, 1239, 197, 197, 440, - 587, 441, 197, 1239, 598, 442, 446, 197, 197, 599, - - 197, 197, 443, 197, 197, 1239, 444, 586, 197, 1239, - 197, 197, 445, 448, 197, 1239, 440, 587, 441, 197, - 197, 598, 442, 446, 197, 197, 599, 197, 197, 443, - 197, 197, 197, 444, 600, 197, 197, 197, 197, 450, - 448, 197, 449, 601, 197, 197, 197, 197, 197, 197, - 602, 197, 197, 603, 451, 452, 1239, 604, 1239, 197, - 1239, 600, 1239, 197, 197, 197, 450, 1239, 197, 449, - 601, 197, 197, 197, 605, 197, 197, 602, 197, 197, - 603, 451, 452, 197, 604, 197, 606, 197, 607, 455, - 453, 197, 197, 454, 197, 197, 197, 608, 197, 197, - - 1239, 605, 1239, 197, 609, 456, 1239, 1239, 197, 610, - 197, 1239, 197, 606, 197, 607, 455, 453, 1239, 611, - 454, 197, 197, 197, 608, 197, 197, 197, 612, 197, - 197, 609, 456, 197, 197, 197, 610, 457, 197, 197, - 613, 614, 197, 197, 615, 197, 611, 463, 197, 458, - 1239, 1239, 197, 197, 197, 612, 197, 197, 197, 1239, - 197, 197, 616, 617, 457, 197, 197, 613, 614, 197, - 197, 615, 197, 197, 463, 197, 458, 464, 197, 197, - 197, 1239, 197, 197, 197, 197, 459, 1239, 197, 616, - 617, 1239, 1239, 197, 197, 618, 460, 1239, 465, 619, - - 197, 461, 462, 620, 464, 197, 197, 197, 466, 197, - 197, 197, 197, 459, 197, 197, 621, 197, 472, 197, - 197, 197, 618, 460, 197, 465, 619, 197, 461, 462, - 620, 622, 1239, 197, 197, 466, 1239, 1239, 197, 197, - 197, 197, 473, 621, 197, 472, 197, 197, 1239, 627, - 1239, 197, 197, 1239, 197, 197, 1239, 628, 622, 197, - 485, 467, 623, 468, 486, 197, 1239, 197, 629, 473, - 197, 624, 630, 197, 197, 197, 627, 498, 1239, 197, - 197, 1239, 197, 197, 628, 631, 197, 485, 467, 623, - 468, 486, 197, 197, 1239, 629, 1239, 197, 624, 630, - - 197, 632, 197, 469, 498, 470, 197, 197, 474, 625, - 197, 626, 631, 197, 197, 197, 471, 197, 197, 633, - 197, 197, 197, 475, 636, 634, 197, 197, 632, 635, - 469, 1239, 470, 197, 637, 474, 625, 756, 626, 1239, - 197, 197, 197, 471, 197, 197, 633, 757, 197, 197, - 475, 636, 634, 197, 197, 197, 635, 197, 478, 1239, - 197, 637, 197, 476, 756, 197, 477, 197, 479, 1239, - 197, 197, 758, 197, 757, 1239, 759, 1239, 197, 197, - 1239, 197, 197, 197, 197, 478, 197, 197, 1239, 197, - 476, 197, 197, 477, 197, 479, 480, 197, 197, 758, - - 197, 760, 197, 759, 197, 197, 197, 481, 197, 197, - 197, 1239, 761, 197, 197, 197, 762, 197, 197, 1239, - 763, 1239, 197, 480, 1239, 764, 1239, 197, 760, 197, - 1239, 197, 1239, 765, 481, 766, 197, 767, 197, 761, - 197, 197, 197, 762, 197, 197, 482, 763, 484, 197, - 197, 197, 764, 197, 197, 768, 769, 483, 197, 197, - 765, 197, 766, 197, 767, 197, 197, 197, 1239, 770, - 771, 197, 197, 482, 772, 484, 487, 197, 197, 1239, - 197, 1239, 768, 769, 483, 197, 197, 197, 197, 488, - 197, 1239, 773, 197, 489, 490, 770, 771, 197, 197, - - 197, 772, 197, 487, 774, 1239, 491, 197, 197, 1239, - 775, 1239, 197, 197, 197, 1239, 488, 776, 197, 773, - 1239, 489, 490, 777, 1239, 1239, 197, 197, 1239, 197, - 778, 774, 492, 491, 197, 197, 197, 775, 197, 197, - 197, 779, 505, 197, 776, 197, 197, 496, 197, 1239, - 777, 197, 197, 780, 781, 197, 782, 778, 1239, 492, - 1239, 497, 197, 197, 1239, 197, 1239, 1239, 779, 505, - 197, 197, 783, 197, 496, 197, 493, 1239, 197, 197, - 780, 781, 197, 782, 1239, 494, 499, 197, 497, 197, - 197, 197, 197, 495, 197, 197, 1239, 197, 197, 783, - - 197, 197, 1239, 493, 500, 784, 1239, 785, 786, 1239, - 197, 197, 494, 499, 197, 787, 788, 197, 197, 197, - 495, 197, 197, 502, 197, 501, 197, 197, 197, 197, - 197, 500, 784, 197, 785, 786, 197, 197, 197, 197, - 1239, 1239, 787, 788, 1239, 789, 197, 1239, 790, 197, - 502, 197, 501, 197, 791, 197, 197, 197, 792, 506, - 197, 197, 793, 197, 1239, 794, 197, 197, 503, 197, - 795, 197, 789, 197, 197, 790, 197, 1239, 197, 504, - 197, 791, 197, 796, 197, 792, 506, 1239, 197, 793, - 197, 507, 794, 797, 197, 503, 197, 795, 197, 1239, - - 197, 197, 1239, 512, 197, 1239, 504, 197, 197, 1239, - 796, 197, 1239, 798, 197, 1239, 799, 197, 507, 197, - 797, 1239, 800, 510, 197, 1239, 511, 197, 508, 197, - 512, 197, 197, 801, 197, 197, 197, 802, 513, 197, - 798, 197, 197, 799, 197, 1239, 197, 1239, 509, 800, - 510, 197, 197, 511, 197, 508, 197, 1239, 803, 197, - 801, 197, 804, 197, 802, 513, 197, 1239, 805, 197, - 514, 197, 197, 806, 516, 509, 515, 197, 197, 197, - 809, 197, 197, 810, 197, 803, 518, 517, 197, 804, - 197, 811, 197, 1239, 197, 805, 197, 514, 197, 197, - - 806, 516, 1239, 515, 197, 197, 197, 809, 197, 197, - 810, 197, 197, 518, 517, 197, 197, 197, 811, 197, - 520, 197, 197, 197, 197, 197, 812, 519, 197, 641, - 813, 197, 197, 197, 197, 197, 197, 807, 808, 197, - 814, 197, 815, 197, 197, 1239, 1239, 520, 1239, 197, - 1239, 197, 1239, 812, 519, 197, 641, 813, 197, 197, - 1239, 197, 1239, 197, 807, 808, 1239, 814, 197, 815, - 816, 197, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 639, 197, 640, 1239, 197, 197, 197, 197, - 1239, 197, 197, 197, 197, 1239, 197, 816, 817, 818, - - 819, 197, 197, 197, 197, 197, 1239, 197, 1239, 639, - 197, 640, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 642, 197, 1239, 817, 818, 819, 197, 197, - 197, 197, 197, 197, 197, 197, 820, 197, 197, 197, - 197, 197, 644, 821, 197, 197, 1239, 643, 197, 642, - 1239, 197, 822, 823, 824, 646, 1239, 197, 197, 825, - 197, 197, 197, 820, 197, 197, 1239, 197, 197, 644, - 821, 197, 197, 197, 643, 197, 826, 197, 197, 822, - 823, 824, 646, 197, 197, 197, 825, 647, 197, 197, - 648, 645, 197, 197, 197, 827, 1239, 197, 197, 197, - - 197, 828, 197, 826, 197, 1239, 1239, 829, 1239, 1239, - 197, 830, 1239, 831, 647, 1239, 197, 648, 645, 197, - 197, 197, 827, 197, 197, 1239, 197, 197, 828, 197, - 649, 197, 650, 197, 829, 197, 197, 832, 830, 653, - 831, 197, 197, 197, 652, 197, 1239, 651, 833, 197, - 197, 197, 197, 654, 197, 197, 1239, 649, 197, 650, - 197, 1239, 197, 197, 832, 197, 653, 834, 197, 197, - 197, 652, 197, 197, 651, 833, 197, 197, 197, 197, - 654, 197, 197, 197, 835, 197, 659, 836, 655, 837, - 197, 197, 197, 197, 834, 657, 197, 838, 1239, 197, - - 197, 656, 839, 197, 197, 1239, 197, 840, 197, 197, - 197, 835, 197, 659, 836, 655, 837, 197, 197, 197, - 197, 1239, 657, 197, 838, 197, 197, 197, 656, 839, - 197, 841, 658, 197, 840, 842, 197, 197, 197, 843, - 197, 661, 844, 197, 1239, 660, 197, 936, 197, 937, - 197, 197, 197, 197, 197, 662, 1239, 938, 841, 658, - 1239, 197, 842, 939, 197, 197, 843, 197, 661, 844, - 197, 197, 660, 940, 936, 197, 937, 197, 197, 663, - 197, 664, 662, 197, 938, 197, 1239, 197, 197, 941, - 939, 197, 1239, 197, 942, 943, 665, 944, 197, 945, - - 940, 197, 1239, 197, 946, 666, 663, 197, 664, 667, - 197, 197, 197, 197, 197, 1239, 941, 197, 197, 197, - 197, 942, 943, 665, 944, 947, 945, 197, 197, 197, - 197, 946, 666, 197, 197, 948, 667, 197, 197, 949, - 197, 950, 669, 197, 197, 197, 197, 197, 668, 197, - 1239, 197, 947, 197, 197, 197, 197, 197, 670, 1239, - 197, 951, 948, 1239, 197, 197, 949, 197, 950, 669, - 197, 952, 197, 671, 197, 668, 197, 197, 197, 1239, - 197, 953, 197, 197, 197, 670, 197, 672, 951, 954, - 197, 197, 197, 197, 197, 197, 197, 955, 952, 673, - - 671, 197, 956, 197, 197, 1239, 197, 1239, 953, 197, - 197, 197, 1239, 197, 672, 957, 954, 197, 197, 197, - 197, 1239, 197, 197, 955, 674, 673, 197, 197, 956, - 197, 197, 197, 197, 197, 1239, 197, 197, 197, 675, - 1239, 676, 957, 197, 197, 1239, 197, 197, 197, 1239, - 958, 1239, 674, 197, 197, 1239, 1239, 959, 197, 197, - 197, 197, 197, 960, 197, 1239, 675, 678, 676, 1239, - 197, 197, 197, 1239, 197, 197, 197, 958, 197, 1239, - 197, 679, 677, 197, 959, 197, 961, 197, 197, 197, - 960, 197, 680, 962, 678, 1239, 197, 963, 1239, 197, - - 197, 197, 1239, 197, 1239, 197, 197, 964, 679, 677, - 197, 1239, 197, 961, 1239, 197, 197, 965, 197, 680, - 962, 197, 197, 197, 963, 197, 197, 197, 197, 681, - 682, 197, 197, 197, 964, 966, 967, 1239, 683, 1239, - 197, 197, 197, 197, 965, 197, 1239, 970, 197, 197, - 197, 971, 197, 197, 684, 1239, 681, 682, 197, 197, - 1239, 972, 966, 967, 197, 683, 197, 197, 197, 197, - 973, 197, 197, 197, 970, 197, 197, 197, 971, 1239, - 197, 684, 685, 686, 974, 197, 197, 197, 972, 197, - 687, 197, 1239, 197, 197, 1239, 197, 973, 197, 197, - - 197, 1239, 197, 197, 1239, 975, 197, 197, 1239, 685, - 686, 974, 197, 197, 197, 197, 197, 687, 197, 197, - 1239, 197, 197, 197, 976, 197, 197, 1239, 197, 1239, - 688, 689, 975, 197, 977, 197, 1239, 1239, 197, 1239, - 978, 1239, 197, 197, 197, 197, 197, 197, 197, 197, - 690, 976, 197, 691, 197, 197, 692, 688, 689, 1239, - 197, 977, 197, 197, 197, 197, 197, 978, 693, 694, - 197, 197, 197, 197, 197, 197, 197, 690, 197, 197, - 691, 197, 695, 692, 979, 980, 197, 197, 197, 197, - 197, 197, 696, 197, 197, 693, 694, 981, 197, 197, - - 197, 1239, 197, 197, 197, 197, 197, 1239, 982, 695, - 697, 979, 980, 197, 197, 197, 197, 1239, 983, 696, - 197, 197, 698, 1239, 981, 197, 197, 197, 197, 197, - 700, 197, 197, 197, 197, 982, 1239, 697, 197, 1239, - 197, 197, 984, 985, 197, 983, 197, 197, 986, 698, - 197, 197, 699, 197, 197, 197, 197, 700, 987, 197, - 197, 197, 197, 702, 197, 197, 701, 197, 197, 984, - 985, 197, 197, 197, 197, 986, 988, 197, 197, 699, - 989, 990, 197, 197, 197, 987, 991, 1239, 992, 197, - 702, 197, 993, 701, 197, 197, 705, 968, 197, 197, - - 969, 197, 994, 988, 197, 1239, 995, 989, 990, 197, - 996, 197, 703, 991, 197, 992, 197, 1239, 997, 993, - 197, 197, 704, 705, 968, 197, 197, 969, 197, 994, - 706, 197, 197, 995, 998, 1239, 197, 996, 197, 703, - 197, 197, 1239, 197, 197, 997, 999, 197, 197, 704, - 197, 1239, 1000, 197, 197, 197, 707, 706, 197, 197, - 197, 998, 197, 197, 197, 197, 197, 197, 1068, 708, - 1069, 197, 197, 999, 197, 197, 1070, 197, 709, 1000, - 197, 197, 197, 707, 197, 197, 1071, 197, 1072, 197, - 197, 197, 1239, 197, 710, 1068, 708, 1069, 197, 197, - - 197, 197, 197, 1070, 1073, 709, 1239, 197, 197, 197, - 1074, 197, 711, 1071, 197, 1072, 1075, 197, 197, 197, - 1239, 710, 1076, 1077, 197, 197, 197, 197, 197, 197, - 1078, 1073, 712, 197, 1079, 197, 1080, 1074, 197, 711, - 197, 197, 197, 1075, 714, 197, 197, 713, 197, 1076, - 1077, 197, 197, 197, 197, 197, 1081, 1078, 715, 712, - 197, 1079, 197, 1080, 197, 197, 1082, 197, 197, 197, - 1239, 714, 716, 1083, 713, 197, 197, 1239, 197, 197, - 197, 197, 1084, 1081, 1239, 715, 197, 1085, 1086, 197, - 197, 197, 717, 1082, 1239, 197, 197, 197, 1087, 716, - - 1083, 1088, 197, 197, 197, 197, 197, 197, 718, 1084, - 1089, 197, 1239, 197, 1085, 1086, 197, 197, 1090, 717, - 197, 719, 197, 197, 197, 1087, 1091, 197, 1088, 197, - 1239, 197, 197, 197, 720, 718, 197, 1089, 197, 721, - 1092, 197, 1093, 197, 1094, 1090, 197, 197, 719, 197, - 197, 1239, 197, 1091, 197, 1239, 1095, 197, 1239, 197, - 1096, 720, 197, 197, 1097, 1239, 721, 1092, 197, 1093, - 1098, 1094, 1239, 197, 197, 1099, 197, 197, 724, 197, - 197, 197, 722, 1095, 197, 197, 197, 1096, 723, 197, - 197, 1097, 197, 1239, 197, 1239, 725, 1098, 1100, 197, - - 197, 197, 1099, 197, 197, 724, 197, 197, 197, 722, - 197, 1239, 197, 197, 197, 723, 197, 197, 727, 197, - 726, 197, 197, 725, 1101, 1100, 197, 197, 197, 1102, - 197, 197, 197, 197, 1103, 1104, 197, 197, 197, 1144, - 197, 197, 197, 197, 197, 727, 1145, 726, 1146, 197, - 197, 1101, 197, 728, 197, 197, 1102, 197, 197, 197, - 197, 1103, 1104, 197, 197, 197, 1144, 197, 1147, 197, - 1239, 197, 729, 1145, 197, 1146, 1148, 197, 197, 197, - 728, 197, 197, 1149, 1150, 197, 1239, 197, 197, 730, - 731, 197, 197, 1239, 1151, 1147, 1152, 197, 197, 729, - - 1239, 197, 197, 1148, 1153, 197, 197, 1154, 197, 197, - 1149, 1150, 1155, 197, 732, 197, 730, 731, 197, 197, - 197, 1151, 197, 1152, 197, 197, 1156, 197, 733, 197, - 1157, 1153, 197, 197, 1154, 197, 734, 1239, 197, 1155, - 197, 732, 1158, 197, 197, 197, 197, 197, 197, 197, - 1159, 197, 736, 1156, 197, 733, 197, 1157, 1178, 197, - 197, 1179, 197, 734, 735, 197, 1180, 197, 1181, 1158, - 197, 197, 197, 197, 197, 197, 737, 1159, 197, 736, - 738, 197, 1182, 197, 197, 1178, 197, 197, 1179, 197, - 197, 735, 197, 1180, 197, 1181, 197, 1183, 1184, 197, - - 197, 197, 197, 737, 1195, 1196, 1197, 738, 197, 1182, - 1239, 197, 197, 197, 197, 1239, 739, 197, 1205, 197, - 1239, 197, 1239, 197, 1183, 1184, 197, 197, 740, 197, - 1239, 1195, 1196, 1197, 197, 197, 1210, 741, 197, 197, - 1212, 197, 197, 739, 742, 1205, 743, 197, 197, 1194, - 1194, 1239, 1239, 197, 197, 740, 197, 1199, 1194, 1239, - 197, 197, 197, 1210, 741, 197, 744, 1212, 1239, 197, - 1239, 742, 1239, 743, 197, 1239, 197, 197, 745, 746, - 1214, 197, 197, 197, 197, 1239, 197, 197, 197, 197, - 197, 1204, 197, 744, 1239, 197, 1239, 747, 1216, 1207, - - 197, 1239, 197, 197, 197, 745, 746, 1214, 1218, 197, - 1239, 197, 748, 197, 1239, 197, 197, 197, 1204, 197, - 1220, 197, 197, 197, 747, 1216, 1207, 197, 197, 197, - 197, 1222, 197, 197, 1224, 1218, 1226, 197, 1228, 748, - 1230, 749, 197, 1239, 197, 1239, 197, 1220, 197, 1239, - 197, 197, 750, 1239, 1232, 197, 197, 197, 1222, 197, - 197, 1224, 1239, 1226, 197, 1228, 1239, 1230, 749, 197, - 197, 197, 751, 197, 1239, 1239, 752, 197, 197, 750, - 753, 1232, 197, 197, 197, 1239, 197, 1239, 197, 1239, - 197, 197, 1239, 1239, 754, 197, 197, 197, 1239, 751, - - 197, 1239, 1239, 752, 197, 1239, 1239, 753, 1239, 197, - 1239, 197, 1239, 197, 1239, 197, 1239, 197, 197, 1239, - 1239, 754, 197, 197, 197, 197, 197, 197, 1239, 197, - 846, 197, 197, 1239, 197, 197, 197, 1239, 847, 197, - 1239, 1239, 1239, 1239, 197, 848, 1239, 1239, 1239, 1239, - 197, 197, 197, 197, 197, 1239, 197, 846, 197, 197, - 197, 197, 197, 197, 852, 847, 197, 1239, 197, 197, - 849, 197, 848, 197, 197, 1239, 197, 197, 851, 197, - 1239, 197, 850, 197, 197, 1239, 1239, 197, 197, 197, - 1239, 852, 197, 1239, 853, 197, 197, 849, 854, 197, - - 197, 197, 197, 197, 197, 851, 197, 1239, 197, 850, - 197, 197, 1239, 197, 1239, 197, 197, 197, 197, 197, - 1239, 853, 1239, 197, 855, 854, 197, 1239, 197, 197, - 1239, 197, 197, 197, 1239, 197, 1239, 197, 197, 1239, - 197, 197, 197, 1239, 197, 197, 197, 197, 197, 1239, - 197, 855, 197, 1239, 1239, 197, 1239, 197, 1239, 197, - 197, 1239, 197, 856, 197, 197, 1239, 197, 197, 197, - 1239, 197, 197, 197, 197, 197, 197, 197, 1239, 197, - 857, 197, 197, 1239, 197, 858, 1239, 197, 1239, 197, - 856, 197, 197, 1239, 197, 1239, 197, 1239, 197, 197, - - 197, 197, 1239, 197, 197, 1239, 197, 857, 197, 197, - 1239, 197, 858, 1239, 197, 197, 197, 1239, 197, 197, - 1239, 197, 1239, 197, 859, 197, 197, 197, 197, 197, - 870, 197, 197, 197, 197, 197, 197, 1239, 197, 861, - 860, 1239, 197, 197, 197, 197, 197, 1239, 197, 1239, - 1239, 859, 197, 197, 1239, 1239, 197, 870, 197, 197, - 1239, 197, 197, 197, 1239, 1239, 861, 860, 197, 1239, - 197, 197, 197, 197, 1239, 197, 862, 197, 1239, 197, - 197, 863, 1239, 197, 197, 1239, 1239, 1239, 197, 197, - 1239, 1239, 1239, 197, 1239, 197, 1239, 197, 1239, 1239, - - 1239, 1239, 197, 862, 197, 1239, 197, 197, 863, 1239, - 197, 197, 197, 864, 197, 197, 197, 1239, 1239, 197, - 197, 197, 1239, 197, 197, 1239, 1239, 1239, 197, 1239, - 865, 1239, 1239, 197, 1239, 197, 1239, 197, 1239, 197, - 864, 197, 197, 866, 1239, 867, 197, 197, 197, 1239, - 197, 197, 1239, 1239, 1239, 197, 197, 865, 197, 197, - 197, 197, 197, 197, 197, 868, 197, 1239, 197, 197, - 866, 197, 867, 869, 197, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 197, 197, 197, 197, 197, 1239, 197, 197, - 197, 1239, 868, 197, 197, 197, 1239, 1239, 197, 1239, - - 869, 871, 1239, 197, 1239, 197, 1239, 197, 197, 197, - 1239, 197, 197, 197, 1239, 1239, 197, 197, 1239, 1239, - 1239, 197, 1239, 1239, 197, 1239, 197, 1239, 871, 1239, - 197, 197, 197, 1239, 197, 197, 197, 1239, 1239, 197, - 197, 1239, 1239, 197, 197, 197, 1239, 872, 1239, 1239, - 197, 197, 197, 197, 197, 197, 873, 1239, 197, 197, - 1239, 1239, 1239, 197, 197, 1239, 197, 1239, 197, 1239, - 197, 1239, 197, 197, 872, 874, 1239, 197, 197, 197, - 1239, 197, 197, 873, 1239, 1239, 197, 1239, 876, 1239, - 1239, 197, 1239, 197, 1239, 197, 197, 1239, 197, 197, - - 197, 197, 874, 197, 875, 197, 197, 1239, 197, 877, - 1239, 197, 1239, 1239, 878, 876, 1239, 1239, 197, 1239, - 197, 1239, 197, 197, 197, 197, 197, 197, 197, 1239, - 197, 875, 197, 197, 197, 197, 877, 1239, 197, 1239, - 197, 878, 197, 1239, 197, 197, 197, 197, 1239, 197, - 197, 197, 197, 1239, 197, 1239, 1239, 879, 1239, 197, - 197, 197, 197, 1239, 880, 1239, 197, 197, 197, 197, - 197, 197, 197, 197, 1239, 1239, 197, 197, 197, 197, - 1239, 1239, 1239, 1239, 879, 1239, 197, 197, 197, 197, - 197, 880, 1239, 197, 197, 197, 1239, 197, 881, 197, - - 197, 1239, 197, 197, 1239, 197, 197, 197, 1239, 883, - 197, 1239, 197, 197, 197, 197, 1239, 197, 1239, 197, - 197, 197, 197, 1239, 197, 881, 1239, 197, 197, 197, - 197, 882, 197, 197, 197, 1239, 883, 197, 197, 197, - 197, 197, 1239, 1239, 1239, 1239, 197, 197, 197, 197, - 1239, 197, 1239, 1239, 197, 197, 197, 197, 882, 197, - 1239, 197, 197, 1239, 197, 197, 197, 197, 1239, 884, - 1239, 1239, 885, 1239, 197, 197, 197, 1239, 1239, 1239, - 1239, 197, 197, 197, 1239, 1239, 1239, 1239, 197, 197, - 1239, 197, 197, 197, 197, 1239, 884, 1239, 197, 885, - - 1239, 197, 1239, 197, 197, 1239, 197, 886, 197, 197, - 197, 1239, 197, 197, 197, 1239, 888, 197, 887, 197, - 1239, 197, 197, 1239, 1239, 197, 1239, 1239, 1239, 1239, - 1239, 197, 1239, 197, 886, 197, 1239, 197, 1239, 197, - 197, 197, 1239, 888, 197, 887, 197, 1239, 197, 197, - 1239, 1239, 889, 197, 1239, 197, 1239, 197, 197, 1239, - 1239, 1239, 197, 1239, 1239, 1239, 1239, 197, 1239, 1239, - 1239, 1239, 1239, 197, 1239, 197, 1239, 1239, 1239, 889, - 197, 1239, 197, 1239, 197, 197, 890, 1239, 892, 197, - 197, 197, 1239, 197, 197, 197, 1239, 891, 197, 197, - - 197, 197, 197, 197, 197, 1239, 197, 1239, 1239, 197, - 1239, 197, 1239, 890, 197, 892, 1239, 197, 197, 1239, - 197, 1239, 197, 1239, 891, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 1239, 197, 197, 893, 197, 1239, 197, 197, 197, 1239, - 1239, 1239, 1239, 197, 1239, 1239, 1239, 1239, 197, 197, - 1239, 197, 197, 1239, 197, 894, 197, 197, 1239, 197, - 893, 197, 197, 197, 197, 197, 1239, 197, 895, 1239, - 197, 1239, 197, 197, 1239, 197, 896, 197, 197, 1239, - 197, 1239, 894, 197, 197, 1239, 197, 1239, 197, 197, - - 197, 1239, 197, 197, 197, 895, 197, 897, 898, 197, - 197, 1239, 197, 896, 197, 197, 1239, 197, 1239, 1239, - 197, 1239, 1239, 197, 1239, 197, 1239, 197, 1239, 197, - 197, 1239, 899, 197, 897, 898, 197, 1239, 197, 197, - 197, 197, 197, 197, 1239, 901, 900, 197, 197, 1239, - 1239, 197, 197, 1239, 1239, 1239, 197, 1239, 1239, 899, - 197, 197, 1239, 197, 1239, 197, 197, 197, 197, 197, - 197, 1239, 901, 900, 197, 197, 197, 1239, 197, 197, - 902, 903, 197, 197, 1239, 197, 197, 197, 197, 1239, - 1239, 197, 197, 197, 1239, 1239, 1239, 1239, 1239, 1239, - - 1239, 197, 197, 197, 1239, 1239, 1239, 902, 903, 197, - 197, 197, 197, 197, 197, 197, 1239, 1239, 197, 197, - 197, 197, 1239, 904, 905, 1239, 1239, 1239, 197, 197, - 197, 197, 1239, 1239, 1239, 197, 197, 197, 197, 197, - 197, 197, 197, 906, 1239, 197, 197, 197, 197, 1239, - 904, 905, 1239, 1239, 1239, 197, 197, 197, 197, 1239, - 907, 908, 197, 197, 197, 197, 197, 197, 197, 197, - 906, 1239, 197, 197, 197, 197, 1239, 1239, 1239, 1239, - 1239, 1239, 197, 197, 197, 197, 1239, 907, 908, 197, - 197, 197, 197, 197, 197, 197, 197, 1239, 909, 197, - - 197, 197, 197, 1239, 1239, 1239, 1239, 1239, 1239, 197, - 197, 197, 197, 1239, 1239, 1239, 197, 197, 197, 197, - 197, 197, 197, 197, 1239, 909, 197, 197, 197, 197, - 1239, 910, 1239, 1239, 911, 1239, 197, 197, 197, 197, - 912, 1239, 1239, 197, 197, 197, 197, 197, 197, 197, - 197, 1239, 913, 197, 197, 197, 197, 1239, 910, 1239, - 1239, 911, 1239, 197, 197, 197, 197, 912, 1239, 1239, - 197, 197, 1239, 915, 197, 197, 197, 1239, 914, 913, - 197, 197, 197, 197, 197, 1239, 1239, 1239, 197, 197, - 197, 197, 916, 1239, 197, 1239, 197, 197, 1239, 1239, - - 915, 197, 197, 197, 1239, 914, 917, 197, 197, 197, - 197, 197, 197, 197, 1239, 197, 197, 197, 197, 916, - 1239, 197, 197, 197, 197, 1239, 197, 918, 197, 197, - 1239, 197, 197, 917, 197, 197, 1239, 197, 1239, 197, - 197, 1239, 197, 1239, 197, 197, 197, 197, 1239, 197, - 919, 920, 1239, 197, 918, 197, 197, 1239, 197, 197, - 1239, 197, 1239, 1239, 197, 1239, 197, 1239, 1239, 197, - 1239, 197, 1239, 197, 197, 197, 197, 919, 920, 197, - 197, 1239, 197, 197, 1239, 921, 197, 1239, 197, 1239, - 197, 1239, 1239, 197, 197, 197, 197, 197, 197, 197, - - 197, 1239, 197, 197, 922, 1239, 197, 197, 1239, 197, - 197, 1239, 921, 197, 1239, 1239, 1239, 197, 197, 1239, - 197, 197, 197, 197, 197, 923, 197, 197, 1239, 1239, - 197, 922, 197, 1239, 197, 1239, 197, 197, 1239, 197, - 1239, 1239, 924, 1239, 197, 197, 1239, 197, 197, 1239, - 925, 197, 923, 197, 1239, 197, 1239, 197, 197, 197, - 197, 197, 1239, 197, 1239, 1239, 197, 1239, 1239, 924, - 1239, 197, 197, 1239, 197, 197, 1239, 925, 197, 197, - 197, 926, 197, 1239, 197, 197, 197, 197, 197, 927, - 197, 1239, 1239, 197, 928, 1239, 1239, 1239, 197, 197, - - 197, 197, 197, 1239, 1239, 1239, 197, 197, 926, 1239, - 1239, 197, 197, 197, 1239, 197, 927, 1239, 930, 929, - 197, 928, 197, 1239, 197, 197, 197, 197, 197, 197, - 1239, 197, 1239, 1239, 197, 1239, 197, 197, 197, 197, - 931, 197, 1239, 1239, 1239, 930, 929, 197, 1239, 197, - 197, 197, 1239, 197, 197, 197, 1239, 197, 197, 1239, - 197, 1239, 197, 197, 197, 197, 197, 931, 197, 1239, - 197, 1239, 197, 1239, 197, 197, 933, 197, 932, 197, - 197, 197, 197, 1239, 197, 197, 197, 197, 197, 197, - 1239, 1239, 197, 197, 1239, 197, 197, 197, 197, 197, - - 1239, 1239, 197, 933, 1239, 932, 197, 197, 197, 197, - 1239, 1239, 197, 197, 197, 197, 197, 1239, 1239, 197, - 1239, 934, 197, 197, 1239, 197, 197, 197, 1239, 197, - 197, 1239, 197, 1239, 197, 197, 1239, 197, 197, 197, - 197, 197, 197, 197, 1239, 197, 1239, 1239, 934, 1239, - 197, 1239, 1002, 197, 197, 1239, 197, 197, 1239, 197, - 1239, 197, 1239, 1239, 197, 197, 197, 197, 197, 197, - 197, 1239, 197, 1239, 1003, 197, 1239, 197, 197, 1002, - 197, 1239, 1239, 197, 197, 1239, 1004, 197, 1239, 1239, - 197, 1239, 1239, 197, 197, 197, 197, 197, 1239, 1239, - - 1239, 1003, 197, 197, 1239, 197, 197, 197, 1239, 1239, - 197, 197, 197, 1004, 197, 1239, 197, 197, 1239, 1239, - 197, 197, 197, 197, 1007, 197, 1239, 1005, 1239, 197, - 197, 1239, 197, 197, 1006, 197, 1239, 1239, 197, 197, - 1239, 1239, 197, 197, 1239, 197, 1239, 1239, 197, 197, - 1239, 1007, 197, 1239, 1005, 1239, 197, 1239, 197, 197, - 1239, 1006, 197, 1239, 1008, 197, 197, 1239, 1239, 197, - 197, 197, 197, 1009, 1239, 197, 197, 1239, 197, 1239, - 197, 1239, 197, 197, 1239, 197, 197, 197, 1010, 1239, - 1239, 1008, 197, 197, 1239, 1239, 1239, 197, 197, 1239, - - 1009, 1239, 197, 197, 1239, 197, 197, 197, 1239, 197, - 197, 1239, 1011, 197, 197, 1010, 1012, 197, 1239, 197, - 197, 197, 197, 1239, 1239, 1239, 197, 197, 1239, 197, - 197, 197, 1239, 197, 1013, 197, 197, 197, 1239, 1011, - 197, 1014, 1239, 1012, 197, 1239, 1239, 197, 197, 197, - 197, 197, 1015, 197, 197, 1239, 197, 197, 197, 1239, - 197, 1013, 197, 197, 197, 1239, 197, 197, 1014, 1239, - 1239, 1239, 1239, 1016, 1239, 197, 197, 197, 197, 1015, - 197, 1239, 1239, 197, 1017, 197, 197, 197, 197, 1239, - 197, 1239, 1239, 197, 197, 1239, 197, 1239, 1239, 1239, - - 1016, 1239, 197, 197, 197, 1239, 197, 197, 1239, 1239, - 197, 1017, 197, 197, 1018, 197, 1239, 197, 1239, 1239, - 197, 197, 1021, 197, 197, 1022, 197, 1239, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 1020, 1019, - 1239, 1018, 197, 197, 197, 197, 1239, 197, 197, 1021, - 1239, 197, 1022, 197, 1239, 197, 197, 197, 1239, 197, - 1239, 197, 197, 197, 197, 1020, 1019, 1239, 197, 197, - 197, 197, 197, 197, 197, 197, 1239, 197, 197, 1023, - 197, 1239, 197, 197, 197, 1025, 1026, 1239, 1024, 1239, - 197, 197, 197, 197, 1239, 197, 1239, 1239, 1239, 1239, - - 197, 197, 197, 1239, 197, 197, 1023, 197, 1239, 197, - 197, 197, 1025, 1026, 1239, 1024, 1027, 197, 197, 197, - 197, 197, 197, 1239, 1239, 197, 197, 1239, 197, 197, - 197, 197, 1239, 1239, 1239, 1029, 197, 197, 197, 1239, - 1239, 197, 197, 1027, 1239, 197, 197, 197, 197, 197, - 1239, 1239, 197, 197, 1239, 197, 197, 197, 197, 1239, - 197, 1239, 1029, 197, 197, 197, 197, 1239, 197, 197, - 197, 1028, 197, 197, 197, 1239, 197, 197, 197, 1030, - 197, 1239, 197, 197, 197, 197, 197, 197, 1239, 1239, - 197, 197, 1239, 197, 1239, 1239, 197, 197, 1028, 197, - - 1239, 1239, 1239, 197, 197, 197, 1030, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 1239, - 197, 197, 1031, 197, 1239, 1239, 197, 197, 1239, 197, - 1239, 1239, 1239, 1239, 197, 197, 1239, 197, 197, 197, - 197, 197, 197, 197, 1239, 197, 1239, 197, 197, 1031, - 197, 1239, 1239, 197, 197, 1239, 197, 1239, 1239, 1239, - 1239, 197, 197, 1239, 197, 197, 197, 197, 1239, 197, - 1032, 197, 197, 197, 197, 1033, 1239, 197, 1034, 197, - 1036, 1035, 197, 197, 1239, 197, 1239, 197, 1239, 197, - 1239, 197, 197, 1239, 1239, 197, 197, 1032, 197, 1239, - - 197, 197, 1033, 1239, 1239, 1034, 197, 1036, 1035, 197, - 197, 197, 197, 197, 197, 1239, 1239, 1037, 197, 197, - 1239, 1239, 197, 197, 197, 197, 197, 197, 1239, 1239, - 1239, 197, 197, 1239, 1239, 1239, 197, 197, 197, 1239, - 197, 1239, 1239, 1239, 1037, 197, 1239, 1239, 1239, 1239, - 197, 197, 197, 197, 197, 197, 1239, 197, 197, 197, - 1239, 1038, 197, 197, 197, 197, 197, 197, 197, 1239, - 1239, 197, 1239, 197, 1239, 1239, 1239, 1239, 197, 1239, - 1239, 197, 197, 1239, 197, 1239, 1239, 1239, 1038, 197, - 1239, 1239, 197, 197, 197, 197, 1239, 197, 197, 197, - - 197, 1239, 1040, 1239, 1039, 197, 1239, 1239, 197, 197, - 197, 1239, 197, 197, 1239, 197, 1239, 197, 1041, 1239, - 197, 1239, 197, 1239, 197, 197, 197, 1239, 1239, 1040, - 1239, 1039, 1239, 1239, 1239, 1239, 197, 197, 1239, 197, - 197, 1239, 197, 1239, 197, 1041, 1239, 197, 1239, 197, - 1042, 197, 197, 197, 197, 197, 197, 197, 197, 1043, - 1239, 197, 197, 197, 1239, 1239, 197, 197, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1042, 197, 1239, - 197, 197, 197, 197, 197, 197, 1043, 1239, 197, 197, - 197, 1239, 1239, 197, 197, 197, 1044, 197, 1239, 197, - - 197, 197, 197, 197, 1239, 197, 197, 197, 197, 197, - 197, 197, 1045, 1239, 1046, 1056, 197, 1239, 1239, 197, - 197, 197, 197, 1044, 197, 1239, 197, 197, 197, 197, - 197, 1239, 197, 197, 197, 197, 197, 197, 197, 1045, - 1047, 1046, 1056, 197, 197, 197, 197, 197, 197, 1048, - 197, 1239, 1239, 197, 1049, 197, 1239, 197, 197, 1239, - 197, 1239, 197, 197, 1239, 197, 1239, 1047, 197, 1239, - 1239, 197, 197, 197, 1239, 1239, 1048, 197, 197, 1239, - 197, 1049, 197, 1239, 197, 197, 1239, 197, 1239, 197, - 197, 1239, 197, 1050, 1239, 197, 1239, 197, 1051, 197, - - 197, 197, 1239, 197, 1239, 197, 197, 197, 197, 197, - 1239, 197, 197, 197, 1239, 197, 197, 197, 197, 197, - 1050, 197, 197, 1239, 197, 1051, 197, 1052, 197, 1239, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 1053, 197, 197, 197, 197, 197, 197, 197, 197, - 1054, 197, 1055, 1239, 1052, 197, 197, 197, 197, 197, - 197, 197, 1239, 197, 197, 197, 197, 1239, 1053, 1057, - 197, 197, 1239, 1239, 197, 197, 197, 1054, 197, 1055, - 1239, 1239, 197, 197, 197, 1239, 1239, 197, 197, 1239, - 197, 1239, 197, 197, 1239, 1239, 1057, 197, 197, 197, - - 1239, 197, 197, 197, 1059, 1239, 197, 1058, 1239, 1061, - 1239, 197, 1060, 197, 1239, 197, 1239, 197, 1239, 197, - 1239, 1239, 197, 197, 1239, 197, 197, 197, 197, 197, - 197, 1059, 1239, 197, 1058, 197, 1061, 1239, 197, 1060, - 197, 1063, 197, 1239, 197, 197, 197, 1239, 1239, 197, - 197, 197, 197, 1239, 197, 1239, 197, 197, 1062, 197, - 197, 197, 197, 197, 197, 1239, 1239, 1239, 1063, 197, - 197, 1239, 197, 1239, 1239, 1239, 1239, 1239, 197, 197, - 197, 1239, 197, 1239, 197, 1062, 197, 197, 197, 1064, - 197, 197, 1065, 1239, 197, 1239, 197, 197, 1239, 1239, - - 1239, 1239, 1239, 197, 1239, 197, 197, 197, 1239, 197, - 197, 197, 1239, 1066, 1239, 197, 1064, 1239, 1239, 1065, - 1239, 197, 1239, 1239, 197, 1239, 197, 197, 1239, 197, - 197, 197, 197, 1239, 197, 1239, 197, 197, 1239, 197, - 1066, 1239, 197, 197, 1239, 197, 1239, 1239, 1239, 1239, - 197, 197, 1239, 197, 197, 197, 197, 1239, 197, 1239, - 1239, 197, 1239, 197, 1106, 197, 197, 1239, 197, 197, - 197, 197, 197, 1107, 197, 197, 1239, 197, 197, 1239, - 1239, 1239, 197, 197, 197, 197, 1239, 197, 1239, 197, - 1239, 1106, 197, 1239, 197, 197, 197, 1239, 197, 197, - - 1107, 197, 197, 1239, 1239, 197, 197, 1239, 1108, 1239, - 197, 197, 197, 197, 197, 1239, 197, 1239, 197, 1109, - 1239, 197, 1239, 197, 1239, 1239, 197, 197, 1239, 197, - 1239, 197, 1239, 197, 1239, 1108, 197, 197, 197, 197, - 197, 1239, 1110, 1111, 1239, 197, 1109, 197, 197, 1239, - 197, 1239, 1239, 1239, 197, 197, 197, 197, 197, 1239, - 1239, 1239, 197, 197, 197, 197, 197, 197, 1239, 1110, - 1111, 1112, 1239, 197, 197, 197, 1239, 1239, 197, 197, - 1239, 197, 197, 197, 197, 1239, 197, 1239, 1239, 197, - 1239, 197, 1239, 1239, 197, 197, 1113, 197, 1112, 1239, - - 197, 1239, 197, 1239, 1239, 197, 197, 197, 197, 1239, - 197, 1239, 1239, 197, 1239, 1239, 1114, 1239, 197, 1115, - 1239, 197, 197, 1113, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 1239, 197, 197, 1116, 197, 1239, 1239, - 197, 1239, 1239, 1114, 1239, 1239, 1115, 1239, 197, 197, - 1239, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 1117, 197, 197, 1116, 197, 1239, 1239, 197, 1239, 1239, - 197, 1239, 197, 197, 1239, 197, 197, 197, 197, 1239, - 197, 1239, 197, 197, 1239, 197, 1239, 1117, 197, 1239, - 1239, 1239, 1118, 1239, 1239, 1239, 1239, 197, 1239, 197, - - 197, 197, 197, 197, 197, 1239, 1239, 197, 197, 197, - 1239, 1239, 197, 197, 197, 197, 197, 197, 1239, 1118, - 1239, 197, 197, 1239, 1239, 1239, 197, 197, 197, 1239, - 197, 1239, 1239, 1239, 1239, 197, 1239, 1239, 1239, 1239, - 197, 197, 197, 197, 197, 197, 1119, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 1239, - 1120, 197, 1239, 1239, 1239, 197, 197, 1239, 1239, 1239, - 197, 197, 197, 1119, 197, 1239, 1239, 197, 197, 197, - 1239, 1239, 197, 197, 197, 197, 1239, 1120, 197, 1239, - 1239, 1239, 197, 197, 197, 1239, 197, 197, 197, 1239, - - 1239, 197, 1121, 197, 1239, 197, 197, 197, 1239, 197, - 197, 1239, 1239, 1239, 197, 197, 1239, 1239, 1239, 197, - 1239, 197, 1239, 197, 1239, 1239, 1239, 1239, 197, 1121, - 197, 1239, 197, 197, 197, 1239, 197, 197, 197, 1239, - 197, 197, 197, 1239, 1239, 197, 197, 197, 1239, 197, - 197, 197, 1239, 197, 197, 1239, 1239, 1239, 197, 197, - 1239, 1239, 1239, 197, 1239, 197, 1239, 197, 1239, 1239, - 1239, 1239, 197, 1239, 197, 1239, 197, 197, 197, 1239, - 197, 197, 197, 1123, 197, 197, 197, 197, 1122, 197, - 197, 1239, 1239, 197, 197, 1239, 1239, 197, 1124, 1239, - - 1239, 197, 197, 197, 1239, 1239, 197, 197, 1239, 197, - 1123, 197, 197, 1239, 197, 1122, 197, 197, 1239, 1239, - 197, 197, 197, 1239, 197, 1124, 1239, 197, 197, 197, - 197, 197, 1239, 197, 197, 1239, 197, 197, 197, 197, - 1239, 1239, 1239, 1125, 197, 1239, 1239, 197, 197, 197, - 197, 1239, 197, 1239, 197, 1239, 1239, 197, 197, 1126, - 1239, 197, 197, 197, 197, 197, 197, 1239, 1239, 1239, - 1125, 197, 1239, 1239, 197, 197, 1239, 197, 197, 197, - 197, 1127, 1239, 1239, 197, 197, 1126, 1239, 197, 197, - 197, 1239, 197, 197, 197, 1239, 1239, 1239, 197, 197, - - 1239, 1239, 1239, 1239, 197, 197, 1239, 197, 1127, 1239, - 1239, 197, 197, 197, 1239, 1239, 1239, 197, 197, 197, - 197, 197, 197, 197, 1239, 1239, 197, 197, 1128, 1239, - 1239, 197, 197, 1129, 1239, 1239, 1239, 197, 197, 1239, - 197, 1239, 197, 197, 1239, 197, 197, 197, 1239, 197, - 197, 1239, 197, 197, 197, 1128, 1239, 197, 1239, 197, - 1129, 197, 1130, 1239, 197, 1239, 1239, 197, 1239, 197, - 197, 1239, 1239, 197, 1239, 1239, 1239, 197, 1239, 197, - 197, 1131, 1239, 197, 197, 1239, 1239, 197, 197, 1130, - 1132, 1239, 197, 197, 197, 1239, 197, 1239, 1239, 197, - - 1239, 197, 197, 197, 197, 1239, 1133, 1239, 1131, 1239, - 197, 197, 197, 1239, 197, 1239, 1239, 1132, 1239, 197, - 197, 1239, 1239, 197, 1239, 197, 197, 197, 197, 197, - 197, 1239, 1134, 1133, 197, 1239, 197, 197, 197, 197, - 1239, 197, 1239, 197, 1239, 1135, 197, 1239, 1239, 1239, - 197, 1239, 197, 1239, 197, 197, 1239, 1239, 1239, 1134, - 1239, 197, 1239, 197, 197, 1239, 1239, 197, 197, 197, - 197, 1239, 1135, 197, 197, 1239, 1136, 197, 197, 197, - 1239, 1239, 197, 197, 1239, 197, 1239, 197, 197, 1239, - 1239, 1239, 197, 1239, 197, 1239, 197, 197, 1137, 1239, - - 1239, 197, 1239, 1136, 1239, 197, 197, 1239, 1239, 197, - 197, 197, 197, 1239, 197, 197, 197, 1138, 1139, 197, - 1239, 197, 1239, 1239, 197, 1137, 1239, 197, 197, 197, - 197, 1239, 1239, 1239, 197, 197, 197, 1239, 197, 197, - 197, 1239, 1239, 197, 1138, 1139, 1239, 1239, 197, 1239, - 1239, 197, 1239, 197, 197, 197, 197, 197, 197, 1140, - 1239, 197, 197, 197, 1239, 1239, 197, 197, 1239, 197, - 197, 197, 197, 1239, 1239, 1239, 197, 197, 197, 1239, - 197, 197, 197, 1239, 1239, 197, 1140, 1239, 1239, 1239, - 197, 1239, 1239, 197, 1239, 197, 197, 197, 197, 197, - - 197, 1239, 1239, 197, 197, 197, 1239, 1239, 197, 197, - 1239, 197, 1239, 197, 1239, 1239, 1239, 1239, 197, 197, - 197, 197, 197, 197, 1239, 1141, 197, 197, 1239, 1239, - 1239, 197, 197, 1239, 1239, 1142, 1239, 197, 197, 1239, - 197, 1239, 197, 1239, 1239, 197, 197, 197, 197, 197, - 197, 197, 1141, 197, 1239, 1239, 197, 1239, 197, 1239, - 1239, 197, 1142, 197, 197, 197, 1239, 1239, 1239, 197, - 197, 1239, 1239, 1239, 197, 197, 197, 197, 197, 197, - 1239, 1239, 1239, 197, 197, 1239, 1239, 1239, 197, 197, - 197, 197, 197, 197, 1239, 1161, 1239, 197, 197, 197, - - 1239, 1239, 197, 197, 197, 197, 197, 1239, 1239, 197, - 1239, 197, 1239, 197, 1239, 197, 197, 197, 197, 197, - 197, 197, 1161, 1239, 1239, 197, 197, 197, 1239, 197, - 197, 1162, 197, 1239, 1239, 197, 197, 197, 1239, 1163, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 1239, 197, 1239, 197, 197, 197, 197, 197, 1162, 1239, - 1239, 197, 197, 197, 197, 197, 1163, 197, 197, 1164, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 1239, 1165, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 1164, 197, 197, 197, - - 197, 197, 197, 197, 197, 197, 197, 197, 197, 1239, - 197, 1239, 1239, 1165, 197, 197, 197, 197, 197, 197, - 197, 1239, 197, 197, 197, 1166, 197, 197, 197, 197, - 197, 197, 197, 1167, 197, 197, 197, 197, 197, 197, - 197, 1239, 197, 197, 197, 197, 197, 197, 197, 1239, - 197, 1239, 1166, 1239, 197, 1239, 197, 1239, 197, 1239, - 1167, 1239, 197, 197, 197, 197, 197, 197, 1239, 197, - 197, 197, 197, 1239, 197, 197, 197, 197, 1239, 197, - 1239, 197, 1169, 1168, 197, 1239, 197, 197, 1239, 197, - 1239, 197, 197, 1239, 1239, 197, 197, 197, 197, 197, - - 1239, 1239, 197, 197, 197, 197, 197, 197, 197, 1169, - 1168, 197, 1239, 197, 197, 197, 197, 1239, 197, 197, - 1239, 197, 197, 1239, 197, 197, 197, 1239, 1239, 197, - 1239, 197, 197, 197, 197, 1239, 1170, 197, 1239, 1171, - 1239, 197, 197, 197, 1239, 197, 1239, 197, 197, 197, - 1239, 197, 197, 197, 1239, 197, 1239, 197, 197, 1239, - 197, 1239, 1239, 1170, 197, 197, 1171, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 1239, 197, 197, - 197, 197, 197, 1239, 197, 1239, 1172, 1239, 1239, 197, - 1239, 197, 197, 1239, 197, 197, 197, 197, 197, 197, - - 197, 197, 197, 1174, 1239, 197, 197, 197, 197, 1239, - 1173, 1239, 1239, 1172, 1239, 197, 197, 197, 197, 1176, - 1239, 197, 197, 197, 197, 197, 197, 1239, 197, 197, - 1174, 197, 197, 1239, 197, 1239, 1175, 1173, 1239, 197, - 1239, 197, 197, 1239, 197, 197, 1176, 197, 197, 197, - 197, 197, 197, 1239, 1239, 197, 197, 197, 197, 1239, - 197, 1239, 1239, 1175, 197, 197, 197, 197, 197, 1239, - 197, 1239, 197, 1186, 197, 197, 197, 1239, 197, 197, - 197, 1239, 197, 1239, 197, 197, 1239, 197, 1239, 197, - 1239, 197, 197, 197, 197, 197, 1239, 197, 1239, 197, - - 1186, 197, 197, 1239, 1187, 197, 197, 197, 1239, 197, - 1239, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 1239, 197, 1188, - 1239, 1187, 197, 197, 197, 197, 197, 1239, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 1239, 197, 197, - 197, 197, 197, 197, 197, 1239, 1188, 197, 197, 197, - 197, 197, 197, 197, 197, 1239, 197, 1189, 197, 1239, - 197, 1239, 197, 197, 197, 1239, 197, 1239, 197, 1239, - 197, 197, 1239, 197, 197, 197, 197, 197, 197, 1239, - 197, 197, 197, 197, 1189, 197, 197, 1239, 1239, 197, - - 197, 197, 197, 197, 1239, 197, 1239, 197, 1239, 1239, - 197, 197, 1190, 1239, 197, 197, 1239, 197, 1191, 197, - 197, 197, 197, 197, 1239, 1192, 197, 197, 1239, 197, - 197, 197, 197, 1239, 197, 1199, 1194, 1239, 197, 1190, - 1239, 197, 197, 1239, 197, 1191, 1200, 197, 197, 197, - 197, 197, 1192, 197, 197, 1239, 197, 197, 197, 197, - 197, 1239, 1239, 1239, 197, 1239, 197, 197, 197, 197, - 197, 1239, 1239, 1200, 197, 1239, 1239, 197, 197, 1239, - 197, 1239, 197, 197, 197, 1239, 197, 197, 197, 1239, - 197, 197, 1202, 197, 197, 1201, 197, 197, 197, 197, - - 197, 197, 197, 197, 1239, 1239, 197, 197, 197, 197, - 1239, 197, 1239, 197, 197, 197, 1239, 197, 197, 1202, - 1239, 1239, 1201, 197, 197, 197, 197, 197, 197, 197, - 197, 1239, 197, 197, 197, 197, 197, 197, 197, 1208, - 1239, 197, 197, 1239, 197, 197, 197, 1239, 197, 197, - 1239, 197, 197, 197, 1239, 1239, 1239, 1239, 197, 197, - 1239, 197, 1239, 197, 197, 1239, 1208, 1239, 1239, 197, - 1239, 197, 1239, 197, 1239, 197, 197, 1239, 1239, 197, - 197, 1239, 1239, 1239, 1239, 197, 46, 46, 46, 46, - 46, 88, 1239, 1239, 88, 88, 182, 182, 182, 1239, - - 182, 184, 1239, 184, 184, 184, 187, 1239, 187, 187, - 187, 197, 1239, 197, 197, 197, 7, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239 + 117, 110, 103, 104, 139, 118, 182, 119, 111, 108, + 113, 112, 120, 128, 114, 180, 181, 121, 115, 129, + 1266, 140, 130, 1265, 116, 141, 190, 117, 86, 86, + 131, 142, 118, 1263, 119, 1261, 132, 191, 1259, 120, + 195, 196, 180, 181, 121, 122, 86, 86, 140, 130, + 146, 143, 141, 123, 288, 144, 124, 131, 142, 125, + 133, 145, 126, 132, 147, 127, 134, 135, 136, 1257, + 148, 149, 122, 137, 187, 86, 289, 146, 143, 1255, + + 123, 288, 144, 124, 1226, 1226, 125, 133, 145, 126, + 155, 147, 127, 134, 135, 136, 150, 148, 149, 294, + 137, 156, 158, 289, 151, 1253, 159, 157, 152, 295, + 160, 153, 154, 175, 299, 176, 161, 155, 177, 1251, + 1249, 300, 1247, 150, 178, 1245, 294, 1243, 156, 158, + 1241, 151, 179, 159, 157, 152, 295, 160, 153, 154, + 175, 299, 176, 161, 162, 177, 163, 290, 300, 164, + 292, 178, 165, 293, 166, 291, 167, 168, 1238, 179, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 303, 162, 1235, 163, 290, 1230, 164, 292, 319, 165, + + 293, 166, 291, 167, 168, 169, 308, 320, 229, 170, + 199, 301, 171, 172, 230, 199, 309, 303, 302, 173, + 199, 321, 174, 1225, 1216, 319, 1207, 1189, 1171, 1132, + 1093, 1025, 169, 308, 320, 229, 170, 199, 301, 171, + 172, 230, 199, 309, 957, 302, 173, 199, 321, 174, + 193, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 186, 186, 322, 186, 186, 186, 186, 186, 186, + 323, 231, 329, 865, 773, 199, 652, 296, 297, 232, + 186, 186, 186, 199, 310, 233, 200, 199, 201, 311, + 322, 298, 330, 239, 202, 199, 203, 323, 231, 329, + + 204, 205, 199, 199, 296, 297, 232, 317, 318, 531, + 199, 310, 233, 200, 199, 201, 311, 409, 298, 330, + 239, 202, 199, 203, 408, 331, 286, 204, 205, 285, + 199, 284, 198, 197, 317, 318, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 188, 185, 332, 240, + 241, 244, 331, 199, 242, 245, 186, 186, 186, 199, + 243, 246, 333, 206, 304, 305, 306, 207, 307, 199, + 199, 199, 199, 208, 199, 332, 240, 241, 244, 199, + 199, 242, 245, 209, 199, 183, 199, 243, 246, 333, + 206, 304, 305, 306, 207, 307, 199, 199, 199, 199, + + 208, 199, 97, 96, 87, 334, 199, 335, 336, 1271, + 209, 199, 186, 210, 339, 259, 340, 199, 341, 260, + 211, 199, 337, 261, 199, 338, 276, 212, 277, 262, + 213, 278, 334, 342, 335, 336, 199, 199, 47, 199, + 210, 339, 259, 340, 199, 341, 260, 211, 199, 337, + 261, 199, 338, 276, 212, 277, 262, 213, 278, 47, + 342, 1271, 1271, 199, 199, 214, 199, 279, 283, 215, + 347, 199, 199, 216, 348, 280, 1271, 349, 199, 217, + 350, 199, 218, 199, 356, 357, 281, 282, 199, 199, + 1271, 199, 214, 199, 279, 283, 215, 347, 199, 199, + + 216, 348, 280, 199, 349, 199, 217, 350, 199, 218, + 199, 356, 357, 281, 282, 199, 199, 199, 199, 358, + 199, 199, 359, 312, 219, 313, 220, 199, 314, 1271, + 199, 221, 362, 351, 315, 352, 222, 199, 1271, 1271, + 360, 316, 1271, 361, 199, 1271, 358, 363, 199, 359, + 312, 219, 313, 220, 199, 314, 343, 1271, 221, 362, + 351, 315, 352, 222, 199, 223, 344, 360, 316, 199, + 361, 345, 346, 224, 363, 353, 225, 354, 324, 226, + 325, 364, 227, 343, 326, 228, 365, 366, 355, 199, + 1271, 327, 223, 344, 367, 328, 199, 1271, 345, 346, + + 224, 368, 353, 225, 354, 324, 226, 325, 364, 227, + 369, 326, 228, 365, 366, 355, 199, 234, 327, 372, + 373, 367, 328, 235, 236, 237, 376, 370, 368, 379, + 238, 371, 377, 374, 383, 199, 1271, 369, 375, 385, + 1271, 386, 387, 378, 234, 1271, 372, 373, 384, 388, + 235, 236, 237, 376, 370, 380, 379, 238, 371, 377, + 374, 383, 199, 247, 381, 375, 385, 199, 386, 387, + 378, 199, 382, 389, 390, 384, 388, 248, 392, 393, + 394, 399, 380, 249, 250, 391, 400, 199, 1271, 395, + 247, 381, 397, 405, 199, 398, 1271, 1271, 199, 382, + + 389, 390, 406, 1271, 248, 392, 393, 394, 399, 396, + 249, 250, 391, 400, 199, 251, 395, 407, 401, 397, + 405, 199, 398, 252, 402, 532, 533, 253, 199, 406, + 254, 255, 1271, 199, 1271, 1271, 396, 1271, 1271, 1271, + 1271, 1271, 251, 1271, 407, 401, 403, 1271, 199, 534, + 252, 402, 532, 533, 253, 199, 535, 254, 255, 404, + 199, 256, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 257, 403, 199, 536, 534, 537, 258, 199, + 538, 539, 1271, 535, 199, 1271, 404, 1271, 256, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 257, + + 1271, 199, 536, 540, 537, 258, 199, 538, 539, 199, + 541, 199, 263, 199, 264, 545, 546, 265, 199, 199, + 266, 1271, 267, 547, 268, 269, 1271, 411, 199, 199, + 540, 548, 199, 549, 199, 1271, 199, 541, 199, 263, + 199, 264, 545, 546, 265, 199, 199, 266, 199, 267, + 547, 268, 269, 199, 411, 199, 199, 199, 548, 199, + 549, 199, 270, 199, 550, 199, 271, 551, 412, 272, + 273, 552, 553, 199, 554, 199, 274, 555, 556, 275, + 199, 559, 560, 561, 199, 562, 199, 1271, 1271, 270, + 199, 550, 1271, 271, 551, 412, 272, 273, 552, 553, + + 199, 554, 1271, 274, 555, 556, 275, 1271, 559, 560, + 561, 1271, 562, 199, 92, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 193, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 413, 563, 199, 199, + 564, 199, 1271, 199, 414, 417, 199, 1271, 199, 1271, + 565, 199, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 1271, 413, 563, 199, 199, 564, 199, 557, + 199, 414, 417, 199, 418, 199, 415, 565, 199, 416, + + 542, 422, 543, 199, 558, 199, 199, 199, 199, 199, + 199, 566, 1271, 199, 199, 199, 557, 544, 199, 199, + 1271, 418, 1271, 415, 567, 1271, 416, 542, 422, 543, + 199, 558, 199, 199, 199, 199, 199, 199, 566, 199, + 199, 199, 199, 199, 544, 199, 199, 419, 420, 423, + 568, 567, 199, 199, 569, 199, 199, 1271, 570, 199, + 199, 421, 199, 571, 1271, 199, 199, 572, 1271, 1271, + 199, 1271, 199, 1271, 419, 420, 423, 568, 573, 199, + 199, 569, 199, 199, 426, 570, 199, 199, 421, 199, + 571, 424, 199, 199, 572, 199, 431, 199, 425, 199, + + 199, 574, 199, 199, 575, 573, 432, 199, 1271, 1271, + 1271, 426, 1271, 1271, 576, 1271, 199, 1271, 424, 1271, + 199, 1271, 199, 431, 199, 425, 1271, 199, 574, 199, + 199, 575, 577, 432, 199, 427, 428, 429, 578, 430, + 199, 576, 199, 199, 199, 579, 199, 199, 199, 580, + 199, 581, 440, 441, 582, 433, 583, 584, 199, 577, + 434, 1271, 427, 428, 429, 578, 430, 199, 1271, 199, + 1271, 199, 579, 199, 199, 199, 580, 199, 581, 440, + 441, 582, 433, 583, 584, 199, 585, 434, 435, 586, + 436, 587, 590, 437, 591, 199, 199, 199, 199, 438, + + 592, 199, 199, 444, 442, 1271, 439, 199, 199, 1271, + 1271, 199, 593, 585, 1271, 435, 586, 436, 587, 590, + 437, 591, 199, 199, 199, 199, 438, 592, 199, 199, + 444, 442, 199, 439, 199, 199, 199, 199, 199, 593, + 445, 199, 443, 588, 594, 446, 595, 454, 199, 598, + 199, 599, 199, 589, 199, 199, 199, 199, 1271, 199, + 199, 199, 600, 199, 199, 1271, 199, 445, 199, 443, + 588, 594, 446, 595, 454, 199, 598, 199, 599, 199, + 589, 199, 199, 199, 199, 596, 1271, 199, 199, 600, + 452, 1271, 199, 199, 447, 597, 448, 199, 1271, 601, + + 449, 453, 199, 199, 602, 199, 199, 450, 199, 199, + 1271, 451, 596, 199, 1271, 199, 199, 452, 455, 199, + 1271, 447, 597, 448, 199, 199, 601, 449, 453, 199, + 199, 602, 199, 199, 450, 199, 199, 199, 451, 603, + 199, 199, 199, 199, 457, 455, 199, 456, 604, 199, + 199, 199, 199, 199, 199, 605, 199, 199, 606, 458, + 459, 1271, 607, 1271, 199, 1271, 603, 1271, 199, 199, + 199, 457, 1271, 199, 456, 604, 199, 199, 199, 608, + 199, 199, 605, 199, 199, 606, 458, 459, 199, 607, + 199, 609, 199, 612, 462, 460, 199, 199, 461, 199, + + 199, 199, 613, 199, 199, 1271, 608, 1271, 199, 614, + 463, 1271, 1271, 199, 610, 199, 1271, 199, 609, 199, + 612, 462, 460, 1271, 615, 461, 199, 199, 199, 613, + 199, 199, 199, 611, 199, 199, 614, 463, 199, 199, + 199, 610, 464, 199, 199, 616, 617, 199, 199, 618, + 199, 615, 470, 199, 465, 1271, 1271, 199, 199, 199, + 611, 199, 199, 199, 1271, 199, 199, 619, 620, 464, + 199, 199, 616, 617, 199, 199, 618, 199, 199, 470, + 199, 465, 471, 199, 199, 199, 1271, 199, 199, 199, + 199, 466, 1271, 199, 619, 620, 1271, 1271, 199, 199, + + 621, 467, 1271, 472, 622, 199, 468, 469, 623, 471, + 199, 199, 199, 473, 199, 199, 199, 199, 466, 199, + 199, 624, 199, 479, 199, 199, 199, 621, 467, 199, + 472, 622, 199, 468, 469, 623, 625, 1271, 199, 199, + 473, 1271, 1271, 199, 199, 199, 199, 480, 624, 199, + 479, 199, 199, 1271, 626, 1271, 199, 199, 1271, 199, + 199, 1271, 627, 625, 199, 490, 474, 628, 475, 199, + 199, 1271, 199, 629, 480, 199, 630, 631, 493, 199, + 199, 626, 494, 1271, 199, 199, 1271, 199, 199, 627, + 632, 199, 490, 474, 628, 475, 199, 199, 199, 1271, + + 629, 1271, 199, 630, 631, 493, 633, 199, 476, 494, + 477, 199, 199, 481, 634, 199, 635, 632, 199, 199, + 199, 478, 199, 199, 636, 199, 199, 199, 482, 641, + 637, 199, 199, 633, 642, 476, 1271, 477, 199, 638, + 481, 634, 643, 635, 1271, 199, 199, 199, 478, 199, + 199, 636, 1271, 199, 199, 482, 641, 637, 199, 199, + 199, 642, 199, 485, 1271, 199, 638, 199, 483, 643, + 199, 484, 199, 486, 1271, 199, 199, 639, 199, 640, + 1271, 644, 1271, 199, 199, 1271, 199, 199, 199, 199, + 485, 199, 199, 1271, 199, 483, 199, 199, 484, 199, + + 486, 487, 199, 199, 639, 199, 640, 199, 644, 199, + 199, 199, 488, 199, 199, 199, 1271, 645, 199, 199, + 199, 1271, 199, 199, 1271, 1271, 646, 199, 487, 647, + 650, 1271, 199, 651, 199, 1271, 199, 1271, 774, 488, + 775, 199, 1271, 199, 645, 199, 199, 199, 199, 199, + 199, 489, 199, 646, 199, 199, 647, 650, 199, 199, + 651, 491, 199, 1271, 495, 774, 776, 775, 199, 199, + 199, 777, 199, 1271, 199, 199, 492, 199, 489, 199, + 199, 496, 199, 648, 199, 199, 1271, 649, 491, 199, + 199, 495, 199, 776, 497, 199, 199, 1271, 777, 498, + + 199, 199, 1271, 492, 199, 1271, 1271, 199, 496, 1271, + 648, 199, 778, 499, 649, 779, 1271, 199, 199, 199, + 199, 497, 500, 780, 199, 199, 498, 199, 781, 199, + 199, 199, 502, 501, 199, 782, 199, 1271, 199, 778, + 499, 1271, 779, 199, 783, 199, 1271, 199, 199, 500, + 780, 199, 199, 784, 785, 781, 199, 199, 1271, 502, + 501, 199, 782, 199, 506, 199, 1271, 1271, 199, 199, + 199, 783, 199, 508, 786, 199, 503, 787, 507, 199, + 784, 785, 788, 789, 790, 504, 1271, 199, 199, 199, + 1271, 506, 199, 505, 509, 199, 199, 199, 199, 199, + + 508, 786, 199, 503, 787, 507, 199, 1271, 199, 788, + 789, 790, 504, 199, 199, 199, 199, 199, 199, 199, + 505, 509, 791, 199, 199, 199, 510, 792, 511, 199, + 1271, 793, 199, 199, 512, 199, 199, 199, 1271, 1271, + 199, 199, 199, 794, 199, 199, 795, 199, 1271, 791, + 199, 796, 199, 510, 792, 511, 797, 199, 793, 199, + 199, 512, 798, 199, 199, 199, 513, 199, 199, 199, + 794, 515, 199, 795, 199, 199, 1271, 514, 796, 199, + 1271, 199, 1271, 797, 199, 799, 1271, 800, 1271, 798, + 1271, 199, 199, 513, 199, 801, 199, 199, 515, 199, + + 520, 199, 199, 521, 514, 516, 199, 199, 199, 199, + 522, 199, 799, 199, 800, 199, 199, 199, 199, 199, + 517, 199, 801, 199, 199, 802, 803, 520, 199, 199, + 521, 199, 516, 199, 199, 199, 199, 522, 199, 523, + 199, 804, 199, 199, 199, 199, 199, 517, 199, 805, + 1271, 806, 802, 803, 1271, 199, 199, 518, 199, 807, + 528, 199, 199, 808, 199, 199, 523, 524, 804, 199, + 199, 199, 199, 525, 199, 1271, 805, 519, 806, 199, + 199, 199, 199, 1271, 518, 809, 807, 528, 199, 526, + 808, 199, 199, 199, 524, 810, 199, 199, 199, 199, + + 525, 199, 527, 811, 519, 812, 199, 199, 199, 199, + 530, 199, 809, 199, 199, 199, 526, 199, 199, 813, + 199, 199, 810, 199, 199, 814, 199, 815, 529, 527, + 811, 199, 812, 199, 199, 1271, 199, 530, 199, 1271, + 199, 199, 199, 1271, 199, 199, 813, 1271, 199, 1271, + 199, 199, 814, 816, 815, 529, 1271, 1271, 199, 1271, + 199, 199, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 653, 199, 654, 1271, 199, 199, 199, 655, + 816, 199, 199, 199, 199, 1271, 199, 817, 820, 821, + 822, 199, 199, 199, 199, 199, 1271, 199, 1271, 653, + + 199, 654, 199, 199, 199, 199, 655, 199, 199, 199, + 199, 199, 656, 199, 817, 820, 821, 822, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 1271, 199, 199, 199, 199, 657, 199, 656, + 658, 199, 823, 824, 1271, 199, 199, 199, 1271, 827, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 659, + 199, 199, 199, 199, 657, 199, 828, 658, 199, 823, + 824, 199, 199, 199, 199, 660, 827, 661, 199, 199, + 662, 199, 199, 199, 199, 829, 659, 199, 199, 199, + 1271, 199, 199, 828, 1271, 1271, 1271, 830, 199, 1271, + + 1271, 831, 660, 832, 661, 1271, 199, 662, 199, 199, + 1271, 199, 829, 199, 199, 1271, 199, 199, 199, 199, + 663, 199, 664, 199, 830, 199, 199, 818, 831, 667, + 832, 199, 199, 199, 666, 199, 1271, 665, 819, 199, + 199, 199, 199, 668, 199, 199, 1271, 663, 199, 664, + 199, 1271, 199, 199, 818, 199, 667, 833, 199, 199, + 199, 666, 199, 199, 665, 819, 199, 199, 199, 199, + 668, 199, 199, 199, 834, 199, 673, 835, 669, 836, + 199, 199, 199, 199, 833, 671, 199, 837, 1271, 199, + 199, 670, 838, 199, 199, 1271, 199, 839, 199, 199, + + 199, 834, 199, 673, 835, 669, 836, 199, 199, 199, + 199, 1271, 671, 199, 837, 199, 199, 199, 670, 838, + 199, 840, 672, 199, 839, 1271, 199, 199, 199, 841, + 199, 675, 842, 199, 1271, 674, 199, 843, 199, 844, + 199, 199, 199, 199, 199, 676, 1271, 845, 840, 672, + 1271, 199, 825, 826, 199, 199, 841, 199, 675, 842, + 199, 199, 674, 846, 843, 199, 844, 199, 199, 677, + 199, 678, 676, 199, 845, 199, 1271, 199, 199, 825, + 826, 199, 1271, 199, 847, 848, 679, 849, 199, 850, + 846, 199, 1271, 199, 851, 680, 677, 199, 678, 681, + + 199, 199, 199, 199, 199, 1271, 1271, 199, 199, 199, + 199, 847, 848, 679, 849, 852, 850, 199, 199, 199, + 199, 851, 680, 199, 199, 853, 681, 199, 199, 854, + 199, 855, 683, 199, 199, 199, 199, 199, 682, 199, + 1271, 199, 852, 199, 199, 199, 199, 199, 684, 1271, + 199, 856, 853, 1271, 199, 199, 854, 199, 855, 683, + 199, 857, 199, 685, 199, 682, 199, 199, 199, 1271, + 199, 858, 199, 199, 199, 684, 199, 686, 856, 859, + 199, 199, 199, 199, 199, 199, 199, 860, 857, 687, + 685, 199, 861, 199, 199, 1271, 199, 1271, 858, 199, + + 199, 199, 1271, 199, 686, 862, 859, 199, 199, 199, + 199, 1271, 199, 199, 860, 688, 687, 199, 199, 861, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 689, + 1271, 690, 862, 199, 199, 1271, 199, 199, 199, 1271, + 863, 1271, 688, 199, 199, 1271, 1271, 864, 199, 199, + 199, 199, 199, 958, 199, 1271, 689, 692, 690, 1271, + 199, 199, 199, 1271, 199, 199, 199, 863, 199, 1271, + 199, 693, 691, 199, 864, 199, 959, 199, 199, 199, + 958, 199, 694, 960, 692, 1271, 199, 961, 1271, 199, + 199, 199, 1271, 199, 1271, 199, 199, 962, 693, 691, + + 199, 1271, 199, 959, 1271, 199, 199, 963, 199, 694, + 960, 199, 199, 199, 961, 199, 199, 199, 199, 695, + 696, 199, 199, 199, 962, 964, 965, 1271, 697, 1271, + 199, 199, 199, 199, 963, 199, 1271, 966, 199, 199, + 199, 967, 199, 199, 698, 1271, 695, 696, 199, 199, + 1271, 968, 964, 965, 199, 697, 199, 199, 199, 199, + 969, 199, 199, 199, 966, 199, 199, 199, 967, 1271, + 199, 698, 699, 700, 970, 199, 199, 199, 968, 199, + 701, 199, 1271, 199, 199, 1271, 199, 969, 199, 199, + 199, 1271, 199, 199, 1271, 971, 199, 199, 1271, 699, + + 700, 970, 199, 199, 199, 199, 199, 701, 199, 199, + 1271, 199, 199, 199, 972, 199, 199, 1271, 199, 1271, + 702, 703, 971, 199, 973, 199, 1271, 1271, 199, 1271, + 974, 1271, 199, 199, 199, 199, 199, 199, 199, 199, + 704, 972, 199, 705, 199, 199, 706, 702, 703, 1271, + 199, 973, 199, 199, 199, 199, 199, 974, 707, 708, + 199, 199, 199, 199, 199, 199, 199, 704, 199, 199, + 705, 199, 709, 706, 975, 976, 199, 199, 199, 199, + 199, 199, 710, 199, 199, 707, 708, 977, 199, 199, + 199, 1271, 199, 199, 199, 199, 199, 1271, 978, 709, + + 711, 975, 976, 199, 199, 199, 199, 1271, 979, 710, + 199, 199, 712, 1271, 977, 199, 199, 199, 199, 199, + 714, 199, 199, 199, 199, 978, 1271, 711, 199, 1271, + 199, 199, 980, 981, 199, 979, 199, 199, 982, 712, + 199, 199, 713, 199, 199, 199, 199, 714, 983, 199, + 199, 199, 199, 716, 199, 199, 715, 199, 199, 980, + 981, 199, 199, 199, 199, 982, 984, 199, 199, 713, + 985, 986, 199, 199, 199, 983, 987, 1271, 988, 199, + 716, 199, 989, 715, 199, 199, 719, 990, 199, 199, + 993, 199, 994, 984, 199, 1271, 995, 985, 986, 199, + + 996, 199, 717, 987, 199, 988, 199, 1271, 997, 989, + 199, 199, 718, 719, 990, 199, 199, 993, 199, 994, + 720, 199, 199, 995, 998, 1271, 199, 996, 199, 717, + 199, 199, 1271, 199, 199, 997, 999, 199, 199, 718, + 199, 1271, 1271, 199, 199, 199, 721, 720, 199, 199, + 199, 998, 199, 199, 199, 199, 199, 199, 1000, 722, + 1001, 199, 199, 999, 199, 199, 991, 199, 723, 992, + 199, 199, 199, 721, 199, 199, 1002, 199, 1003, 199, + 199, 199, 1271, 199, 724, 1000, 722, 1001, 199, 199, + 199, 199, 199, 991, 1004, 723, 992, 199, 199, 199, + + 1005, 199, 725, 1002, 199, 1003, 1006, 199, 199, 199, + 1271, 724, 1007, 1008, 199, 199, 199, 199, 199, 199, + 1009, 1004, 726, 199, 1010, 199, 1011, 1005, 199, 725, + 199, 199, 199, 1006, 728, 199, 199, 727, 199, 1007, + 1008, 199, 199, 199, 199, 199, 1271, 1009, 729, 726, + 199, 1010, 199, 1011, 199, 199, 1271, 199, 199, 199, + 1012, 728, 1271, 199, 727, 199, 1271, 199, 199, 199, + 199, 199, 733, 199, 1271, 729, 730, 199, 1271, 199, + 1271, 199, 199, 199, 1271, 199, 1013, 1012, 1271, 199, + 199, 199, 1271, 734, 199, 199, 199, 199, 1271, 733, + + 199, 199, 1271, 730, 199, 199, 735, 199, 1271, 199, + 199, 731, 199, 1013, 1271, 199, 199, 199, 199, 199, + 734, 1271, 1014, 199, 736, 199, 1015, 1016, 199, 199, + 732, 199, 199, 735, 199, 199, 199, 1017, 731, 199, + 1018, 199, 199, 737, 199, 199, 199, 1019, 738, 1014, + 199, 736, 199, 1015, 1016, 199, 199, 732, 199, 199, + 1271, 199, 199, 199, 1017, 1020, 199, 1018, 199, 1021, + 737, 199, 199, 1022, 1019, 738, 1271, 199, 1023, 1024, + 1094, 1271, 199, 199, 1095, 199, 199, 741, 199, 199, + 199, 739, 1020, 199, 199, 199, 1021, 740, 199, 199, + + 1022, 199, 1271, 199, 1096, 1023, 1024, 1094, 199, 1097, + 199, 1095, 199, 199, 741, 1271, 199, 199, 739, 743, + 1271, 199, 199, 199, 740, 199, 199, 199, 199, 199, + 199, 1096, 742, 1098, 1271, 199, 1097, 199, 199, 199, + 199, 745, 199, 199, 1099, 199, 743, 199, 744, 1100, + 199, 199, 199, 199, 199, 749, 199, 199, 199, 742, + 1098, 199, 199, 199, 199, 199, 199, 199, 745, 199, + 199, 1099, 199, 199, 199, 744, 1100, 199, 199, 1101, + 199, 1102, 749, 199, 199, 199, 746, 199, 199, 199, + 199, 199, 199, 199, 199, 1103, 199, 199, 1104, 1105, + + 199, 1106, 199, 748, 199, 747, 1101, 199, 1102, 199, + 199, 199, 199, 746, 199, 1107, 199, 750, 199, 199, + 199, 199, 1103, 199, 199, 1104, 1105, 1271, 1106, 199, + 748, 1271, 747, 199, 199, 199, 199, 1108, 199, 199, + 199, 751, 1107, 199, 750, 199, 1109, 752, 199, 199, + 1110, 199, 1111, 199, 199, 753, 1112, 1113, 199, 199, + 199, 1114, 199, 199, 1108, 1271, 1271, 199, 751, 1271, + 1271, 1271, 199, 1109, 752, 1271, 199, 1110, 199, 1111, + 199, 199, 753, 1112, 1113, 199, 199, 199, 1114, 199, + 199, 199, 756, 755, 199, 754, 199, 199, 199, 199, + + 1115, 199, 199, 199, 1271, 1116, 1271, 199, 1117, 1118, + 1119, 1271, 199, 1271, 199, 1271, 199, 199, 199, 756, + 755, 199, 754, 199, 199, 199, 199, 1115, 199, 199, + 199, 199, 1116, 757, 199, 1117, 1118, 1119, 199, 199, + 758, 199, 199, 199, 199, 199, 199, 199, 1120, 759, + 1121, 760, 762, 761, 199, 1122, 1271, 1123, 199, 199, + 757, 199, 199, 1124, 1271, 199, 1271, 758, 199, 199, + 199, 1125, 199, 199, 199, 1120, 759, 1121, 760, 762, + 761, 199, 1122, 763, 1123, 1126, 199, 199, 199, 199, + 1124, 199, 199, 199, 764, 199, 1127, 199, 1125, 199, + + 199, 1271, 765, 1128, 199, 199, 1271, 199, 1271, 1271, + 763, 1271, 1126, 1271, 199, 1129, 1271, 1271, 199, 199, + 199, 764, 199, 1127, 199, 1130, 199, 199, 766, 765, + 1128, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 768, 1129, 199, 199, 199, 1131, 767, 199, 199, + 1271, 1172, 1130, 1173, 1271, 766, 1271, 1271, 1271, 1174, + 199, 1271, 199, 199, 199, 199, 199, 199, 768, 1175, + 199, 199, 199, 1131, 767, 199, 199, 199, 1172, 769, + 1173, 771, 1176, 770, 199, 199, 1174, 199, 199, 199, + 199, 1177, 199, 1178, 772, 199, 1175, 199, 1271, 1271, + + 199, 1271, 1271, 1271, 199, 1271, 769, 1179, 771, 1176, + 770, 199, 199, 1180, 199, 199, 199, 199, 1177, 199, + 1178, 772, 199, 199, 199, 199, 199, 199, 199, 866, + 199, 1181, 867, 199, 1179, 199, 1271, 1271, 199, 1182, + 1180, 199, 1183, 1184, 199, 199, 1271, 1185, 199, 1271, + 199, 199, 199, 199, 199, 199, 866, 199, 1181, 867, + 199, 868, 199, 199, 869, 199, 1182, 199, 199, 1183, + 1184, 199, 199, 199, 1185, 199, 870, 199, 199, 871, + 1271, 199, 872, 199, 199, 1271, 199, 1186, 868, 199, + 199, 869, 199, 1271, 199, 1271, 1187, 1271, 1271, 1188, + + 199, 1271, 199, 870, 199, 199, 871, 873, 1208, 872, + 199, 199, 199, 199, 1186, 1271, 199, 199, 874, 199, + 199, 199, 199, 1187, 199, 199, 1188, 1209, 199, 199, + 199, 199, 199, 199, 873, 1208, 1210, 199, 199, 199, + 199, 199, 875, 199, 199, 874, 199, 199, 199, 199, + 199, 199, 199, 199, 1209, 199, 199, 199, 199, 1211, + 199, 1212, 1213, 1210, 199, 199, 199, 199, 199, 875, + 199, 876, 1214, 199, 199, 199, 1215, 199, 199, 199, + 199, 1227, 877, 199, 199, 199, 1211, 199, 1212, 1213, + 1228, 878, 1271, 199, 199, 199, 1229, 199, 876, 1214, + + 199, 199, 199, 1215, 199, 199, 199, 199, 1227, 877, + 199, 199, 199, 879, 199, 199, 1271, 1228, 878, 199, + 199, 199, 199, 1229, 199, 199, 1237, 199, 199, 1271, + 1242, 199, 199, 1244, 199, 199, 1271, 199, 199, 1246, + 879, 1248, 199, 880, 1226, 1226, 199, 199, 199, 199, + 1250, 199, 199, 1237, 1252, 199, 881, 1242, 1271, 199, + 1244, 199, 199, 1231, 1226, 199, 1246, 1254, 1248, 1256, + 880, 1271, 199, 1258, 199, 199, 199, 1250, 199, 199, + 882, 1252, 1260, 881, 199, 199, 1236, 199, 199, 1271, + 1271, 883, 199, 199, 1254, 1271, 1256, 199, 199, 199, + + 1258, 199, 1271, 199, 1271, 1239, 199, 882, 1271, 1260, + 1271, 199, 199, 1236, 199, 199, 884, 199, 883, 199, + 199, 1262, 199, 1264, 199, 199, 199, 199, 199, 199, + 199, 199, 1239, 199, 887, 885, 199, 886, 199, 1271, + 1271, 199, 199, 884, 199, 199, 1271, 199, 1262, 199, + 1264, 1271, 199, 199, 199, 199, 199, 199, 199, 1271, + 199, 887, 885, 199, 886, 199, 1271, 1271, 199, 199, + 1271, 199, 199, 199, 199, 888, 199, 890, 889, 199, + 1271, 199, 1271, 199, 199, 1271, 1271, 199, 1271, 199, + 1271, 1271, 1271, 199, 199, 1271, 199, 1271, 199, 199, + + 199, 1271, 888, 199, 890, 889, 1271, 1271, 199, 1271, + 199, 891, 1271, 199, 199, 199, 199, 199, 199, 1271, + 199, 199, 199, 199, 1271, 1271, 199, 199, 1271, 199, + 1271, 199, 1271, 1271, 1271, 1271, 199, 1271, 891, 1271, + 199, 199, 199, 1271, 199, 199, 1271, 1271, 1271, 199, + 199, 1271, 1271, 199, 199, 199, 199, 892, 199, 1271, + 199, 1271, 199, 199, 199, 199, 893, 1271, 199, 199, + 1271, 1271, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, + 199, 1271, 199, 199, 892, 894, 1271, 199, 199, 199, + 1271, 199, 199, 893, 1271, 1271, 199, 1271, 896, 1271, + + 1271, 199, 1271, 199, 1271, 199, 199, 1271, 199, 199, + 199, 199, 894, 199, 895, 199, 199, 1271, 199, 897, + 1271, 199, 1271, 1271, 898, 896, 1271, 1271, 199, 1271, + 199, 1271, 199, 199, 199, 199, 199, 199, 199, 1271, + 199, 895, 199, 199, 199, 199, 897, 1271, 199, 1271, + 199, 898, 199, 1271, 199, 199, 199, 199, 1271, 199, + 199, 199, 199, 1271, 199, 1271, 1271, 899, 1271, 199, + 199, 199, 199, 1271, 900, 1271, 199, 199, 199, 199, + 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, + 1271, 1271, 1271, 1271, 899, 1271, 199, 199, 199, 199, + + 199, 900, 1271, 199, 199, 199, 1271, 199, 901, 199, + 199, 1271, 199, 199, 1271, 199, 199, 199, 1271, 903, + 199, 1271, 199, 199, 199, 199, 1271, 199, 1271, 199, + 199, 199, 199, 1271, 199, 901, 1271, 199, 199, 199, + 199, 902, 199, 199, 199, 1271, 903, 199, 199, 199, + 199, 199, 1271, 1271, 1271, 1271, 199, 199, 199, 199, + 1271, 199, 1271, 1271, 199, 199, 199, 199, 902, 199, + 1271, 199, 199, 1271, 199, 199, 199, 199, 1271, 904, + 1271, 1271, 905, 1271, 199, 199, 199, 1271, 1271, 1271, + 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, + + 1271, 199, 199, 199, 199, 1271, 904, 1271, 199, 905, + 1271, 199, 1271, 199, 199, 1271, 199, 906, 199, 199, + 199, 1271, 199, 199, 199, 1271, 908, 199, 907, 199, + 1271, 199, 199, 1271, 1271, 199, 1271, 1271, 1271, 1271, + 1271, 199, 1271, 199, 906, 199, 1271, 199, 1271, 199, + 199, 199, 1271, 908, 199, 907, 199, 1271, 199, 199, + 1271, 1271, 909, 199, 1271, 199, 1271, 199, 199, 1271, + 1271, 1271, 199, 1271, 1271, 1271, 1271, 199, 1271, 1271, + 1271, 1271, 1271, 199, 1271, 199, 1271, 1271, 1271, 909, + 199, 1271, 199, 1271, 199, 199, 910, 1271, 912, 199, + + 199, 199, 1271, 199, 199, 199, 1271, 911, 199, 199, + 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, 199, + 1271, 199, 1271, 910, 199, 912, 1271, 199, 199, 1271, + 199, 1271, 199, 1271, 911, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 1271, 199, 199, 913, 199, 1271, 199, 199, 199, 1271, + 1271, 1271, 1271, 199, 1271, 1271, 1271, 1271, 199, 199, + 1271, 199, 199, 1271, 199, 914, 199, 199, 1271, 199, + 913, 199, 199, 199, 199, 199, 1271, 199, 915, 1271, + 199, 1271, 199, 199, 1271, 199, 916, 199, 199, 1271, + + 199, 1271, 914, 199, 199, 1271, 199, 1271, 199, 199, + 199, 1271, 199, 199, 199, 915, 199, 917, 918, 199, + 199, 1271, 199, 916, 199, 199, 1271, 199, 1271, 1271, + 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, 199, + 199, 1271, 919, 199, 917, 918, 199, 1271, 199, 199, + 199, 199, 199, 199, 1271, 921, 920, 199, 199, 1271, + 1271, 199, 199, 1271, 1271, 1271, 199, 1271, 1271, 919, + 199, 199, 1271, 199, 1271, 199, 199, 199, 199, 199, + 199, 1271, 921, 920, 199, 199, 199, 1271, 199, 199, + 922, 923, 199, 199, 1271, 199, 199, 199, 199, 1271, + + 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 199, 199, 199, 1271, 1271, 1271, 922, 923, 199, + 199, 199, 199, 199, 199, 199, 1271, 1271, 199, 199, + 199, 199, 1271, 924, 925, 1271, 1271, 1271, 199, 199, + 199, 199, 1271, 1271, 1271, 199, 199, 199, 199, 199, + 199, 199, 199, 1271, 926, 199, 199, 199, 199, 199, + 924, 925, 1271, 927, 1271, 199, 199, 199, 199, 199, + 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, 199, + 1271, 926, 199, 199, 199, 1271, 199, 1271, 1271, 1271, + 927, 1271, 199, 199, 199, 928, 199, 1271, 1271, 199, + + 929, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, + 1271, 199, 1271, 930, 199, 1271, 1271, 199, 1271, 199, + 1271, 199, 928, 199, 199, 1271, 199, 929, 199, 1271, + 199, 199, 199, 199, 1271, 199, 199, 1271, 199, 1271, + 930, 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, + 199, 199, 1271, 199, 199, 199, 1271, 199, 199, 199, + 199, 931, 199, 199, 199, 199, 199, 932, 1271, 1271, + 1271, 1271, 199, 199, 199, 199, 1271, 933, 1271, 1271, + 199, 199, 199, 1271, 199, 199, 1271, 1271, 931, 199, + 199, 199, 1271, 199, 932, 934, 1271, 1271, 199, 199, + + 199, 199, 199, 199, 933, 1271, 199, 199, 199, 199, + 199, 1271, 1271, 199, 935, 1271, 199, 1271, 199, 1271, + 1271, 1271, 934, 199, 1271, 199, 199, 1271, 1271, 199, + 199, 1271, 1271, 199, 199, 199, 1271, 199, 1271, 1271, + 199, 935, 199, 199, 936, 199, 937, 1271, 938, 199, + 199, 1271, 199, 199, 199, 199, 1271, 199, 199, 1271, + 199, 1271, 199, 1271, 199, 1271, 1271, 199, 199, 199, + 199, 936, 1271, 937, 1271, 938, 199, 1271, 1271, 199, + 199, 199, 199, 1271, 199, 199, 199, 199, 1271, 199, + 199, 199, 1271, 1271, 199, 199, 199, 199, 939, 940, + + 199, 1271, 1271, 199, 199, 199, 199, 199, 941, 199, + 199, 1271, 1271, 199, 199, 1271, 1271, 199, 942, 199, + 1271, 1271, 199, 199, 199, 939, 940, 199, 199, 1271, + 199, 199, 199, 199, 1271, 941, 199, 199, 199, 1271, + 199, 199, 1271, 199, 199, 942, 199, 199, 199, 199, + 943, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 944, 1271, 199, 945, 199, 199, 199, 199, 199, + 199, 199, 1271, 1271, 199, 199, 1271, 943, 1271, 199, + 199, 199, 1271, 199, 199, 199, 199, 199, 944, 946, + 199, 945, 199, 199, 199, 199, 199, 1271, 199, 199, + + 199, 199, 1271, 947, 199, 199, 1271, 1271, 199, 1271, + 199, 1271, 1271, 199, 1271, 1271, 946, 1271, 1271, 199, + 1271, 199, 1271, 1271, 1271, 199, 199, 199, 199, 1271, + 947, 199, 199, 1271, 199, 199, 199, 199, 1271, 949, + 199, 199, 1271, 948, 1271, 1271, 199, 199, 1271, 199, + 199, 1271, 199, 1271, 199, 950, 1271, 199, 1271, 199, + 1271, 199, 199, 199, 1271, 1271, 949, 1271, 199, 1271, + 948, 1271, 1271, 199, 199, 1271, 199, 199, 951, 199, + 1271, 199, 950, 199, 199, 199, 199, 952, 199, 199, + 199, 199, 199, 1271, 1271, 199, 199, 199, 199, 953, + + 199, 1271, 1271, 1271, 1271, 951, 199, 199, 199, 1271, + 199, 1271, 199, 1271, 952, 199, 199, 199, 199, 199, + 1271, 1271, 199, 199, 199, 199, 953, 199, 199, 1271, + 1271, 1271, 199, 199, 199, 199, 199, 955, 199, 1271, + 199, 199, 1271, 199, 954, 1271, 199, 199, 199, 1271, + 199, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 199, + 199, 1271, 1271, 199, 955, 199, 1271, 199, 199, 1271, + 199, 954, 1271, 199, 199, 199, 1271, 199, 199, 1271, + 199, 199, 1271, 199, 199, 956, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, + + 1271, 199, 1271, 1271, 199, 199, 1026, 199, 1271, 1271, + 1271, 1271, 956, 199, 1271, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 1271, 199, 199, + 1271, 199, 1027, 1026, 199, 199, 199, 1028, 1271, 199, + 1271, 199, 199, 1271, 1271, 199, 1271, 199, 1271, 199, + 199, 199, 199, 1271, 199, 199, 199, 199, 1271, 1027, + 199, 199, 199, 199, 1028, 1029, 199, 1271, 199, 199, + 199, 1271, 199, 1271, 199, 1031, 199, 199, 1271, 199, + 199, 199, 199, 1271, 199, 1030, 199, 199, 1032, 199, + 199, 1271, 1029, 199, 199, 1271, 199, 199, 1271, 199, + + 199, 1271, 1031, 199, 1271, 1271, 1271, 199, 1271, 199, + 199, 1271, 1030, 199, 1271, 1032, 199, 199, 1271, 1271, + 199, 199, 199, 199, 1033, 1271, 199, 199, 1271, 199, + 1271, 199, 1271, 199, 199, 1271, 199, 199, 199, 1034, + 1271, 1271, 199, 199, 1036, 1271, 199, 1271, 199, 199, + 1271, 1033, 1035, 1271, 199, 1271, 199, 1271, 199, 1271, + 199, 199, 199, 1271, 199, 199, 1034, 1271, 199, 199, + 199, 1036, 199, 199, 1271, 199, 199, 1271, 199, 1035, + 1037, 199, 1271, 1271, 1271, 1271, 199, 1271, 199, 199, + 199, 199, 1271, 1271, 199, 199, 199, 1271, 1039, 199, + + 1038, 1271, 199, 199, 1271, 199, 199, 1037, 1271, 1271, + 199, 1271, 199, 199, 1271, 199, 1271, 199, 1271, 1271, + 1271, 199, 199, 199, 1040, 1039, 199, 1038, 1041, 199, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, + 199, 1271, 199, 1271, 1271, 1271, 1042, 1271, 199, 199, + 199, 1040, 199, 199, 1271, 1041, 199, 199, 199, 199, + 199, 199, 199, 199, 1045, 199, 199, 199, 199, 199, + 1271, 1043, 1271, 1042, 199, 199, 199, 199, 199, 199, + 1044, 1271, 1046, 199, 199, 199, 199, 199, 1271, 199, + 199, 1045, 199, 199, 1271, 199, 1271, 1271, 1043, 1271, + + 199, 199, 199, 199, 199, 199, 1271, 1044, 1271, 1046, + 199, 199, 199, 199, 199, 1047, 199, 199, 199, 199, + 199, 1049, 199, 1271, 1271, 1271, 199, 199, 199, 199, + 199, 199, 1271, 1048, 1050, 1271, 1271, 199, 199, 1271, + 199, 199, 1047, 199, 1053, 199, 199, 199, 1049, 199, + 199, 199, 1051, 199, 199, 199, 199, 199, 199, 1271, + 1048, 1050, 199, 1271, 199, 199, 199, 199, 1271, 1271, + 1271, 1053, 199, 199, 199, 1271, 199, 199, 199, 1051, + 199, 199, 199, 199, 1271, 199, 199, 1271, 1271, 199, + 199, 199, 1271, 199, 199, 1271, 199, 1271, 1271, 199, + + 199, 199, 1271, 199, 199, 1052, 199, 199, 1271, 199, + 199, 1054, 1271, 199, 1271, 1271, 199, 199, 199, 1271, + 199, 199, 1271, 199, 1271, 199, 1271, 199, 1271, 1055, + 199, 199, 1052, 199, 199, 1271, 199, 199, 1054, 1271, + 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, + 1271, 1271, 199, 1271, 199, 1271, 1055, 199, 199, 1271, + 199, 199, 1271, 199, 1271, 199, 1056, 1271, 199, 199, + 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, 199, + 1271, 199, 1271, 1271, 199, 199, 1271, 199, 199, 1271, + 199, 1271, 199, 1056, 1271, 199, 199, 199, 199, 199, + + 199, 199, 1271, 199, 1057, 1271, 199, 1271, 199, 1058, + 1271, 199, 1271, 199, 199, 199, 199, 199, 1271, 199, + 1271, 1059, 199, 199, 1060, 199, 199, 199, 1271, 199, + 199, 1057, 1061, 1271, 199, 199, 1058, 1271, 1271, 199, + 199, 199, 1271, 199, 199, 199, 199, 199, 1059, 1271, + 1271, 1060, 199, 199, 1271, 1271, 199, 199, 199, 1061, + 199, 199, 1271, 1271, 1271, 199, 199, 1271, 1062, 1271, + 199, 199, 199, 1271, 199, 1271, 199, 1271, 199, 199, + 1271, 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, + 1271, 199, 199, 1271, 1063, 1062, 199, 199, 199, 1271, + + 199, 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, + 199, 1271, 199, 1271, 199, 199, 199, 1271, 199, 1271, + 1271, 1063, 1065, 199, 1271, 199, 1271, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 1064, 199, 199, + 199, 199, 199, 199, 1066, 199, 1271, 1271, 199, 1065, + 1067, 1271, 1271, 1271, 199, 1271, 199, 199, 1271, 199, + 199, 199, 199, 199, 1064, 199, 199, 199, 1271, 199, + 199, 1066, 199, 1271, 1271, 199, 1271, 1067, 199, 1271, + 199, 199, 199, 199, 199, 199, 1068, 1271, 199, 199, + 199, 1271, 1271, 199, 199, 1271, 199, 1271, 199, 1271, + + 1069, 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, + 199, 199, 199, 1068, 199, 1271, 199, 199, 199, 1271, + 199, 199, 1271, 199, 199, 199, 1271, 1069, 1271, 1070, + 199, 199, 1271, 1271, 199, 199, 1271, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 1271, 199, 199, 199, + 199, 199, 1071, 1072, 1271, 1271, 1070, 1271, 199, 199, + 199, 199, 1271, 1271, 1073, 199, 199, 199, 199, 199, + 199, 199, 1271, 1271, 199, 199, 199, 199, 199, 1071, + 1072, 1271, 1074, 1271, 199, 199, 199, 199, 199, 1075, + 199, 1073, 1271, 199, 199, 199, 1271, 199, 199, 1271, + + 199, 199, 1271, 199, 1076, 199, 1271, 1271, 199, 1074, + 199, 199, 199, 199, 1271, 199, 1075, 199, 199, 1271, + 199, 199, 1271, 1271, 199, 199, 1271, 199, 199, 1271, + 199, 1076, 199, 1077, 199, 199, 199, 199, 199, 199, + 199, 1271, 199, 1271, 199, 199, 199, 1078, 1271, 1271, + 199, 1271, 199, 1271, 199, 199, 199, 1271, 199, 199, + 1077, 199, 1079, 199, 1271, 199, 199, 1271, 199, 199, + 1271, 199, 1271, 199, 1078, 1080, 199, 199, 199, 199, + 199, 199, 1271, 199, 1081, 199, 199, 1271, 199, 1079, + 1271, 1271, 199, 199, 1271, 199, 199, 199, 199, 199, + + 1271, 1271, 1080, 199, 1082, 199, 1271, 199, 199, 199, + 199, 1081, 199, 199, 1271, 199, 1083, 199, 1271, 199, + 1271, 1271, 199, 199, 199, 199, 199, 1271, 1271, 1271, + 1271, 1082, 1271, 1271, 1271, 199, 199, 199, 199, 199, + 199, 1085, 1271, 1083, 199, 199, 1084, 1271, 1271, 199, + 199, 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 199, + 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 1085, 1086, + 1271, 1271, 199, 1084, 1271, 1271, 199, 199, 199, 199, + 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 1271, + 1271, 199, 199, 1271, 1271, 1271, 1086, 1271, 1087, 1271, + + 1271, 1271, 199, 199, 1271, 199, 1271, 199, 199, 199, + 199, 1088, 199, 1089, 199, 199, 199, 199, 199, 199, + 1271, 1271, 199, 199, 1271, 1087, 199, 1271, 1271, 199, + 199, 1271, 199, 199, 1271, 199, 199, 1271, 1088, 199, + 1089, 1271, 1271, 199, 199, 199, 199, 1271, 1271, 199, + 199, 1091, 1271, 199, 199, 1271, 199, 199, 1271, 199, + 199, 1090, 199, 199, 199, 1271, 199, 1271, 1271, 199, + 1271, 1271, 1271, 199, 199, 1271, 1271, 1271, 1091, 1092, + 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 1090, 199, + 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 1271, + + 199, 199, 199, 1133, 1271, 199, 1092, 199, 199, 199, + 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, + 1271, 199, 1271, 199, 199, 199, 1271, 199, 199, 199, + 1133, 1271, 199, 1271, 199, 199, 199, 199, 199, 199, + 199, 1271, 199, 199, 1134, 199, 1271, 1271, 199, 199, + 199, 199, 1271, 199, 199, 199, 1271, 1271, 199, 1271, + 199, 1271, 1135, 199, 1136, 1271, 1271, 199, 199, 199, + 1271, 1134, 199, 199, 199, 1271, 199, 199, 199, 1271, + 199, 199, 1146, 199, 199, 199, 199, 199, 1137, 1135, + 199, 1136, 199, 199, 199, 199, 199, 1271, 199, 199, + + 199, 199, 199, 1138, 199, 199, 1271, 199, 199, 1146, + 199, 199, 199, 199, 1139, 1137, 199, 199, 1271, 199, + 199, 199, 1271, 199, 1271, 199, 199, 1271, 1271, 199, + 1138, 1271, 199, 1271, 199, 199, 1271, 1271, 199, 199, + 199, 1139, 1271, 199, 199, 199, 1271, 1271, 199, 1271, + 199, 1271, 1271, 199, 199, 1140, 199, 1271, 1271, 1141, + 1271, 199, 1142, 1271, 199, 199, 199, 199, 199, 199, + 199, 1271, 199, 1271, 199, 199, 1271, 199, 1271, 1271, + 199, 199, 1140, 199, 1271, 1271, 1141, 1271, 199, 1142, + 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, + + 1143, 199, 199, 199, 199, 199, 1144, 199, 1271, 1271, + 199, 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 199, + 1271, 199, 199, 199, 199, 1271, 199, 1143, 199, 199, + 199, 199, 199, 1144, 199, 1271, 1271, 199, 1271, 1271, + 1271, 1271, 199, 199, 1271, 199, 1271, 1271, 1145, 199, + 199, 199, 1271, 1271, 1271, 199, 199, 199, 199, 199, + 199, 199, 1271, 1271, 199, 199, 199, 1271, 199, 199, + 199, 1271, 1271, 199, 1271, 1145, 1271, 1271, 199, 1271, + 1271, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 1271, + 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, + + 199, 199, 1271, 1271, 199, 199, 199, 1271, 199, 1271, + 1147, 199, 1271, 1271, 199, 199, 1271, 1271, 1271, 1271, + 199, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, + 1148, 199, 1271, 199, 199, 199, 1271, 1147, 199, 1271, + 1271, 199, 199, 199, 1271, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 1148, 199, 199, + 1271, 199, 1271, 1271, 199, 1271, 1271, 1271, 1271, 1271, + 199, 1271, 199, 199, 1271, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 1271, 199, 199, 199, 199, 199, + 199, 199, 199, 1271, 199, 1271, 1271, 199, 1271, 199, + + 1271, 1271, 199, 199, 1271, 199, 199, 1271, 199, 1271, + 199, 1271, 1149, 199, 199, 199, 199, 199, 199, 199, + 1271, 199, 1271, 1271, 199, 1271, 199, 1150, 1151, 199, + 1271, 199, 199, 199, 1271, 199, 199, 199, 1271, 1149, + 199, 199, 199, 199, 1271, 199, 199, 199, 1152, 1271, + 199, 1271, 199, 199, 1150, 1151, 199, 1271, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 1152, 1271, 199, 1271, 199, + 199, 199, 1271, 199, 1153, 1271, 199, 199, 199, 199, + 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, + + 1271, 1271, 199, 1154, 1271, 1271, 1271, 199, 199, 1271, + 1271, 1153, 1271, 199, 199, 1271, 199, 1271, 199, 1271, + 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, + 1154, 1271, 199, 1271, 199, 1271, 1271, 199, 199, 1271, + 199, 199, 1271, 199, 1271, 199, 1155, 1271, 199, 1271, + 199, 199, 199, 199, 199, 1156, 1157, 1271, 1271, 199, + 199, 199, 1271, 1271, 199, 199, 199, 199, 1271, 1271, + 199, 199, 199, 1155, 199, 199, 199, 199, 199, 199, + 199, 1271, 1156, 1157, 1271, 199, 1271, 199, 199, 1271, + 1158, 1271, 1271, 199, 1271, 199, 1271, 199, 199, 1271, + + 1271, 199, 199, 199, 1271, 1271, 199, 199, 1159, 1160, + 199, 199, 199, 1271, 199, 199, 199, 1158, 199, 1271, + 199, 199, 199, 1161, 1271, 1271, 1271, 199, 199, 199, + 199, 199, 1271, 1271, 1162, 1159, 1160, 199, 199, 199, + 1271, 199, 199, 199, 1271, 199, 1271, 199, 199, 1271, + 1161, 1271, 1271, 1271, 199, 199, 199, 199, 199, 1271, + 199, 1162, 199, 199, 1271, 1163, 199, 199, 1271, 199, + 199, 199, 199, 1271, 1271, 199, 199, 1271, 1271, 1271, + 1271, 199, 1271, 1271, 1271, 1271, 1271, 199, 1271, 199, + 199, 1271, 1163, 1164, 199, 199, 199, 199, 199, 199, + + 199, 1165, 199, 199, 199, 199, 199, 1271, 199, 1271, + 1271, 199, 199, 1271, 199, 1271, 199, 1271, 1271, 199, + 1164, 1271, 199, 1271, 199, 1271, 1271, 199, 1165, 1166, + 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, + 199, 199, 199, 199, 1167, 1271, 199, 199, 1271, 1271, + 1271, 199, 199, 199, 1271, 199, 1166, 1271, 1271, 1271, + 199, 1271, 1271, 1271, 1271, 199, 1271, 199, 1271, 199, + 1271, 1167, 1271, 1271, 199, 1271, 199, 1271, 199, 199, + 199, 1271, 199, 199, 1168, 1271, 1271, 199, 199, 199, + 1271, 199, 199, 1271, 1271, 199, 199, 199, 1271, 1271, + + 1271, 199, 199, 199, 1271, 199, 1271, 199, 1271, 1271, + 199, 1168, 1271, 1271, 1271, 199, 199, 1271, 199, 199, + 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 1271, 199, 199, 199, 199, 199, 1271, 199, 1271, 1169, + 199, 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 1170, + 1271, 199, 199, 199, 199, 1271, 199, 1271, 199, 199, + 199, 199, 199, 199, 199, 199, 1169, 199, 1271, 1271, + 199, 1271, 199, 1271, 1271, 199, 1170, 199, 199, 199, + 1271, 1271, 1271, 199, 199, 1271, 1271, 1271, 199, 199, + 199, 199, 199, 199, 1271, 1271, 1271, 199, 199, 1271, + + 1271, 1271, 199, 199, 199, 199, 199, 199, 1271, 1190, + 1271, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, + 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, 199, + 199, 199, 199, 199, 199, 199, 1190, 1271, 1271, 199, + 199, 199, 1271, 199, 199, 1191, 199, 1271, 1271, 199, + 199, 199, 1271, 1192, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 1271, 199, 1271, 199, 199, 199, + 199, 199, 1191, 1271, 1271, 199, 199, 199, 199, 199, + 1192, 199, 199, 1193, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 1271, + + 1194, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 1193, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 1271, 199, 1271, 1271, 1194, 199, 199, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 1195, + 199, 199, 199, 199, 199, 199, 199, 1196, 199, 199, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, + 199, 199, 199, 1271, 199, 1271, 1195, 1271, 199, 1271, + 199, 1271, 199, 1271, 1196, 1271, 199, 199, 199, 199, + 199, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, + 199, 199, 1271, 199, 1271, 199, 1198, 1197, 199, 1271, + + 199, 199, 1271, 199, 1271, 199, 199, 1271, 1271, 199, + 199, 1199, 199, 199, 1271, 1271, 199, 199, 199, 199, + 199, 199, 199, 1198, 1197, 199, 1271, 199, 199, 199, + 199, 199, 199, 199, 1271, 199, 199, 1271, 1199, 1271, + 199, 199, 1271, 199, 1271, 199, 199, 1271, 199, 199, + 1271, 199, 1271, 199, 1271, 199, 199, 199, 199, 1201, + 1200, 1271, 199, 199, 1271, 199, 1271, 1271, 199, 1271, + 1271, 199, 199, 199, 1271, 199, 199, 1271, 199, 199, + 199, 199, 199, 199, 199, 1271, 1201, 1200, 1271, 199, + 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, 199, + + 199, 199, 199, 1271, 1271, 199, 199, 199, 199, 199, + 199, 1271, 1202, 1271, 1271, 199, 199, 199, 199, 1271, + 1271, 1271, 1271, 1271, 199, 199, 199, 199, 199, 1271, + 1271, 199, 199, 1271, 199, 1271, 199, 199, 1271, 1202, + 1203, 199, 199, 1271, 199, 199, 1206, 199, 1271, 1204, + 199, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, + 1271, 199, 1271, 1271, 199, 199, 199, 1203, 199, 1271, + 1205, 1271, 199, 1206, 199, 199, 1204, 199, 199, 1271, + 199, 199, 199, 199, 199, 199, 199, 1271, 199, 1271, + 199, 199, 199, 199, 199, 1271, 1271, 1205, 199, 1271, + + 199, 199, 199, 1271, 199, 1271, 199, 199, 199, 1271, + 199, 199, 199, 1271, 199, 1271, 199, 199, 199, 1217, + 199, 199, 1271, 1271, 199, 199, 199, 199, 199, 1271, + 199, 199, 199, 199, 199, 1218, 199, 199, 199, 1271, + 199, 199, 199, 199, 199, 1271, 1217, 199, 1271, 1271, + 1271, 199, 199, 199, 199, 1271, 1271, 199, 1271, 199, + 199, 199, 1218, 199, 199, 199, 1271, 199, 199, 199, + 199, 199, 199, 199, 1271, 1219, 1271, 199, 199, 199, + 199, 199, 1271, 199, 1271, 1271, 1271, 199, 199, 1271, + 1271, 199, 1271, 199, 1271, 199, 1271, 199, 1271, 199, + + 199, 1271, 1219, 1271, 199, 199, 1271, 199, 199, 1271, + 199, 1271, 199, 1271, 1271, 199, 1271, 199, 199, 1221, + 199, 1220, 1271, 1271, 199, 199, 1271, 199, 199, 199, + 1271, 199, 199, 199, 1271, 199, 1271, 199, 199, 199, + 1271, 1271, 1271, 199, 199, 199, 1221, 1271, 1220, 1271, + 1271, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 1271, + 199, 199, 199, 199, 1271, 1271, 199, 199, 1223, 1271, + 1224, 199, 1222, 1271, 1271, 199, 199, 199, 199, 199, + 199, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, + + 199, 199, 1271, 199, 199, 1223, 1271, 1224, 199, 1222, + 1231, 1226, 199, 199, 199, 1271, 1232, 199, 199, 1271, + 199, 199, 199, 199, 199, 1271, 199, 199, 199, 1233, + 1271, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 199, + 1271, 1271, 1271, 1232, 199, 199, 1271, 199, 199, 199, + 1271, 199, 1271, 199, 199, 199, 1233, 1271, 199, 1271, + 199, 199, 199, 199, 199, 199, 199, 199, 1271, 199, + 199, 199, 199, 199, 199, 1271, 1271, 1271, 199, 199, + 1271, 1271, 199, 199, 1271, 199, 1271, 199, 1271, 199, + 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, 1234, + + 199, 199, 1271, 199, 199, 199, 199, 199, 199, 199, + 199, 1271, 1271, 199, 199, 199, 199, 1240, 1271, 1271, + 199, 1271, 199, 199, 199, 1271, 1234, 199, 1271, 1271, + 199, 199, 1271, 1271, 199, 199, 199, 1271, 1271, 1271, + 199, 199, 199, 1271, 1240, 199, 1271, 199, 1271, 199, + 199, 199, 199, 1271, 199, 1271, 1271, 199, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 199, + 1271, 1271, 1271, 1271, 199, 46, 46, 46, 46, 46, + 88, 1271, 1271, 88, 88, 184, 184, 184, 1271, 184, + + 186, 1271, 186, 186, 186, 189, 1271, 189, 189, 189, + 199, 1271, 199, 199, 199, 7, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271 } ; -static const flex_int16_t yy_chk[8294] = +static const flex_int16_t yy_chk[8393] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1987,898 +2008,909 @@ static const flex_int16_t yy_chk[8294] = 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 49, 49, 22, 23, 30, 21, - 1242, 21, 22, 1236, 23, 21, 21, 31, 1235, 44, + 1274, 21, 22, 1268, 23, 21, 21, 31, 1267, 44, - 1234, 23, 22, 24, 23, 1233, 27, 24, 21, 22, + 1266, 23, 22, 24, 23, 1265, 27, 24, 21, 22, 21, 24, 27, 22, 23, 30, 21, 24, 21, 22, 24, 23, 21, 21, 31, 25, 44, 25, 23, 22, 24, 23, 25, 27, 24, 43, 43, 25, 24, 27, - 1231, 32, 28, 1229, 24, 32, 55, 24, 50, 50, - 28, 32, 25, 1227, 25, 1225, 28, 55, 1223, 25, + 1263, 32, 28, 1261, 24, 32, 55, 24, 50, 50, + 28, 32, 25, 1259, 25, 1257, 28, 55, 1255, 25, 58, 58, 43, 43, 25, 26, 86, 86, 32, 28, 34, 33, 32, 26, 99, 33, 26, 28, 32, 26, - 29, 33, 26, 28, 34, 26, 29, 29, 29, 1221, - 34, 34, 26, 29, 1219, 38, 100, 34, 33, 38, + 29, 33, 26, 28, 34, 26, 29, 29, 29, 1253, + 34, 34, 26, 29, 187, 187, 100, 34, 33, 1251, - 26, 99, 33, 26, 1217, 38, 26, 29, 33, 26, + 26, 99, 33, 26, 1208, 1208, 26, 29, 33, 26, 36, 34, 26, 29, 29, 29, 35, 34, 34, 103, - 29, 36, 38, 100, 35, 104, 38, 36, 35, 106, - 107, 35, 38, 41, 1215, 41, 1213, 36, 41, 42, - 1211, 110, 1209, 35, 185, 185, 103, 42, 36, 1178, - 1178, 35, 104, 1206, 36, 35, 106, 107, 35, 39, - 41, 39, 41, 109, 39, 41, 42, 39, 110, 39, - 109, 39, 39, 1203, 42, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 101, 39, 1198, 39, 102, - 109, 39, 102, 101, 39, 116, 39, 109, 39, 39, - - 40, 112, 117, 67, 40, 67, 118, 40, 40, 67, - 67, 112, 101, 119, 40, 67, 102, 40, 1193, 102, - 101, 1185, 116, 1177, 1160, 1143, 1105, 40, 112, 117, - 67, 40, 67, 118, 40, 40, 67, 67, 112, 1067, - 119, 40, 67, 1001, 40, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 61, 61, 120, 61, - 61, 61, 61, 61, 61, 122, 68, 123, 935, 845, - 68, 755, 105, 105, 68, 61, 61, 61, 70, 113, - 68, 61, 70, 61, 113, 120, 105, 124, 70, 61, - 68, 61, 122, 68, 123, 61, 61, 68, 70, 105, - - 105, 68, 115, 115, 638, 70, 113, 68, 61, 70, - 61, 113, 521, 105, 124, 70, 61, 68, 61, 402, - 125, 282, 61, 61, 189, 70, 187, 90, 88, 115, - 115, 61, 62, 62, 85, 62, 62, 62, 62, 62, - 62, 60, 59, 126, 71, 72, 73, 125, 71, 72, - 73, 62, 62, 62, 71, 72, 73, 127, 62, 111, - 111, 111, 62, 111, 71, 72, 73, 77, 62, 77, - 126, 71, 72, 73, 77, 71, 72, 73, 62, 77, - 52, 71, 72, 73, 127, 62, 111, 111, 111, 62, - 111, 71, 72, 73, 77, 62, 77, 128, 51, 78, - - 84, 77, 129, 78, 84, 62, 77, 62, 63, 78, - 84, 130, 63, 131, 130, 63, 63, 132, 134, 78, - 84, 135, 63, 137, 128, 63, 78, 84, 47, 129, - 78, 84, 63, 45, 138, 63, 78, 84, 130, 63, - 131, 130, 63, 63, 132, 134, 78, 84, 135, 63, - 137, 81, 63, 81, 139, 81, 140, 20, 81, 63, - 64, 138, 82, 81, 64, 141, 82, 141, 64, 143, - 82, 144, 145, 146, 64, 148, 82, 64, 81, 149, - 81, 139, 81, 140, 64, 81, 82, 64, 150, 82, - 81, 64, 141, 82, 141, 64, 143, 82, 144, 145, - - 146, 64, 148, 82, 64, 19, 149, 11, 7, 4, - 152, 64, 65, 82, 83, 150, 65, 83, 83, 65, - 136, 65, 65, 153, 83, 147, 65, 154, 147, 155, - 136, 65, 65, 3, 83, 136, 136, 152, 0, 65, - 0, 83, 158, 65, 83, 83, 65, 136, 65, 65, - 153, 83, 147, 65, 154, 147, 155, 136, 65, 65, - 66, 83, 136, 136, 66, 114, 159, 114, 66, 158, - 114, 66, 160, 121, 66, 121, 114, 66, 156, 121, - 66, 0, 156, 114, 66, 0, 121, 66, 0, 0, - 121, 66, 114, 159, 114, 66, 163, 114, 66, 160, - - 121, 66, 121, 114, 66, 156, 121, 66, 157, 156, - 114, 66, 69, 121, 142, 161, 142, 121, 69, 69, - 69, 157, 162, 163, 161, 69, 157, 142, 164, 165, - 69, 0, 161, 166, 167, 157, 162, 0, 169, 69, - 170, 142, 161, 142, 171, 69, 69, 69, 157, 162, - 172, 161, 69, 157, 142, 164, 165, 69, 74, 161, - 166, 167, 74, 162, 168, 169, 74, 170, 174, 175, - 172, 171, 74, 173, 176, 168, 173, 172, 74, 74, - 176, 177, 74, 0, 178, 74, 179, 180, 285, 74, - 287, 168, 288, 74, 177, 174, 175, 172, 0, 74, - - 173, 176, 168, 173, 290, 74, 74, 176, 177, 74, - 75, 178, 292, 179, 180, 285, 75, 287, 75, 288, - 293, 177, 75, 75, 294, 75, 295, 296, 75, 0, - 0, 290, 0, 0, 0, 0, 0, 75, 0, 292, - 0, 297, 0, 75, 299, 75, 0, 293, 300, 75, - 75, 294, 75, 295, 296, 75, 76, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 76, 297, 76, - 301, 299, 302, 76, 76, 300, 303, 0, 304, 76, - 0, 0, 0, 76, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 76, 0, 76, 301, 305, 302, - - 76, 76, 0, 303, 197, 304, 76, 79, 197, 79, - 306, 307, 79, 79, 197, 79, 0, 79, 308, 79, - 79, 0, 198, 198, 197, 305, 309, 198, 310, 79, - 0, 197, 312, 198, 79, 197, 79, 306, 307, 79, - 79, 197, 79, 198, 79, 308, 79, 79, 199, 198, - 198, 197, 199, 309, 198, 310, 79, 80, 199, 312, - 198, 80, 311, 199, 80, 80, 313, 314, 199, 315, - 198, 80, 316, 317, 80, 199, 319, 311, 320, 199, - 321, 80, 0, 0, 80, 199, 0, 0, 80, 311, - 199, 80, 80, 313, 314, 199, 315, 0, 80, 316, - - 317, 80, 0, 319, 311, 320, 0, 321, 80, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 200, 322, 200, 202, 323, 202, 324, 200, 200, - 202, 202, 0, 200, 0, 325, 202, 283, 283, 283, - 283, 283, 283, 283, 283, 283, 283, 0, 200, 322, - 200, 202, 323, 202, 324, 200, 200, 202, 202, 203, - 200, 201, 325, 202, 201, 298, 205, 298, 203, 326, - - 203, 205, 201, 205, 201, 203, 327, 0, 205, 201, - 203, 0, 298, 205, 201, 0, 203, 0, 201, 328, - 0, 201, 298, 205, 298, 203, 326, 203, 205, 201, - 205, 201, 203, 327, 206, 205, 201, 203, 206, 298, - 205, 201, 204, 204, 206, 329, 328, 207, 204, 330, - 204, 207, 0, 331, 206, 204, 204, 207, 332, 0, - 204, 206, 333, 0, 0, 206, 0, 207, 0, 204, - 204, 206, 329, 334, 207, 204, 330, 204, 207, 209, - 331, 206, 204, 204, 207, 332, 208, 204, 208, 333, - 209, 211, 209, 208, 207, 211, 335, 209, 208, 336, - - 334, 211, 209, 0, 0, 0, 209, 0, 0, 337, - 0, 211, 0, 208, 0, 208, 0, 209, 211, 209, - 208, 0, 211, 335, 209, 208, 336, 338, 211, 209, - 210, 210, 210, 339, 210, 212, 337, 210, 211, 212, - 340, 214, 210, 214, 341, 212, 343, 214, 214, 344, - 212, 346, 347, 214, 338, 212, 0, 210, 210, 210, - 339, 210, 212, 0, 210, 0, 212, 340, 214, 210, - 214, 341, 212, 343, 214, 214, 344, 212, 346, 347, - 214, 348, 212, 213, 349, 213, 351, 352, 213, 353, - 215, 217, 215, 217, 213, 354, 213, 215, 217, 215, - - 0, 213, 215, 217, 0, 0, 213, 355, 348, 0, - 213, 349, 213, 351, 352, 213, 353, 215, 217, 215, - 217, 213, 354, 213, 215, 217, 215, 216, 213, 215, - 217, 216, 223, 213, 355, 218, 223, 216, 342, 357, - 219, 358, 223, 218, 359, 218, 360, 216, 342, 219, - 218, 219, 223, 0, 216, 218, 219, 361, 216, 223, - 0, 219, 218, 223, 216, 342, 357, 219, 358, 223, - 218, 359, 218, 360, 216, 342, 219, 218, 219, 223, - 350, 0, 218, 219, 361, 221, 0, 221, 219, 220, - 350, 220, 221, 0, 362, 220, 222, 221, 222, 363, - - 224, 220, 220, 222, 224, 0, 220, 350, 222, 0, - 224, 220, 221, 224, 221, 0, 220, 350, 220, 221, - 224, 362, 220, 222, 221, 222, 363, 224, 220, 220, - 222, 224, 225, 220, 364, 222, 225, 224, 220, 226, - 224, 226, 225, 365, 227, 228, 226, 224, 227, 228, - 366, 226, 225, 367, 227, 228, 0, 368, 0, 225, - 0, 364, 0, 225, 227, 228, 226, 0, 226, 225, - 365, 227, 228, 226, 369, 227, 228, 366, 226, 225, - 367, 227, 228, 229, 368, 229, 370, 230, 371, 230, - 229, 227, 228, 229, 230, 229, 231, 372, 231, 230, - - 0, 369, 0, 231, 373, 231, 0, 0, 231, 374, - 229, 0, 229, 370, 230, 371, 230, 229, 0, 376, - 229, 230, 229, 231, 372, 231, 230, 232, 377, 232, - 231, 373, 231, 233, 232, 231, 374, 233, 234, 232, - 378, 379, 234, 233, 380, 236, 376, 236, 234, 234, - 0, 0, 236, 233, 232, 377, 232, 236, 234, 0, - 233, 232, 381, 382, 233, 234, 232, 378, 379, 234, - 233, 380, 236, 237, 236, 234, 234, 237, 238, 236, - 233, 0, 238, 237, 236, 234, 235, 0, 238, 381, - 382, 0, 0, 237, 235, 383, 235, 0, 238, 384, - - 237, 235, 235, 385, 237, 238, 235, 239, 239, 238, - 237, 239, 242, 235, 242, 238, 386, 239, 242, 242, - 237, 235, 383, 235, 242, 238, 384, 239, 235, 235, - 385, 388, 0, 235, 239, 239, 0, 0, 239, 242, - 243, 242, 243, 386, 239, 242, 242, 243, 0, 391, - 0, 242, 243, 0, 239, 240, 0, 392, 388, 240, - 255, 240, 389, 240, 255, 240, 0, 243, 393, 243, - 255, 389, 394, 262, 243, 240, 391, 262, 0, 243, - 255, 0, 240, 262, 392, 395, 240, 255, 240, 389, - 240, 255, 240, 262, 0, 393, 0, 255, 389, 394, - - 262, 396, 240, 241, 262, 241, 244, 255, 244, 390, - 262, 390, 395, 244, 241, 245, 241, 245, 244, 397, - 262, 241, 245, 245, 399, 398, 241, 245, 396, 398, - 241, 0, 241, 244, 400, 244, 390, 522, 390, 0, - 244, 241, 245, 241, 245, 244, 397, 523, 241, 245, - 245, 399, 398, 241, 245, 246, 398, 246, 247, 0, - 247, 400, 246, 246, 522, 247, 246, 246, 248, 0, - 247, 250, 524, 250, 523, 0, 525, 0, 250, 248, - 0, 248, 246, 250, 246, 247, 248, 247, 0, 246, - 246, 248, 247, 246, 246, 248, 249, 247, 250, 524, - - 250, 526, 249, 525, 249, 250, 248, 251, 248, 249, - 250, 0, 527, 248, 249, 251, 528, 251, 248, 0, - 529, 0, 251, 249, 0, 530, 0, 251, 526, 249, - 0, 249, 0, 532, 251, 535, 249, 536, 252, 527, - 252, 249, 251, 528, 251, 252, 252, 529, 254, 251, - 252, 253, 530, 253, 251, 537, 538, 253, 253, 254, - 532, 254, 535, 253, 536, 252, 254, 252, 0, 540, - 541, 254, 252, 252, 542, 254, 256, 252, 253, 0, - 253, 0, 537, 538, 253, 253, 254, 256, 254, 256, - 253, 0, 544, 254, 256, 257, 540, 541, 254, 256, - - 257, 542, 257, 256, 545, 0, 258, 257, 258, 0, - 546, 0, 257, 258, 256, 0, 256, 547, 258, 544, - 0, 256, 257, 548, 0, 0, 256, 257, 0, 257, - 549, 545, 259, 258, 257, 258, 259, 546, 259, 257, - 258, 550, 268, 259, 547, 258, 268, 261, 259, 0, - 548, 261, 268, 551, 552, 261, 555, 549, 0, 259, - 0, 261, 268, 259, 0, 259, 0, 0, 550, 268, - 259, 261, 556, 268, 261, 259, 260, 0, 261, 268, - 551, 552, 261, 555, 0, 260, 263, 260, 261, 268, - 263, 264, 260, 260, 263, 264, 0, 260, 261, 556, - - 263, 264, 0, 260, 264, 557, 0, 558, 559, 0, - 263, 264, 260, 263, 260, 560, 561, 263, 264, 260, - 260, 263, 264, 266, 260, 265, 266, 263, 264, 265, - 266, 264, 557, 265, 558, 559, 266, 263, 264, 265, - 0, 0, 560, 561, 0, 563, 266, 0, 564, 265, - 266, 269, 265, 266, 567, 269, 265, 266, 568, 269, - 265, 269, 570, 266, 0, 572, 265, 267, 267, 267, - 573, 269, 563, 266, 267, 564, 265, 0, 269, 267, - 270, 567, 269, 574, 270, 568, 269, 0, 269, 570, - 270, 270, 572, 575, 267, 267, 267, 573, 269, 0, - - 270, 267, 0, 273, 273, 0, 267, 270, 273, 0, - 574, 270, 0, 576, 273, 0, 577, 270, 270, 272, - 575, 0, 578, 272, 273, 0, 272, 270, 271, 272, - 273, 273, 271, 578, 274, 273, 271, 580, 274, 272, - 576, 273, 271, 577, 274, 0, 272, 0, 271, 578, - 272, 273, 271, 272, 274, 271, 272, 0, 584, 271, - 578, 274, 586, 271, 580, 274, 272, 0, 587, 271, - 275, 274, 275, 589, 276, 271, 275, 275, 276, 271, - 591, 274, 275, 592, 276, 584, 277, 276, 404, 586, - 277, 593, 404, 0, 276, 587, 277, 275, 404, 275, - - 589, 276, 0, 275, 275, 276, 277, 591, 404, 275, - 592, 276, 278, 277, 276, 404, 278, 277, 593, 404, - 279, 276, 278, 277, 279, 404, 595, 278, 279, 408, - 596, 408, 278, 277, 279, 404, 408, 590, 590, 278, - 597, 408, 598, 278, 279, 0, 0, 279, 0, 278, - 0, 279, 0, 595, 278, 279, 408, 596, 408, 278, - 0, 279, 0, 408, 590, 590, 0, 597, 408, 598, - 599, 279, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 403, 405, 406, 407, 0, 405, 406, 407, 409, - 0, 409, 405, 406, 407, 0, 409, 599, 601, 602, - - 604, 409, 405, 406, 407, 411, 0, 411, 0, 405, - 406, 407, 411, 405, 406, 407, 409, 411, 409, 405, - 406, 407, 410, 409, 0, 601, 602, 604, 409, 405, - 406, 407, 411, 410, 411, 410, 605, 412, 413, 411, - 410, 412, 413, 606, 411, 410, 0, 412, 413, 410, - 0, 415, 607, 608, 609, 415, 0, 412, 413, 610, - 410, 415, 410, 605, 412, 413, 0, 410, 412, 413, - 606, 415, 410, 414, 412, 413, 611, 414, 415, 607, - 608, 609, 415, 414, 412, 413, 610, 416, 415, 416, - 417, 414, 417, 414, 416, 614, 0, 417, 415, 416, - - 414, 615, 417, 611, 414, 0, 0, 616, 0, 0, - 414, 617, 0, 618, 416, 0, 416, 417, 414, 417, - 414, 416, 614, 420, 417, 0, 416, 420, 615, 417, - 418, 419, 418, 420, 616, 419, 418, 621, 617, 420, - 618, 419, 418, 420, 419, 421, 0, 418, 622, 421, - 420, 419, 418, 421, 420, 421, 0, 418, 419, 418, - 420, 0, 419, 418, 621, 421, 420, 624, 419, 418, - 420, 419, 421, 422, 418, 622, 421, 422, 419, 418, - 421, 423, 421, 422, 625, 423, 426, 626, 422, 627, - 426, 423, 421, 422, 624, 424, 426, 628, 0, 424, - - 422, 423, 629, 424, 422, 0, 426, 630, 423, 424, - 422, 625, 423, 426, 626, 422, 627, 426, 423, 424, - 422, 0, 424, 426, 628, 425, 424, 425, 423, 629, - 424, 631, 425, 426, 630, 633, 424, 425, 427, 635, - 427, 428, 637, 428, 0, 427, 424, 758, 428, 760, - 427, 429, 425, 428, 425, 429, 0, 762, 631, 425, - 0, 429, 633, 763, 425, 427, 635, 427, 428, 637, - 428, 429, 427, 764, 758, 428, 760, 427, 429, 430, - 428, 431, 429, 430, 762, 431, 0, 430, 429, 765, - 763, 431, 0, 430, 766, 767, 431, 768, 429, 769, - - 764, 431, 0, 430, 770, 432, 430, 432, 431, 433, - 430, 432, 431, 433, 430, 0, 765, 432, 431, 433, - 430, 766, 767, 431, 768, 772, 769, 432, 431, 433, - 430, 770, 432, 434, 432, 773, 433, 434, 432, 774, - 433, 775, 435, 434, 432, 435, 433, 436, 434, 435, - 0, 436, 772, 434, 432, 435, 433, 436, 436, 0, - 434, 776, 773, 0, 434, 435, 774, 436, 775, 435, - 434, 778, 435, 437, 436, 434, 435, 437, 436, 0, - 434, 779, 435, 437, 436, 436, 438, 439, 776, 780, - 438, 439, 435, 437, 436, 439, 438, 781, 778, 440, - - 437, 439, 782, 440, 437, 0, 438, 0, 779, 440, - 437, 439, 0, 438, 439, 783, 780, 438, 439, 440, - 437, 0, 439, 438, 781, 441, 440, 441, 439, 782, - 440, 441, 442, 438, 442, 0, 440, 441, 439, 442, - 0, 443, 783, 443, 442, 0, 440, 441, 443, 0, - 784, 0, 441, 443, 441, 0, 0, 785, 441, 442, - 445, 442, 445, 786, 441, 0, 442, 445, 443, 0, - 443, 442, 445, 0, 441, 443, 444, 784, 444, 0, - 443, 446, 444, 444, 785, 446, 787, 445, 444, 445, - 786, 446, 447, 790, 445, 0, 447, 791, 0, 445, - - 447, 446, 0, 444, 0, 444, 447, 793, 446, 444, - 444, 0, 446, 787, 0, 444, 447, 796, 446, 447, - 790, 448, 449, 447, 791, 448, 449, 447, 446, 448, - 449, 448, 449, 447, 793, 799, 800, 0, 450, 0, - 450, 448, 449, 447, 796, 450, 0, 802, 448, 449, - 450, 805, 448, 449, 451, 0, 448, 449, 448, 449, - 0, 808, 799, 800, 451, 450, 451, 450, 448, 449, - 809, 451, 450, 452, 802, 452, 451, 450, 805, 0, - 452, 451, 452, 453, 810, 452, 454, 453, 808, 453, - 454, 451, 0, 451, 453, 0, 454, 809, 451, 453, - - 452, 0, 452, 451, 0, 811, 454, 452, 0, 452, - 453, 810, 452, 454, 453, 455, 453, 454, 456, 455, - 0, 453, 456, 454, 812, 455, 453, 0, 456, 0, - 455, 456, 811, 454, 813, 455, 0, 0, 456, 0, - 816, 0, 455, 458, 457, 456, 455, 458, 457, 456, - 457, 812, 455, 458, 457, 456, 459, 455, 456, 0, - 459, 813, 455, 458, 457, 456, 459, 816, 460, 461, - 458, 457, 460, 461, 458, 457, 459, 457, 460, 461, - 458, 457, 462, 459, 817, 818, 462, 459, 460, 461, - 458, 457, 462, 459, 463, 460, 461, 819, 463, 460, - - 461, 0, 462, 459, 463, 460, 461, 0, 820, 462, - 463, 817, 818, 462, 463, 460, 461, 0, 822, 462, - 464, 463, 464, 0, 819, 463, 465, 464, 465, 462, - 467, 463, 464, 465, 467, 820, 0, 463, 465, 0, - 467, 463, 823, 824, 466, 822, 466, 464, 825, 464, - 467, 466, 466, 465, 464, 465, 466, 467, 827, 464, - 465, 467, 468, 469, 469, 465, 468, 467, 469, 823, - 824, 466, 468, 466, 469, 825, 828, 467, 466, 466, - 829, 830, 468, 466, 469, 827, 831, 0, 832, 468, - 469, 469, 833, 468, 471, 469, 471, 801, 471, 468, - - 801, 469, 834, 828, 471, 0, 836, 829, 830, 468, - 837, 469, 470, 831, 471, 832, 470, 0, 838, 833, - 470, 471, 470, 471, 801, 471, 470, 801, 472, 834, - 472, 471, 472, 836, 840, 0, 470, 837, 472, 470, - 473, 471, 0, 470, 473, 838, 841, 470, 472, 470, - 473, 0, 842, 470, 474, 472, 473, 472, 474, 472, - 473, 840, 475, 470, 474, 472, 475, 473, 936, 474, - 938, 473, 475, 841, 474, 472, 940, 473, 475, 842, - 476, 474, 475, 473, 476, 474, 941, 473, 942, 475, - 476, 474, 0, 475, 477, 936, 474, 938, 477, 475, - - 476, 474, 477, 940, 943, 475, 0, 476, 477, 475, - 945, 476, 478, 941, 478, 942, 947, 476, 477, 478, - 0, 477, 948, 949, 478, 477, 479, 476, 479, 477, - 950, 943, 479, 479, 952, 477, 954, 945, 479, 478, - 480, 478, 480, 947, 481, 477, 478, 480, 481, 948, - 949, 478, 480, 479, 481, 479, 958, 950, 482, 479, - 479, 952, 482, 954, 481, 479, 960, 480, 482, 480, - 0, 481, 483, 961, 480, 481, 483, 0, 482, 480, - 483, 481, 967, 958, 0, 482, 483, 968, 969, 482, - 484, 481, 484, 960, 0, 482, 483, 484, 972, 483, - - 961, 974, 484, 483, 485, 482, 485, 483, 485, 967, - 976, 485, 0, 483, 968, 969, 485, 484, 978, 484, - 486, 486, 486, 483, 484, 972, 979, 486, 974, 484, - 0, 485, 486, 485, 487, 485, 487, 976, 485, 488, - 980, 487, 982, 485, 983, 978, 487, 486, 486, 486, - 488, 0, 488, 979, 486, 0, 984, 488, 0, 486, - 985, 487, 488, 487, 987, 0, 488, 980, 487, 982, - 989, 983, 0, 487, 489, 991, 489, 488, 491, 488, - 491, 489, 489, 984, 488, 491, 489, 985, 490, 488, - 491, 987, 490, 0, 490, 0, 492, 989, 992, 490, - - 492, 489, 991, 489, 490, 491, 492, 491, 489, 489, - 493, 0, 491, 489, 493, 490, 492, 491, 494, 490, - 493, 490, 494, 492, 993, 992, 490, 492, 494, 994, - 493, 490, 495, 492, 999, 1000, 495, 493, 494, 1072, - 496, 493, 495, 492, 496, 494, 1075, 493, 1076, 494, - 496, 993, 495, 496, 497, 494, 994, 493, 497, 495, - 496, 999, 1000, 495, 497, 494, 1072, 496, 1079, 495, - 0, 496, 497, 1075, 497, 1076, 1080, 496, 498, 495, - 496, 497, 498, 1085, 1086, 497, 0, 496, 498, 498, - 499, 497, 499, 0, 1089, 1079, 1090, 499, 498, 497, - - 0, 497, 499, 1080, 1093, 498, 500, 1094, 500, 498, - 1085, 1086, 1097, 500, 500, 498, 498, 499, 500, 499, - 501, 1089, 501, 1090, 499, 498, 1099, 501, 501, 499, - 1100, 1093, 501, 500, 1094, 500, 502, 0, 502, 1097, - 500, 500, 1101, 502, 504, 500, 504, 501, 502, 501, - 1102, 504, 504, 1099, 501, 501, 504, 1100, 1144, 501, - 503, 1146, 503, 502, 503, 502, 1149, 503, 1152, 1101, - 502, 504, 503, 504, 505, 502, 505, 1102, 504, 504, - 506, 505, 1156, 504, 506, 1144, 505, 503, 1146, 503, - 506, 503, 507, 1149, 503, 1152, 507, 1157, 1158, 503, - - 506, 505, 507, 505, 1179, 1181, 1184, 506, 505, 1156, - 0, 506, 507, 505, 508, 0, 508, 506, 1197, 507, - 0, 508, 0, 507, 1157, 1158, 508, 506, 509, 507, - 0, 1179, 1181, 1184, 510, 509, 1204, 509, 510, 507, - 1207, 508, 509, 508, 510, 1197, 510, 509, 508, 1194, - 1194, 0, 0, 508, 510, 509, 511, 1199, 1199, 0, - 511, 510, 509, 1204, 509, 510, 511, 1207, 0, 509, - 0, 510, 0, 510, 509, 0, 511, 513, 512, 513, - 1210, 510, 512, 511, 513, 0, 512, 511, 514, 513, - 514, 1194, 512, 511, 0, 514, 0, 514, 1212, 1199, - - 514, 0, 512, 511, 513, 512, 513, 1210, 1214, 512, - 0, 513, 515, 512, 0, 514, 513, 514, 1194, 512, - 1216, 515, 514, 515, 514, 1212, 1199, 514, 515, 512, - 516, 1218, 516, 515, 1220, 1214, 1222, 516, 1224, 515, - 1226, 516, 516, 0, 517, 0, 517, 1216, 515, 0, - 515, 517, 517, 0, 1228, 515, 517, 516, 1218, 516, - 515, 1220, 0, 1222, 516, 1224, 0, 1226, 516, 516, - 518, 517, 518, 517, 0, 0, 518, 518, 517, 517, - 519, 1228, 518, 517, 519, 0, 519, 0, 520, 0, - 520, 519, 0, 0, 520, 520, 519, 518, 0, 518, - - 520, 0, 0, 518, 518, 0, 0, 519, 0, 518, - 0, 519, 0, 519, 0, 520, 0, 520, 519, 0, - 0, 520, 520, 519, 639, 641, 639, 520, 0, 641, - 639, 639, 640, 0, 640, 641, 639, 0, 640, 640, - 0, 0, 0, 0, 640, 641, 0, 0, 0, 0, - 642, 639, 641, 639, 642, 0, 641, 639, 639, 640, - 642, 640, 641, 639, 645, 640, 640, 0, 645, 643, - 642, 640, 641, 643, 645, 0, 644, 642, 644, 643, - 0, 642, 643, 644, 645, 0, 0, 642, 644, 643, - 0, 645, 646, 0, 646, 645, 643, 642, 647, 646, - - 643, 645, 647, 644, 646, 644, 643, 0, 647, 643, - 644, 645, 0, 648, 0, 644, 643, 648, 647, 646, - 0, 646, 0, 648, 649, 647, 646, 0, 649, 647, - 0, 646, 649, 648, 0, 647, 0, 650, 649, 0, - 648, 650, 651, 0, 648, 647, 651, 650, 649, 0, - 648, 649, 651, 0, 0, 649, 0, 650, 0, 649, - 648, 0, 651, 652, 650, 649, 0, 652, 650, 651, - 0, 652, 653, 651, 650, 649, 653, 652, 0, 651, - 653, 654, 653, 0, 650, 654, 0, 652, 0, 651, - 652, 654, 653, 0, 652, 0, 656, 0, 652, 653, - - 656, 654, 0, 653, 652, 0, 656, 653, 654, 653, - 0, 655, 654, 0, 652, 655, 656, 0, 654, 653, - 0, 655, 0, 656, 655, 657, 668, 656, 654, 657, - 668, 655, 658, 656, 658, 657, 668, 0, 655, 658, - 657, 0, 655, 656, 658, 657, 668, 0, 655, 0, - 0, 655, 657, 668, 0, 0, 657, 668, 655, 658, - 0, 658, 657, 668, 0, 0, 658, 657, 659, 0, - 659, 658, 657, 668, 0, 659, 659, 660, 0, 660, - 659, 661, 0, 661, 660, 0, 0, 0, 661, 660, - 0, 0, 0, 661, 0, 659, 0, 659, 0, 0, - - 0, 0, 659, 659, 660, 0, 660, 659, 661, 0, - 661, 660, 662, 662, 662, 661, 660, 0, 0, 662, - 661, 663, 0, 663, 662, 0, 0, 0, 663, 0, - 663, 0, 0, 663, 0, 664, 0, 664, 0, 662, - 662, 662, 664, 664, 0, 665, 662, 664, 663, 0, - 663, 662, 0, 0, 0, 663, 665, 663, 665, 666, - 663, 666, 664, 665, 664, 666, 666, 0, 665, 664, - 664, 666, 665, 667, 664, 0, 0, 0, 0, 0, - 0, 0, 667, 665, 667, 665, 666, 0, 666, 667, - 665, 0, 666, 666, 667, 665, 0, 0, 666, 0, - - 667, 669, 0, 669, 0, 670, 0, 670, 669, 667, - 0, 667, 670, 669, 0, 0, 667, 670, 0, 0, - 0, 667, 0, 0, 671, 0, 671, 0, 669, 0, - 669, 671, 670, 0, 670, 669, 671, 0, 0, 670, - 669, 0, 0, 672, 670, 672, 0, 672, 0, 0, - 672, 671, 673, 671, 673, 672, 673, 0, 671, 673, - 0, 0, 0, 671, 673, 0, 674, 0, 674, 0, - 672, 0, 672, 674, 672, 674, 0, 672, 674, 673, - 0, 673, 672, 673, 0, 0, 673, 0, 676, 0, - 0, 673, 0, 674, 0, 674, 675, 0, 675, 676, - - 674, 676, 674, 675, 675, 674, 676, 0, 675, 677, - 0, 676, 0, 0, 678, 676, 0, 0, 678, 0, - 677, 0, 677, 675, 678, 675, 676, 677, 676, 0, - 675, 675, 677, 676, 678, 675, 677, 0, 676, 0, - 679, 678, 680, 0, 679, 678, 680, 677, 0, 677, - 679, 678, 680, 0, 677, 0, 0, 680, 0, 677, - 679, 678, 680, 0, 681, 0, 682, 679, 681, 680, - 682, 679, 681, 680, 0, 0, 682, 679, 681, 680, - 0, 0, 0, 0, 680, 0, 682, 679, 681, 680, - 683, 681, 0, 682, 683, 681, 0, 682, 684, 681, - - 683, 0, 684, 682, 0, 681, 684, 687, 0, 687, - 683, 0, 684, 682, 687, 681, 0, 683, 0, 687, - 685, 683, 684, 0, 685, 684, 0, 683, 686, 684, - 685, 685, 686, 684, 687, 0, 687, 683, 686, 684, - 685, 687, 0, 0, 0, 0, 687, 685, 686, 684, - 0, 685, 0, 0, 688, 686, 688, 685, 685, 686, - 0, 688, 689, 0, 689, 686, 688, 685, 0, 689, - 0, 0, 690, 0, 689, 686, 690, 0, 0, 0, - 0, 688, 690, 688, 0, 0, 0, 0, 688, 689, - 0, 689, 690, 688, 691, 0, 689, 0, 691, 690, - - 0, 689, 0, 690, 691, 0, 692, 691, 692, 690, - 693, 0, 693, 692, 691, 0, 693, 693, 692, 690, - 0, 691, 693, 0, 0, 691, 0, 0, 0, 0, - 0, 691, 0, 692, 691, 692, 0, 693, 0, 693, - 692, 691, 0, 693, 693, 692, 694, 0, 694, 693, - 0, 0, 694, 694, 0, 696, 0, 696, 694, 0, - 0, 0, 696, 0, 0, 0, 0, 696, 0, 0, - 0, 0, 0, 694, 0, 694, 0, 0, 0, 694, - 694, 0, 696, 0, 696, 694, 695, 0, 697, 696, - 697, 695, 0, 695, 696, 697, 0, 695, 695, 698, - - 697, 698, 699, 695, 699, 0, 698, 0, 0, 699, - 0, 698, 0, 695, 699, 697, 0, 697, 695, 0, - 695, 0, 697, 0, 695, 695, 698, 697, 698, 699, - 695, 699, 700, 698, 700, 701, 699, 701, 698, 700, - 0, 699, 701, 701, 700, 0, 702, 701, 702, 0, - 0, 0, 0, 702, 0, 0, 0, 0, 702, 700, - 0, 700, 701, 0, 701, 703, 700, 703, 0, 701, - 701, 700, 703, 702, 701, 702, 0, 703, 704, 0, - 702, 0, 704, 705, 0, 702, 706, 705, 704, 0, - 706, 0, 703, 705, 703, 0, 706, 0, 704, 703, - - 707, 0, 707, 705, 703, 704, 706, 707, 707, 704, - 705, 0, 707, 706, 705, 704, 0, 706, 0, 0, - 705, 0, 0, 706, 0, 704, 0, 707, 0, 707, - 705, 0, 708, 706, 707, 707, 708, 0, 708, 707, - 709, 710, 709, 708, 0, 710, 709, 709, 708, 0, - 0, 710, 709, 0, 0, 0, 711, 0, 0, 708, - 711, 710, 0, 708, 0, 708, 711, 709, 710, 709, - 708, 0, 710, 709, 709, 708, 711, 0, 710, 709, - 712, 713, 712, 711, 0, 713, 712, 711, 710, 0, - 0, 713, 712, 711, 0, 0, 0, 0, 0, 0, - - 0, 713, 712, 711, 0, 0, 0, 712, 713, 712, - 714, 715, 713, 712, 714, 715, 0, 0, 713, 712, - 714, 715, 0, 714, 715, 0, 0, 0, 713, 712, - 714, 715, 0, 0, 0, 716, 717, 714, 715, 716, - 717, 714, 715, 716, 0, 716, 717, 714, 715, 0, - 714, 715, 0, 0, 0, 716, 717, 714, 715, 0, - 718, 719, 716, 717, 718, 719, 716, 717, 718, 719, - 716, 0, 716, 717, 718, 719, 0, 0, 0, 0, - 0, 0, 716, 717, 718, 719, 0, 718, 719, 720, - 721, 718, 719, 720, 721, 718, 719, 0, 721, 720, - - 721, 718, 719, 0, 0, 0, 0, 0, 0, 720, - 721, 718, 719, 0, 0, 0, 720, 721, 722, 723, - 720, 721, 722, 723, 0, 721, 720, 721, 722, 723, - 0, 722, 0, 0, 723, 0, 720, 721, 722, 723, - 724, 0, 0, 724, 725, 722, 723, 724, 725, 722, - 723, 0, 725, 724, 725, 722, 723, 0, 722, 0, - 0, 723, 0, 724, 725, 722, 723, 724, 0, 0, - 724, 725, 0, 727, 724, 725, 726, 0, 726, 725, - 724, 725, 727, 726, 727, 0, 0, 0, 726, 727, - 724, 725, 728, 0, 727, 0, 728, 729, 0, 0, - - 727, 729, 728, 726, 0, 726, 731, 729, 731, 727, - 726, 727, 728, 731, 0, 726, 727, 729, 731, 728, - 0, 727, 730, 728, 729, 0, 730, 732, 729, 728, - 0, 732, 730, 731, 729, 731, 0, 732, 0, 728, - 731, 0, 730, 0, 729, 731, 733, 732, 0, 730, - 733, 734, 0, 730, 732, 734, 733, 0, 732, 730, - 0, 734, 0, 0, 732, 0, 733, 0, 0, 730, - 0, 734, 0, 733, 732, 735, 736, 733, 734, 735, - 736, 0, 734, 733, 0, 735, 736, 0, 734, 0, - 737, 0, 0, 733, 737, 735, 736, 738, 734, 738, - - 737, 0, 735, 736, 738, 0, 735, 736, 0, 738, - 737, 0, 735, 736, 0, 0, 0, 737, 739, 0, - 739, 737, 735, 736, 738, 739, 738, 737, 0, 0, - 739, 738, 740, 0, 740, 0, 738, 737, 0, 740, - 0, 0, 741, 0, 740, 739, 0, 739, 742, 0, - 742, 741, 739, 741, 0, 742, 0, 739, 741, 740, - 742, 740, 0, 741, 0, 0, 740, 0, 0, 741, - 0, 740, 743, 0, 743, 742, 0, 742, 741, 743, - 741, 743, 742, 0, 743, 741, 745, 742, 745, 744, - 741, 0, 0, 745, 745, 0, 0, 0, 745, 743, - - 744, 743, 744, 0, 0, 0, 743, 744, 743, 0, - 0, 743, 744, 745, 0, 745, 744, 0, 747, 746, - 745, 745, 747, 0, 746, 745, 746, 744, 747, 744, - 0, 746, 0, 0, 744, 0, 746, 748, 747, 744, - 748, 748, 0, 0, 0, 747, 746, 748, 0, 747, - 749, 746, 0, 746, 749, 747, 0, 748, 746, 0, - 749, 0, 750, 746, 748, 747, 750, 748, 748, 0, - 749, 0, 750, 0, 748, 751, 752, 749, 750, 751, - 752, 749, 750, 0, 748, 751, 752, 749, 753, 750, - 0, 0, 753, 750, 0, 751, 752, 749, 753, 750, - - 0, 0, 751, 752, 0, 750, 751, 752, 753, 750, - 0, 0, 751, 752, 754, 753, 754, 0, 0, 753, - 0, 754, 751, 752, 0, 753, 754, 846, 0, 846, - 847, 0, 847, 0, 846, 753, 0, 847, 848, 846, - 848, 754, 847, 754, 0, 848, 0, 0, 754, 0, - 848, 0, 848, 754, 846, 0, 846, 847, 0, 847, - 0, 846, 0, 0, 847, 848, 846, 848, 849, 847, - 849, 0, 848, 0, 850, 849, 0, 848, 850, 848, - 849, 0, 0, 851, 850, 0, 852, 851, 0, 0, - 852, 0, 0, 851, 850, 849, 852, 849, 0, 0, - - 0, 850, 849, 851, 0, 850, 852, 849, 0, 0, - 851, 850, 853, 852, 851, 0, 853, 852, 0, 0, - 851, 850, 853, 852, 855, 855, 0, 853, 0, 855, - 851, 0, 853, 852, 854, 855, 0, 0, 854, 853, - 0, 0, 854, 853, 0, 855, 0, 0, 854, 853, - 0, 855, 855, 0, 853, 0, 855, 0, 854, 853, - 0, 854, 855, 0, 856, 854, 856, 0, 0, 854, - 856, 857, 855, 857, 0, 854, 856, 0, 857, 0, - 858, 0, 858, 857, 0, 854, 856, 858, 858, 0, - 0, 856, 858, 856, 0, 0, 0, 856, 857, 0, - - 857, 0, 859, 856, 0, 857, 859, 858, 0, 858, - 857, 0, 859, 856, 858, 858, 860, 861, 0, 858, - 860, 861, 859, 0, 0, 0, 860, 861, 0, 859, - 862, 863, 0, 859, 862, 863, 860, 861, 0, 859, - 862, 863, 0, 860, 861, 0, 0, 860, 861, 859, - 862, 863, 864, 860, 861, 0, 864, 862, 863, 0, - 864, 862, 863, 860, 861, 0, 864, 862, 863, 0, - 0, 0, 0, 865, 0, 865, 864, 862, 863, 864, - 865, 0, 0, 864, 866, 865, 867, 864, 866, 0, - 867, 0, 0, 864, 866, 0, 867, 0, 0, 0, - - 865, 0, 865, 864, 866, 0, 867, 865, 0, 0, - 868, 866, 865, 867, 868, 866, 0, 867, 0, 0, - 868, 866, 871, 867, 869, 872, 871, 0, 869, 872, - 868, 866, 871, 867, 869, 872, 870, 868, 870, 869, - 0, 868, 871, 870, 869, 872, 0, 868, 870, 871, - 0, 869, 872, 871, 0, 869, 872, 868, 0, 871, - 0, 869, 872, 870, 873, 870, 869, 0, 873, 871, - 870, 869, 872, 874, 873, 870, 0, 874, 875, 873, - 875, 0, 876, 874, 873, 875, 876, 0, 874, 0, - 875, 873, 876, 874, 0, 873, 0, 0, 0, 0, - - 874, 873, 876, 0, 874, 875, 873, 875, 0, 876, - 874, 873, 875, 876, 0, 874, 877, 875, 877, 876, - 874, 878, 877, 0, 0, 878, 879, 0, 877, 876, - 879, 878, 0, 0, 0, 881, 879, 881, 877, 0, - 0, 878, 881, 877, 0, 877, 879, 881, 878, 877, - 0, 0, 878, 879, 0, 877, 880, 879, 878, 0, - 880, 0, 881, 879, 881, 877, 880, 0, 878, 881, - 882, 880, 882, 879, 881, 0, 880, 882, 884, 883, - 884, 0, 882, 880, 883, 884, 883, 880, 0, 0, - 884, 883, 0, 880, 0, 0, 883, 882, 880, 882, - - 0, 0, 0, 880, 882, 884, 883, 884, 885, 882, - 885, 883, 884, 883, 886, 885, 886, 884, 883, 0, - 885, 886, 886, 883, 0, 0, 886, 887, 0, 887, - 0, 0, 0, 0, 887, 885, 0, 885, 888, 887, - 888, 886, 885, 886, 0, 888, 0, 885, 886, 886, - 888, 0, 0, 886, 887, 0, 887, 0, 0, 0, - 0, 887, 889, 0, 889, 888, 887, 888, 0, 889, - 889, 891, 888, 891, 889, 890, 0, 888, 891, 890, - 892, 891, 892, 891, 0, 890, 0, 892, 0, 889, - 0, 889, 892, 0, 0, 890, 889, 889, 891, 0, - - 891, 889, 890, 0, 0, 891, 890, 892, 891, 892, - 891, 893, 890, 893, 892, 0, 0, 895, 893, 892, - 0, 0, 890, 893, 894, 895, 894, 895, 0, 0, - 0, 894, 895, 0, 0, 0, 894, 895, 893, 0, - 893, 0, 0, 0, 895, 893, 0, 0, 0, 0, - 893, 894, 895, 894, 895, 896, 0, 896, 894, 895, - 0, 898, 896, 894, 895, 898, 897, 896, 897, 0, - 0, 898, 0, 897, 0, 0, 0, 0, 897, 0, - 0, 898, 896, 0, 896, 0, 0, 0, 898, 896, - 0, 0, 898, 897, 896, 897, 0, 899, 898, 899, - - 897, 0, 900, 0, 899, 897, 0, 0, 898, 899, - 901, 0, 901, 900, 0, 900, 0, 901, 901, 0, - 900, 0, 901, 0, 899, 900, 899, 0, 0, 900, - 0, 899, 0, 0, 0, 0, 899, 901, 0, 901, - 900, 0, 900, 0, 901, 901, 0, 900, 0, 901, - 902, 903, 900, 903, 902, 904, 902, 904, 903, 903, - 0, 902, 904, 903, 0, 0, 902, 904, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 902, 903, 0, - 903, 902, 904, 902, 904, 903, 903, 0, 902, 904, - 903, 0, 0, 902, 904, 905, 906, 905, 0, 907, - - 906, 908, 905, 907, 0, 908, 906, 905, 920, 907, - 920, 908, 907, 0, 908, 920, 906, 0, 0, 907, - 920, 908, 905, 906, 905, 0, 907, 906, 908, 905, - 907, 0, 908, 906, 905, 920, 907, 920, 908, 907, - 909, 908, 920, 906, 909, 910, 907, 920, 908, 910, - 909, 0, 0, 911, 912, 910, 0, 911, 912, 0, - 909, 0, 912, 911, 0, 910, 0, 909, 912, 0, - 0, 909, 910, 911, 0, 0, 910, 909, 912, 0, - 911, 912, 910, 0, 911, 912, 0, 909, 0, 912, - 911, 0, 910, 913, 0, 912, 0, 913, 914, 914, - - 911, 913, 0, 914, 0, 912, 925, 913, 925, 914, - 0, 916, 915, 925, 0, 916, 915, 913, 925, 914, - 913, 916, 915, 0, 913, 914, 914, 915, 913, 0, - 914, 916, 915, 925, 913, 925, 914, 917, 916, 915, - 925, 917, 916, 915, 913, 925, 914, 917, 916, 915, - 918, 918, 919, 0, 915, 918, 919, 917, 916, 915, - 919, 918, 0, 921, 917, 921, 919, 0, 917, 921, - 921, 918, 0, 0, 917, 921, 919, 918, 918, 919, - 0, 0, 918, 919, 917, 0, 0, 919, 918, 0, - 921, 0, 921, 919, 0, 0, 921, 921, 918, 922, - - 0, 922, 921, 919, 923, 0, 922, 922, 0, 926, - 0, 922, 924, 926, 0, 923, 0, 923, 0, 926, - 0, 0, 923, 924, 0, 924, 922, 923, 922, 926, - 924, 923, 0, 922, 922, 924, 926, 0, 922, 924, - 926, 928, 923, 0, 923, 928, 926, 0, 0, 923, - 924, 928, 924, 0, 923, 0, 926, 924, 927, 927, - 929, 928, 924, 927, 929, 0, 0, 0, 928, 927, - 929, 0, 928, 0, 0, 0, 0, 0, 928, 927, - 929, 0, 930, 0, 930, 927, 927, 929, 928, 930, - 927, 929, 931, 0, 930, 0, 927, 929, 0, 0, - - 0, 0, 0, 931, 0, 931, 927, 929, 0, 930, - 931, 930, 0, 932, 0, 931, 930, 0, 0, 931, - 0, 930, 0, 0, 932, 0, 932, 933, 0, 933, - 931, 932, 931, 0, 933, 0, 932, 931, 0, 933, - 932, 0, 931, 934, 0, 934, 0, 0, 0, 0, - 934, 932, 0, 932, 933, 934, 933, 0, 932, 0, - 0, 933, 0, 932, 1002, 1003, 933, 0, 1002, 1003, - 934, 1004, 934, 1004, 1002, 1003, 0, 934, 1004, 0, - 0, 0, 934, 1004, 1002, 1003, 0, 1005, 0, 1005, - 0, 1002, 1003, 0, 1005, 1002, 1003, 0, 1004, 1005, - - 1004, 1002, 1003, 0, 0, 1004, 1006, 0, 1006, 0, - 1004, 1002, 1003, 1006, 1005, 0, 1005, 0, 1006, 1007, - 0, 1005, 0, 1007, 0, 0, 1005, 1008, 0, 1007, - 0, 1008, 0, 1006, 0, 1006, 1009, 1008, 1009, 1007, - 1006, 0, 1008, 1009, 0, 1006, 1007, 1008, 1009, 0, - 1007, 0, 0, 0, 1008, 1010, 1007, 1010, 1008, 0, - 0, 0, 1010, 1009, 1008, 1009, 1007, 1010, 0, 1008, - 1009, 1011, 0, 1011, 1008, 1009, 0, 0, 1011, 1012, - 0, 1012, 1010, 1011, 1010, 0, 1012, 0, 0, 1010, - 0, 1012, 0, 0, 1010, 1013, 1013, 1013, 1011, 0, - - 1011, 0, 1013, 0, 0, 1011, 1012, 1013, 1012, 0, - 1011, 0, 0, 1012, 0, 0, 1014, 0, 1012, 1015, - 0, 1015, 1013, 1013, 1013, 1014, 1015, 1014, 1016, 1013, - 1016, 1015, 1014, 0, 1013, 1016, 1016, 1014, 0, 0, - 1016, 0, 0, 1014, 0, 0, 1015, 0, 1015, 1017, - 0, 1017, 1014, 1015, 1014, 1016, 1017, 1016, 1015, 1014, - 1018, 1017, 1016, 1016, 1014, 0, 0, 1016, 0, 0, - 1018, 0, 1018, 1019, 0, 1019, 1017, 1018, 1017, 0, - 1019, 0, 1018, 1017, 0, 1019, 0, 1018, 1017, 0, - 0, 0, 1020, 0, 0, 0, 0, 1018, 0, 1018, - - 1019, 1020, 1019, 1020, 1018, 0, 0, 1019, 1020, 1018, - 0, 0, 1019, 1020, 1021, 1022, 1021, 1022, 0, 1020, - 0, 1021, 1022, 0, 0, 0, 1021, 1022, 1020, 0, - 1020, 0, 0, 0, 0, 1020, 0, 0, 0, 0, - 1020, 1021, 1022, 1021, 1022, 1023, 1024, 1023, 1021, 1022, - 1024, 1025, 1023, 1021, 1022, 1025, 1024, 1023, 1026, 0, - 1026, 1025, 0, 0, 0, 1026, 1024, 0, 0, 0, - 1026, 1025, 1023, 1024, 1023, 0, 0, 1024, 1025, 1023, - 0, 0, 1025, 1024, 1023, 1026, 0, 1026, 1025, 0, - 0, 0, 1026, 1024, 1027, 0, 1027, 1026, 1025, 0, - - 0, 1027, 1027, 1028, 0, 1028, 1027, 1029, 0, 1029, - 1028, 0, 0, 0, 1029, 1028, 0, 0, 0, 1029, - 0, 1027, 0, 1027, 0, 0, 0, 0, 1027, 1027, - 1028, 0, 1028, 1027, 1029, 0, 1029, 1028, 1030, 0, - 1030, 1029, 1028, 0, 0, 1030, 1029, 1031, 0, 1031, - 1030, 1032, 0, 1032, 1031, 0, 0, 0, 1032, 1031, - 0, 0, 0, 1032, 0, 1030, 0, 1030, 0, 0, - 0, 0, 1030, 0, 1031, 0, 1031, 1030, 1032, 0, - 1032, 1031, 1033, 1034, 1033, 1032, 1031, 1034, 1033, 1033, - 1032, 0, 0, 1034, 1033, 0, 0, 1036, 1035, 0, - - 0, 1036, 1035, 1034, 0, 0, 1035, 1036, 0, 1033, - 1034, 1033, 1035, 0, 1034, 1033, 1033, 1036, 0, 0, - 1034, 1033, 1035, 0, 1036, 1035, 0, 1037, 1036, 1035, - 1034, 1037, 0, 1035, 1036, 0, 1038, 1037, 1038, 1035, - 0, 0, 0, 1038, 1036, 0, 0, 1037, 1038, 1035, - 1039, 0, 1039, 0, 1037, 0, 0, 1039, 1037, 1040, - 0, 1040, 1039, 1038, 1037, 1038, 1040, 0, 0, 0, - 1038, 1040, 0, 0, 1037, 1038, 0, 1039, 1041, 1039, - 1041, 1042, 0, 0, 1039, 1041, 1040, 0, 1040, 1039, - 1041, 0, 1042, 1040, 1042, 0, 0, 0, 1040, 1042, - - 0, 0, 0, 0, 1042, 1041, 0, 1041, 1042, 0, - 0, 1043, 1041, 1043, 0, 0, 0, 1041, 1043, 1042, - 1044, 1042, 1044, 1043, 0, 0, 1042, 1044, 1044, 0, - 0, 1042, 1044, 1045, 0, 0, 0, 1045, 1043, 0, - 1043, 0, 1046, 1045, 0, 1043, 1046, 1044, 0, 1044, - 1043, 0, 1046, 1045, 1044, 1044, 0, 1047, 0, 1044, - 1045, 1047, 1046, 0, 1045, 0, 0, 1047, 0, 1046, - 1045, 0, 0, 1046, 0, 0, 0, 1047, 0, 1046, - 1045, 1048, 0, 1048, 1047, 0, 0, 1048, 1047, 1046, - 1049, 0, 1049, 1048, 1047, 0, 1049, 0, 0, 1050, - - 0, 1050, 1049, 1048, 1047, 0, 1050, 0, 1048, 0, - 1048, 1050, 1049, 0, 1048, 0, 0, 1049, 0, 1049, - 1048, 0, 0, 1049, 0, 1051, 1050, 1051, 1050, 1049, - 1048, 0, 1051, 1050, 1052, 0, 1052, 1051, 1050, 1049, - 0, 1052, 0, 1053, 0, 1053, 1052, 0, 0, 0, - 1053, 0, 1051, 0, 1051, 1053, 0, 0, 0, 1051, - 0, 1052, 0, 1052, 1051, 0, 0, 1054, 1052, 1054, - 1053, 0, 1053, 1052, 1054, 0, 1055, 1053, 1055, 1054, - 0, 0, 1053, 1055, 0, 1056, 0, 1056, 1055, 0, - 0, 0, 1056, 0, 1054, 0, 1054, 1056, 1057, 0, - - 0, 1054, 0, 1055, 0, 1055, 1054, 0, 0, 1057, - 1055, 1057, 1056, 0, 1056, 1055, 1057, 1058, 1059, 1056, - 0, 1057, 0, 0, 1056, 1057, 0, 1059, 1058, 1059, - 1058, 0, 0, 0, 1059, 1058, 1057, 0, 1057, 1059, - 1058, 0, 0, 1057, 1058, 1059, 0, 0, 1057, 0, - 0, 1060, 0, 1060, 1059, 1058, 1059, 1058, 1060, 1060, - 0, 1059, 1058, 1060, 0, 0, 1059, 1058, 0, 1061, - 1062, 1061, 1062, 0, 0, 0, 1061, 1062, 1060, 0, - 1060, 1061, 1062, 0, 0, 1060, 1060, 0, 0, 0, - 1060, 0, 0, 1063, 0, 1063, 1061, 1062, 1061, 1062, - - 1063, 0, 0, 1061, 1062, 1063, 0, 0, 1061, 1062, - 0, 1064, 0, 1064, 0, 0, 0, 0, 1064, 1065, - 1063, 1065, 1063, 1064, 0, 1065, 1065, 1063, 0, 0, - 0, 1065, 1063, 0, 0, 1066, 0, 1066, 1064, 0, - 1064, 0, 1066, 0, 0, 1064, 1065, 1066, 1065, 1106, - 1064, 1106, 1065, 1065, 0, 0, 1106, 0, 1065, 0, - 0, 1106, 1066, 1107, 1066, 1107, 0, 0, 0, 1066, - 1107, 0, 0, 0, 1066, 1107, 1106, 1108, 1106, 1108, - 0, 0, 0, 1106, 1108, 0, 0, 0, 1106, 1108, - 1107, 1109, 1107, 1109, 0, 1110, 0, 1107, 1109, 1110, - - 0, 0, 1107, 1109, 1108, 1110, 1108, 0, 0, 1111, - 0, 1108, 0, 1111, 0, 1110, 1108, 1112, 1109, 1111, - 1109, 1112, 1110, 0, 0, 1109, 1110, 1112, 0, 1111, - 1109, 1113, 1110, 0, 0, 1113, 1111, 1112, 0, 1114, - 1111, 1113, 1110, 1114, 1112, 1115, 1111, 1114, 1112, 1115, - 0, 1113, 0, 1114, 1112, 1115, 1111, 1116, 1113, 0, - 0, 1116, 1113, 1114, 1112, 1115, 1114, 1116, 1113, 1117, - 1114, 1118, 1115, 1117, 1114, 1118, 1115, 1116, 1113, 1117, - 1114, 1118, 1115, 1119, 1116, 0, 1118, 1119, 1116, 1117, - 1114, 1118, 1115, 1119, 1116, 1120, 1117, 1121, 1118, 1120, - - 1117, 1121, 1118, 1119, 1116, 1120, 1117, 1121, 1118, 0, - 1119, 0, 0, 1118, 1119, 1120, 1117, 1121, 1118, 1122, - 1119, 0, 1120, 1122, 1121, 1123, 1120, 1123, 1121, 1122, - 1119, 1123, 1120, 1124, 1121, 1124, 1125, 1123, 1125, 1122, - 1124, 0, 1120, 1125, 1121, 1124, 1122, 1123, 1125, 0, - 1122, 0, 1123, 0, 1123, 0, 1122, 0, 1123, 0, - 1124, 0, 1124, 1125, 1123, 1125, 1122, 1124, 0, 1126, - 1125, 1126, 1124, 0, 1123, 1125, 1126, 1127, 0, 1127, - 0, 1126, 1128, 1127, 1127, 0, 1128, 1129, 0, 1127, - 0, 1129, 1128, 0, 0, 1130, 1126, 1129, 1126, 1130, - - 0, 0, 1128, 1126, 1127, 1130, 1127, 1129, 1126, 1128, - 1127, 1127, 0, 1128, 1129, 1130, 1127, 0, 1129, 1128, - 0, 1131, 1130, 0, 1129, 1131, 1130, 0, 0, 1128, - 0, 1131, 1130, 1132, 1129, 0, 1131, 1132, 0, 1132, - 0, 1131, 1130, 1132, 0, 1133, 0, 1134, 1131, 1133, - 0, 1134, 1131, 1132, 0, 1133, 0, 1134, 1131, 0, - 1132, 0, 0, 1131, 1132, 1133, 1132, 1134, 1131, 1136, - 1132, 1135, 1133, 1136, 1134, 1135, 1133, 0, 1134, 1136, - 1132, 1135, 1133, 0, 1134, 0, 1135, 0, 0, 1136, - 0, 1135, 1133, 0, 1134, 1138, 1136, 1137, 1135, 1138, - - 1136, 1137, 1135, 1138, 0, 1138, 1136, 1137, 1135, 0, - 1137, 0, 0, 1135, 0, 1138, 1136, 1137, 1135, 1140, - 0, 1139, 1138, 1140, 1137, 1139, 1138, 0, 1137, 1140, - 1138, 1139, 1138, 0, 1137, 0, 1139, 1137, 0, 1140, - 0, 1139, 1138, 0, 1137, 1141, 1140, 1142, 1139, 1141, - 1140, 1142, 1139, 0, 0, 1141, 1140, 1142, 1139, 0, - 1161, 0, 0, 1139, 1161, 1141, 1140, 1142, 1139, 0, - 1161, 0, 1141, 1161, 1142, 1162, 1141, 0, 1142, 1162, - 1161, 0, 1141, 0, 1142, 1162, 0, 1161, 0, 1163, - 0, 1161, 1141, 1163, 1142, 1162, 0, 1161, 0, 1163, - - 1161, 1164, 1162, 0, 1163, 1164, 1162, 1161, 0, 1163, - 0, 1164, 1162, 1165, 1166, 1167, 1163, 1165, 1166, 1167, - 1163, 1164, 1162, 1165, 1166, 1167, 1163, 0, 1164, 1166, - 0, 1163, 1164, 1165, 1166, 1167, 1163, 0, 1164, 1168, - 1165, 1166, 1167, 1168, 1165, 1166, 1167, 0, 1164, 1168, - 1165, 1166, 1167, 1170, 1169, 0, 1166, 1170, 1169, 1168, - 1165, 1166, 1167, 1170, 1169, 0, 1168, 1169, 1171, 0, - 1168, 0, 1171, 1170, 1169, 0, 1168, 0, 1171, 0, - 1170, 1169, 0, 1172, 1170, 1169, 1168, 1172, 1171, 0, - 1170, 1169, 1173, 1172, 1169, 1171, 1173, 0, 0, 1171, - - 1170, 1169, 1173, 1172, 0, 1171, 0, 1174, 0, 0, - 1172, 1174, 1173, 0, 1172, 1171, 0, 1174, 1174, 1173, - 1172, 1175, 1176, 1173, 0, 1175, 1176, 1174, 0, 1173, - 1172, 1175, 1176, 0, 1174, 1186, 1186, 0, 1174, 1173, - 0, 1175, 1176, 0, 1174, 1174, 1187, 1188, 1175, 1176, - 1187, 1188, 1175, 1176, 1174, 0, 1187, 1188, 1175, 1176, - 1186, 0, 0, 0, 1186, 0, 1187, 1188, 1175, 1176, - 1186, 0, 0, 1187, 1188, 0, 0, 1187, 1188, 0, - 1186, 0, 1192, 1187, 1188, 0, 1192, 1186, 1189, 0, - 1189, 1186, 1192, 1187, 1188, 1189, 1190, 1186, 1190, 1191, - - 1189, 1191, 1192, 1190, 0, 0, 1191, 1186, 1190, 1192, - 0, 1191, 0, 1192, 1200, 1189, 0, 1189, 1200, 1192, - 0, 0, 1189, 1190, 1200, 1190, 1191, 1189, 1191, 1192, - 1190, 0, 1201, 1191, 1200, 1190, 1201, 1202, 1191, 1202, - 0, 1200, 1201, 0, 1202, 1200, 1208, 0, 1208, 1202, - 0, 1200, 1201, 1208, 0, 0, 0, 0, 1208, 1201, - 0, 1200, 0, 1201, 1202, 0, 1202, 0, 0, 1201, - 0, 1202, 0, 1208, 0, 1208, 1202, 0, 0, 1201, - 1208, 0, 0, 0, 0, 1208, 1240, 1240, 1240, 1240, - 1240, 1241, 0, 0, 1241, 1241, 1243, 1243, 1243, 0, - - 1243, 1244, 0, 1244, 1244, 1244, 1245, 0, 1245, 1245, - 1245, 1246, 0, 1246, 1246, 1246, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239 + 29, 36, 38, 100, 35, 1249, 38, 36, 35, 104, + 38, 35, 35, 41, 106, 41, 38, 36, 41, 1247, + 1245, 107, 1243, 35, 42, 1241, 103, 1238, 36, 38, + 1235, 35, 42, 38, 36, 35, 104, 38, 35, 35, + 41, 106, 41, 38, 39, 41, 39, 101, 107, 39, + 102, 42, 39, 102, 39, 101, 39, 39, 1230, 42, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 110, 39, 1225, 39, 101, 1216, 39, 102, 116, 39, + + 102, 39, 101, 39, 39, 40, 112, 117, 67, 40, + 67, 109, 40, 40, 67, 67, 112, 110, 109, 40, + 67, 118, 40, 1207, 1189, 116, 1171, 1132, 1093, 1025, + 957, 865, 40, 112, 117, 67, 40, 67, 109, 40, + 40, 67, 67, 112, 773, 109, 40, 67, 118, 40, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 61, 61, 119, 61, 61, 61, 61, 61, 61, + 120, 68, 122, 652, 531, 68, 409, 105, 105, 68, + 61, 61, 61, 70, 113, 68, 61, 70, 61, 113, + 119, 105, 123, 70, 61, 68, 61, 120, 68, 122, + + 61, 61, 68, 70, 105, 105, 68, 115, 115, 286, + 70, 113, 68, 61, 70, 61, 113, 191, 105, 123, + 70, 61, 68, 61, 189, 124, 90, 61, 61, 88, + 70, 85, 60, 59, 115, 115, 61, 62, 62, 52, + 62, 62, 62, 62, 62, 62, 51, 47, 125, 71, + 72, 73, 124, 71, 72, 73, 62, 62, 62, 71, + 72, 73, 126, 62, 111, 111, 111, 62, 111, 71, + 72, 73, 77, 62, 77, 125, 71, 72, 73, 77, + 71, 72, 73, 62, 77, 45, 71, 72, 73, 126, + 62, 111, 111, 111, 62, 111, 71, 72, 73, 77, + + 62, 77, 20, 19, 11, 127, 77, 128, 129, 7, + 62, 77, 62, 63, 131, 78, 132, 63, 134, 78, + 63, 63, 130, 78, 81, 130, 81, 63, 81, 78, + 63, 81, 127, 135, 128, 129, 81, 63, 4, 78, + 63, 131, 78, 132, 63, 134, 78, 63, 63, 130, + 78, 81, 130, 81, 63, 81, 78, 63, 81, 3, + 135, 0, 0, 81, 63, 64, 78, 82, 84, 64, + 137, 82, 84, 64, 138, 82, 0, 139, 84, 64, + 140, 82, 64, 83, 143, 144, 83, 83, 84, 64, + 0, 82, 64, 83, 82, 84, 64, 137, 82, 84, + + 64, 138, 82, 83, 139, 84, 64, 140, 82, 64, + 83, 143, 144, 83, 83, 84, 64, 65, 82, 145, + 83, 65, 146, 114, 65, 114, 65, 65, 114, 0, + 83, 65, 148, 141, 114, 141, 65, 65, 0, 0, + 147, 114, 0, 147, 65, 0, 145, 149, 65, 146, + 114, 65, 114, 65, 65, 114, 136, 0, 65, 148, + 141, 114, 141, 65, 65, 66, 136, 147, 114, 66, + 147, 136, 136, 66, 149, 142, 66, 142, 121, 66, + 121, 150, 66, 136, 121, 66, 152, 153, 142, 66, + 0, 121, 66, 136, 154, 121, 66, 0, 136, 136, + + 66, 155, 142, 66, 142, 121, 66, 121, 150, 66, + 156, 121, 66, 152, 153, 142, 66, 69, 121, 158, + 159, 154, 121, 69, 69, 69, 160, 157, 155, 162, + 69, 157, 161, 159, 164, 69, 0, 156, 159, 165, + 0, 166, 167, 161, 69, 0, 158, 159, 164, 168, + 69, 69, 69, 160, 157, 163, 162, 69, 157, 161, + 159, 164, 69, 74, 163, 159, 165, 74, 166, 167, + 161, 74, 163, 169, 170, 164, 168, 74, 171, 172, + 173, 176, 163, 74, 74, 170, 177, 74, 0, 174, + 74, 163, 175, 180, 74, 175, 0, 0, 74, 163, + + 169, 170, 181, 0, 74, 171, 172, 173, 176, 174, + 74, 74, 170, 177, 74, 75, 174, 182, 178, 175, + 180, 75, 175, 75, 178, 289, 291, 75, 75, 181, + 75, 75, 0, 75, 0, 0, 174, 0, 0, 0, + 0, 0, 75, 0, 182, 178, 179, 0, 75, 292, + 75, 178, 289, 291, 75, 75, 294, 75, 75, 179, + 75, 76, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 76, 179, 76, 296, 292, 297, 76, 76, + 298, 299, 0, 294, 76, 0, 179, 0, 76, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 76, + + 0, 76, 296, 300, 297, 76, 76, 298, 299, 199, + 301, 76, 79, 199, 79, 303, 304, 79, 79, 199, + 79, 0, 79, 305, 79, 79, 0, 200, 200, 199, + 300, 306, 200, 307, 79, 0, 199, 301, 200, 79, + 199, 79, 303, 304, 79, 79, 199, 79, 200, 79, + 305, 79, 79, 201, 200, 200, 199, 201, 306, 200, + 307, 79, 80, 201, 308, 200, 80, 309, 201, 80, + 80, 310, 311, 201, 312, 200, 80, 313, 314, 80, + 201, 316, 317, 318, 201, 319, 80, 0, 0, 80, + 201, 308, 0, 80, 309, 201, 80, 80, 310, 311, + + 201, 312, 0, 80, 313, 314, 80, 0, 316, 317, + 318, 0, 319, 80, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 202, 320, 202, 204, + 321, 204, 0, 202, 202, 204, 204, 0, 202, 0, + 323, 204, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 0, 202, 320, 202, 204, 321, 204, 315, + 202, 202, 204, 204, 205, 202, 203, 323, 204, 203, + + 302, 207, 302, 205, 315, 205, 207, 203, 207, 203, + 205, 324, 0, 207, 203, 205, 315, 302, 207, 203, + 0, 205, 0, 203, 325, 0, 203, 302, 207, 302, + 205, 315, 205, 207, 203, 207, 203, 205, 324, 208, + 207, 203, 205, 208, 302, 207, 203, 206, 206, 208, + 326, 325, 209, 206, 327, 206, 209, 0, 328, 208, + 206, 206, 209, 329, 0, 206, 208, 330, 0, 0, + 208, 0, 209, 0, 206, 206, 208, 326, 331, 209, + 206, 327, 206, 209, 211, 328, 208, 206, 206, 209, + 329, 210, 206, 210, 330, 211, 213, 211, 210, 209, + + 213, 332, 211, 210, 333, 331, 213, 211, 0, 0, + 0, 211, 0, 0, 334, 0, 213, 0, 210, 0, + 210, 0, 211, 213, 211, 210, 0, 213, 332, 211, + 210, 333, 335, 213, 211, 212, 212, 212, 336, 212, + 214, 334, 212, 213, 214, 337, 216, 212, 216, 338, + 214, 339, 216, 216, 340, 214, 341, 342, 216, 335, + 214, 0, 212, 212, 212, 336, 212, 214, 0, 212, + 0, 214, 337, 216, 212, 216, 338, 214, 339, 216, + 216, 340, 214, 341, 342, 216, 343, 214, 215, 344, + 215, 345, 347, 215, 348, 217, 219, 217, 219, 215, + + 350, 215, 217, 219, 217, 0, 215, 217, 219, 0, + 0, 215, 351, 343, 0, 215, 344, 215, 345, 347, + 215, 348, 217, 219, 217, 219, 215, 350, 215, 217, + 219, 217, 218, 215, 217, 219, 218, 225, 215, 351, + 220, 225, 218, 346, 352, 221, 353, 225, 220, 355, + 220, 356, 218, 346, 221, 220, 221, 225, 0, 218, + 220, 221, 357, 218, 225, 0, 221, 220, 225, 218, + 346, 352, 221, 353, 225, 220, 355, 220, 356, 218, + 346, 221, 220, 221, 225, 354, 0, 220, 221, 357, + 223, 0, 223, 221, 222, 354, 222, 223, 0, 358, + + 222, 224, 223, 224, 359, 226, 222, 222, 224, 226, + 0, 222, 354, 224, 0, 226, 222, 223, 226, 223, + 0, 222, 354, 222, 223, 226, 358, 222, 224, 223, + 224, 359, 226, 222, 222, 224, 226, 227, 222, 361, + 224, 227, 226, 222, 228, 226, 228, 227, 362, 229, + 230, 228, 226, 229, 230, 363, 228, 227, 364, 229, + 230, 0, 365, 0, 227, 0, 361, 0, 227, 229, + 230, 228, 0, 228, 227, 362, 229, 230, 228, 366, + 229, 230, 363, 228, 227, 364, 229, 230, 231, 365, + 231, 367, 232, 369, 232, 231, 229, 230, 231, 232, + + 231, 233, 370, 233, 232, 0, 366, 0, 233, 371, + 233, 0, 0, 233, 368, 231, 0, 231, 367, 232, + 369, 232, 231, 0, 372, 231, 232, 231, 233, 370, + 233, 232, 234, 368, 234, 233, 371, 233, 235, 234, + 233, 368, 235, 236, 234, 373, 374, 236, 235, 375, + 238, 372, 238, 236, 236, 0, 0, 238, 235, 234, + 368, 234, 238, 236, 0, 235, 234, 376, 377, 235, + 236, 234, 373, 374, 236, 235, 375, 238, 239, 238, + 236, 236, 239, 240, 238, 235, 0, 240, 239, 238, + 236, 237, 0, 240, 376, 377, 0, 0, 239, 237, + + 378, 237, 0, 240, 379, 239, 237, 237, 380, 239, + 240, 237, 241, 241, 240, 239, 241, 244, 237, 244, + 240, 381, 241, 244, 244, 239, 237, 378, 237, 244, + 240, 379, 241, 237, 237, 380, 383, 0, 237, 241, + 241, 0, 0, 241, 244, 245, 244, 245, 381, 241, + 244, 244, 245, 0, 384, 0, 244, 245, 0, 241, + 242, 0, 385, 383, 242, 255, 242, 386, 242, 255, + 242, 0, 245, 387, 245, 255, 388, 389, 258, 245, + 242, 384, 258, 0, 245, 255, 0, 242, 258, 385, + 390, 242, 255, 242, 386, 242, 255, 242, 258, 0, + + 387, 0, 255, 388, 389, 258, 391, 242, 243, 258, + 243, 246, 255, 246, 392, 258, 393, 390, 246, 243, + 247, 243, 247, 246, 395, 258, 243, 247, 247, 398, + 396, 243, 247, 391, 399, 243, 0, 243, 246, 396, + 246, 392, 400, 393, 0, 246, 243, 247, 243, 247, + 246, 395, 0, 243, 247, 247, 398, 396, 243, 247, + 248, 399, 248, 249, 0, 249, 396, 248, 248, 400, + 249, 248, 248, 250, 0, 249, 252, 397, 252, 397, + 0, 401, 0, 252, 250, 0, 250, 248, 252, 248, + 249, 250, 249, 0, 248, 248, 250, 249, 248, 248, + + 250, 251, 249, 252, 397, 252, 397, 251, 401, 251, + 252, 250, 253, 250, 251, 252, 0, 402, 250, 251, + 253, 0, 253, 250, 0, 0, 403, 253, 251, 404, + 406, 0, 253, 407, 251, 0, 251, 0, 532, 253, + 533, 251, 0, 254, 402, 254, 251, 253, 256, 253, + 254, 254, 256, 403, 253, 254, 404, 406, 256, 253, + 407, 256, 259, 0, 259, 532, 534, 533, 256, 259, + 254, 535, 254, 0, 259, 256, 257, 254, 254, 256, + 257, 260, 254, 405, 257, 256, 0, 405, 256, 259, + 257, 259, 260, 534, 260, 256, 259, 0, 535, 260, + + 257, 259, 0, 257, 260, 0, 0, 257, 260, 0, + 405, 257, 536, 261, 405, 537, 0, 257, 261, 260, + 261, 260, 262, 538, 262, 261, 260, 257, 539, 262, + 261, 260, 263, 262, 262, 540, 263, 0, 263, 536, + 261, 0, 537, 263, 542, 261, 0, 261, 263, 262, + 538, 262, 261, 545, 546, 539, 262, 261, 0, 263, + 262, 262, 540, 263, 265, 263, 0, 0, 265, 266, + 263, 542, 265, 266, 547, 263, 264, 548, 265, 266, + 545, 546, 550, 551, 552, 264, 0, 264, 265, 266, + 0, 265, 264, 264, 267, 265, 266, 264, 267, 265, + + 266, 547, 267, 264, 548, 265, 266, 0, 267, 550, + 551, 552, 264, 268, 264, 265, 266, 268, 267, 264, + 264, 267, 554, 268, 264, 267, 268, 555, 269, 267, + 0, 556, 269, 268, 270, 267, 269, 270, 0, 0, + 268, 270, 269, 557, 268, 267, 558, 270, 0, 554, + 268, 559, 269, 268, 555, 269, 560, 270, 556, 269, + 268, 270, 561, 269, 270, 271, 271, 271, 270, 269, + 557, 272, 271, 558, 270, 272, 0, 271, 559, 269, + 0, 272, 0, 560, 270, 562, 0, 565, 0, 561, + 0, 272, 271, 271, 271, 566, 276, 273, 272, 271, + + 276, 273, 272, 276, 271, 273, 276, 273, 272, 274, + 277, 277, 562, 274, 565, 277, 276, 273, 272, 274, + 274, 277, 566, 276, 273, 567, 568, 276, 273, 274, + 276, 277, 273, 276, 273, 278, 274, 277, 277, 278, + 274, 569, 277, 276, 273, 278, 274, 274, 277, 570, + 0, 571, 567, 568, 0, 278, 274, 275, 277, 573, + 281, 275, 278, 574, 281, 275, 278, 279, 569, 279, + 281, 275, 278, 279, 279, 0, 570, 275, 571, 279, + 281, 275, 278, 0, 275, 577, 573, 281, 275, 280, + 574, 281, 275, 280, 279, 578, 279, 281, 275, 280, + + 279, 279, 280, 580, 275, 582, 279, 281, 275, 280, + 283, 411, 577, 282, 283, 411, 280, 282, 283, 583, + 280, 411, 578, 282, 283, 584, 280, 585, 282, 280, + 580, 411, 582, 282, 283, 0, 280, 283, 411, 0, + 282, 283, 411, 0, 282, 283, 583, 0, 411, 0, + 282, 283, 584, 586, 585, 282, 0, 0, 411, 0, + 282, 283, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 412, 413, 414, 0, 412, 413, 414, 415, + 586, 415, 412, 413, 414, 0, 415, 587, 590, 594, + 596, 415, 412, 413, 414, 416, 0, 416, 0, 412, + + 413, 414, 416, 412, 413, 414, 415, 416, 415, 412, + 413, 414, 417, 415, 587, 590, 594, 596, 415, 412, + 413, 414, 416, 417, 416, 417, 418, 419, 418, 416, + 417, 419, 0, 418, 416, 417, 420, 419, 418, 417, + 420, 421, 597, 599, 0, 421, 420, 419, 0, 601, + 417, 421, 417, 418, 419, 418, 420, 417, 419, 421, + 418, 421, 417, 420, 419, 418, 602, 420, 421, 597, + 599, 422, 421, 420, 419, 422, 601, 423, 421, 423, + 424, 422, 424, 420, 423, 603, 421, 424, 421, 423, + 0, 422, 424, 602, 0, 0, 0, 605, 422, 0, + + 0, 606, 422, 607, 423, 0, 423, 424, 422, 424, + 0, 423, 603, 427, 424, 0, 423, 427, 422, 424, + 425, 426, 425, 427, 605, 426, 425, 588, 606, 427, + 607, 426, 425, 427, 426, 428, 0, 425, 588, 428, + 427, 426, 425, 428, 427, 428, 0, 425, 426, 425, + 427, 0, 426, 425, 588, 428, 427, 608, 426, 425, + 427, 426, 428, 429, 425, 588, 428, 429, 426, 425, + 428, 430, 428, 429, 610, 430, 433, 611, 429, 613, + 433, 430, 428, 429, 608, 431, 433, 614, 0, 431, + 429, 430, 615, 431, 429, 0, 433, 617, 430, 431, + + 429, 610, 430, 433, 611, 429, 613, 433, 430, 431, + 429, 0, 431, 433, 614, 432, 431, 432, 430, 615, + 431, 618, 432, 433, 617, 0, 431, 432, 434, 619, + 434, 435, 620, 435, 0, 434, 431, 622, 435, 623, + 434, 436, 432, 435, 432, 436, 0, 624, 618, 432, + 0, 436, 600, 600, 432, 434, 619, 434, 435, 620, + 435, 436, 434, 625, 622, 435, 623, 434, 436, 437, + 435, 438, 436, 437, 624, 438, 0, 437, 436, 600, + 600, 438, 0, 437, 628, 629, 438, 630, 436, 631, + 625, 438, 0, 437, 632, 439, 437, 439, 438, 440, + + 437, 439, 438, 440, 437, 0, 0, 439, 438, 440, + 437, 628, 629, 438, 630, 635, 631, 439, 438, 440, + 437, 632, 439, 441, 439, 636, 440, 441, 439, 638, + 440, 639, 442, 441, 439, 442, 440, 443, 441, 442, + 0, 443, 635, 441, 439, 442, 440, 443, 443, 0, + 441, 640, 636, 0, 441, 442, 638, 443, 639, 442, + 441, 641, 442, 444, 443, 441, 442, 444, 443, 0, + 441, 642, 442, 444, 443, 443, 445, 446, 640, 643, + 445, 446, 442, 444, 443, 446, 445, 644, 641, 447, + 444, 446, 645, 447, 444, 0, 445, 0, 642, 447, + + 444, 446, 0, 445, 446, 647, 643, 445, 446, 447, + 444, 0, 446, 445, 644, 448, 447, 448, 446, 645, + 447, 448, 449, 445, 449, 0, 447, 448, 446, 449, + 0, 450, 647, 450, 449, 0, 447, 448, 450, 0, + 649, 0, 448, 450, 448, 0, 0, 651, 448, 449, + 452, 449, 452, 776, 448, 0, 449, 452, 450, 0, + 450, 449, 452, 0, 448, 450, 451, 649, 451, 0, + 450, 453, 451, 451, 651, 453, 778, 452, 451, 452, + 776, 453, 454, 780, 452, 0, 454, 781, 0, 452, + 454, 453, 0, 451, 0, 451, 454, 782, 453, 451, + + 451, 0, 453, 778, 0, 451, 454, 783, 453, 454, + 780, 455, 456, 454, 781, 455, 456, 454, 453, 455, + 456, 455, 456, 454, 782, 784, 785, 0, 457, 0, + 457, 455, 456, 454, 783, 457, 0, 786, 455, 456, + 457, 787, 455, 456, 458, 0, 455, 456, 455, 456, + 0, 788, 784, 785, 458, 457, 458, 457, 455, 456, + 790, 458, 457, 459, 786, 459, 458, 457, 787, 0, + 459, 458, 459, 460, 791, 459, 461, 460, 788, 460, + 461, 458, 0, 458, 460, 0, 461, 790, 458, 460, + 459, 0, 459, 458, 0, 792, 461, 459, 0, 459, + + 460, 791, 459, 461, 460, 462, 460, 461, 463, 462, + 0, 460, 463, 461, 793, 462, 460, 0, 463, 0, + 462, 463, 792, 461, 794, 462, 0, 0, 463, 0, + 796, 0, 462, 465, 464, 463, 462, 465, 464, 463, + 464, 793, 462, 465, 464, 463, 466, 462, 463, 0, + 466, 794, 462, 465, 464, 463, 466, 796, 467, 468, + 465, 464, 467, 468, 465, 464, 466, 464, 467, 468, + 465, 464, 469, 466, 797, 798, 469, 466, 467, 468, + 465, 464, 469, 466, 470, 467, 468, 799, 470, 467, + 468, 0, 469, 466, 470, 467, 468, 0, 800, 469, + + 470, 797, 798, 469, 470, 467, 468, 0, 801, 469, + 471, 470, 471, 0, 799, 470, 472, 471, 472, 469, + 474, 470, 471, 472, 474, 800, 0, 470, 472, 0, + 474, 470, 802, 803, 473, 801, 473, 471, 804, 471, + 474, 473, 473, 472, 471, 472, 473, 474, 805, 471, + 472, 474, 475, 476, 476, 472, 475, 474, 476, 802, + 803, 473, 475, 473, 476, 804, 808, 474, 473, 473, + 809, 810, 475, 473, 476, 805, 811, 0, 814, 475, + 476, 476, 817, 475, 478, 476, 478, 818, 478, 475, + 820, 476, 823, 808, 478, 0, 826, 809, 810, 475, + + 827, 476, 477, 811, 478, 814, 477, 0, 828, 817, + 477, 478, 477, 478, 818, 478, 477, 820, 479, 823, + 479, 478, 479, 826, 829, 0, 477, 827, 479, 477, + 480, 478, 0, 477, 480, 828, 830, 477, 479, 477, + 480, 0, 0, 477, 481, 479, 480, 479, 481, 479, + 480, 829, 482, 477, 481, 479, 482, 480, 831, 481, + 834, 480, 482, 830, 481, 479, 819, 480, 482, 819, + 483, 481, 482, 480, 483, 481, 835, 480, 836, 482, + 483, 481, 0, 482, 484, 831, 481, 834, 484, 482, + 483, 481, 484, 819, 837, 482, 819, 483, 484, 482, + + 839, 483, 485, 835, 485, 836, 840, 483, 484, 485, + 0, 484, 842, 843, 485, 484, 486, 483, 486, 484, + 844, 837, 486, 486, 845, 484, 847, 839, 486, 485, + 487, 485, 487, 840, 488, 484, 485, 487, 488, 842, + 843, 485, 487, 486, 488, 486, 0, 844, 489, 486, + 486, 845, 489, 847, 488, 486, 0, 487, 489, 487, + 848, 488, 0, 490, 487, 488, 0, 490, 489, 487, + 492, 488, 492, 490, 0, 489, 490, 492, 0, 489, + 0, 488, 492, 490, 0, 489, 849, 848, 0, 493, + 490, 493, 0, 493, 490, 489, 493, 492, 0, 492, + + 490, 493, 0, 490, 492, 494, 494, 494, 0, 492, + 490, 491, 494, 849, 0, 491, 493, 494, 493, 491, + 493, 0, 850, 493, 495, 491, 851, 852, 493, 495, + 491, 495, 494, 494, 494, 491, 495, 853, 491, 494, + 854, 495, 491, 496, 494, 496, 491, 856, 497, 850, + 496, 495, 491, 851, 852, 496, 495, 491, 495, 497, + 0, 497, 491, 495, 853, 857, 497, 854, 495, 858, + 496, 497, 496, 860, 856, 497, 0, 496, 861, 862, + 958, 0, 496, 498, 960, 498, 497, 500, 497, 500, + 498, 498, 857, 497, 500, 498, 858, 499, 497, 500, + + 860, 499, 0, 499, 962, 861, 862, 958, 499, 963, + 498, 960, 498, 499, 500, 0, 500, 498, 498, 502, + 0, 500, 498, 502, 499, 501, 500, 501, 499, 502, + 499, 962, 501, 964, 0, 499, 963, 501, 503, 502, + 499, 504, 503, 505, 965, 504, 502, 505, 503, 967, + 502, 504, 501, 505, 501, 509, 502, 509, 503, 501, + 964, 504, 509, 505, 501, 503, 502, 509, 504, 503, + 505, 965, 504, 506, 505, 503, 967, 506, 504, 969, + 505, 970, 509, 506, 509, 503, 506, 507, 504, 509, + 505, 507, 508, 506, 509, 971, 508, 507, 972, 974, + + 506, 976, 508, 508, 506, 507, 969, 507, 970, 510, + 506, 510, 508, 506, 507, 980, 510, 510, 507, 508, + 506, 510, 971, 508, 507, 972, 974, 0, 976, 508, + 508, 0, 507, 511, 507, 511, 510, 982, 510, 508, + 511, 511, 980, 510, 510, 511, 983, 512, 510, 512, + 990, 513, 991, 513, 512, 513, 992, 995, 513, 512, + 511, 997, 511, 513, 982, 0, 0, 511, 511, 0, + 0, 0, 511, 983, 512, 0, 512, 990, 513, 991, + 513, 512, 513, 992, 995, 513, 512, 514, 997, 514, + 513, 515, 516, 515, 514, 514, 516, 517, 515, 514, + + 999, 517, 516, 515, 0, 1001, 0, 517, 1002, 1003, + 1004, 0, 516, 0, 514, 0, 514, 517, 515, 516, + 515, 514, 514, 516, 517, 515, 514, 999, 517, 516, + 515, 518, 1001, 518, 517, 1002, 1003, 1004, 518, 516, + 519, 520, 521, 518, 517, 520, 521, 519, 1006, 519, + 1007, 520, 521, 520, 519, 1008, 0, 1009, 518, 519, + 518, 520, 521, 1011, 0, 518, 0, 519, 520, 521, + 518, 1013, 520, 521, 519, 1006, 519, 1007, 520, 521, + 520, 519, 1008, 522, 1009, 1015, 519, 522, 520, 521, + 1011, 522, 523, 524, 523, 524, 1016, 522, 1013, 523, + + 524, 0, 524, 1017, 523, 524, 0, 522, 0, 0, + 522, 0, 1015, 0, 522, 1018, 0, 0, 522, 523, + 524, 523, 524, 1016, 522, 1023, 523, 524, 525, 524, + 1017, 523, 524, 527, 522, 527, 526, 525, 526, 525, + 527, 527, 1018, 526, 525, 527, 1024, 526, 526, 525, + 0, 1098, 1023, 1101, 0, 525, 0, 0, 0, 1102, + 527, 0, 527, 526, 525, 526, 525, 527, 527, 1105, + 526, 525, 527, 1024, 526, 526, 525, 528, 1098, 528, + 1101, 529, 1106, 528, 528, 529, 1102, 529, 530, 528, + 530, 1111, 529, 1112, 530, 530, 1105, 529, 0, 0, + + 530, 0, 0, 0, 528, 0, 528, 1115, 529, 1106, + 528, 528, 529, 1116, 529, 530, 528, 530, 1111, 529, + 1112, 530, 530, 653, 529, 653, 654, 530, 654, 653, + 653, 1117, 654, 654, 1115, 653, 0, 0, 654, 1120, + 1116, 655, 1121, 1124, 656, 655, 0, 1126, 656, 0, + 653, 655, 653, 654, 656, 654, 653, 653, 1117, 654, + 654, 655, 653, 657, 656, 654, 1120, 657, 655, 1121, + 1124, 656, 655, 657, 1126, 656, 657, 658, 655, 658, + 0, 656, 659, 657, 658, 0, 659, 1127, 655, 658, + 657, 656, 659, 0, 657, 0, 1128, 0, 0, 1129, + + 657, 0, 659, 657, 658, 660, 658, 660, 1172, 659, + 657, 658, 660, 659, 1127, 0, 658, 660, 661, 659, + 662, 664, 661, 1128, 662, 664, 1129, 1174, 661, 659, + 662, 664, 660, 665, 660, 1172, 1177, 665, 661, 660, + 662, 664, 663, 665, 660, 661, 663, 662, 664, 661, + 663, 662, 664, 665, 1174, 661, 663, 662, 664, 1180, + 665, 1181, 1185, 1177, 665, 661, 663, 662, 664, 663, + 665, 666, 1186, 663, 667, 666, 1187, 663, 667, 666, + 665, 1209, 667, 663, 667, 666, 1180, 668, 1181, 1185, + 1211, 668, 0, 663, 667, 666, 1215, 668, 666, 1186, + + 669, 667, 666, 1187, 669, 667, 666, 668, 1209, 667, + 669, 667, 666, 669, 668, 670, 0, 1211, 668, 670, + 669, 667, 666, 1215, 668, 670, 1229, 669, 671, 0, + 1236, 669, 671, 1239, 668, 670, 0, 669, 671, 1242, + 669, 1244, 670, 671, 1226, 1226, 670, 669, 671, 672, + 1246, 672, 670, 1229, 1248, 671, 672, 1236, 0, 671, + 1239, 672, 670, 1231, 1231, 671, 1242, 1250, 1244, 1252, + 671, 0, 673, 1254, 673, 671, 672, 1246, 672, 673, + 673, 1248, 1256, 672, 673, 674, 1226, 674, 672, 0, + 0, 675, 674, 675, 1250, 0, 1252, 674, 675, 673, + + 1254, 673, 0, 675, 0, 1231, 673, 673, 0, 1256, + 0, 673, 674, 1226, 674, 676, 676, 676, 675, 674, + 675, 1258, 676, 1260, 674, 675, 677, 676, 677, 678, + 675, 678, 1231, 677, 679, 677, 678, 678, 677, 0, + 0, 678, 676, 676, 676, 679, 0, 679, 1258, 676, + 1260, 0, 679, 677, 676, 677, 678, 679, 678, 0, + 677, 679, 677, 678, 678, 677, 0, 0, 678, 680, + 0, 680, 679, 682, 679, 680, 680, 682, 681, 679, + 0, 680, 0, 682, 679, 0, 0, 681, 0, 681, + 0, 0, 0, 682, 681, 0, 680, 0, 680, 681, + + 682, 0, 680, 680, 682, 681, 0, 0, 680, 0, + 682, 683, 0, 683, 681, 684, 681, 684, 683, 0, + 682, 681, 684, 683, 0, 0, 681, 684, 0, 685, + 0, 685, 0, 0, 0, 0, 685, 0, 683, 0, + 683, 685, 684, 0, 684, 683, 0, 0, 0, 684, + 683, 0, 0, 686, 684, 686, 685, 686, 685, 0, + 686, 0, 687, 685, 687, 686, 687, 0, 685, 687, + 0, 0, 0, 0, 687, 0, 688, 0, 688, 0, + 686, 0, 686, 688, 686, 688, 0, 686, 688, 687, + 0, 687, 686, 687, 0, 0, 687, 0, 690, 0, + + 0, 687, 0, 688, 0, 688, 689, 0, 689, 690, + 688, 690, 688, 689, 689, 688, 690, 0, 689, 691, + 0, 690, 0, 0, 692, 690, 0, 0, 692, 0, + 691, 0, 691, 689, 692, 689, 690, 691, 690, 0, + 689, 689, 691, 690, 692, 689, 691, 0, 690, 0, + 693, 692, 694, 0, 693, 692, 694, 691, 0, 691, + 693, 692, 694, 0, 691, 0, 0, 694, 0, 691, + 693, 692, 694, 0, 695, 0, 696, 693, 695, 694, + 696, 693, 695, 694, 0, 0, 696, 693, 695, 694, + 0, 0, 0, 0, 694, 0, 696, 693, 695, 694, + + 697, 695, 0, 696, 697, 695, 0, 696, 698, 695, + 697, 0, 698, 696, 0, 695, 698, 701, 0, 701, + 697, 0, 698, 696, 701, 695, 0, 697, 0, 701, + 699, 697, 698, 0, 699, 698, 0, 697, 700, 698, + 699, 699, 700, 698, 701, 0, 701, 697, 700, 698, + 699, 701, 0, 0, 0, 0, 701, 699, 700, 698, + 0, 699, 0, 0, 702, 700, 702, 699, 699, 700, + 0, 702, 703, 0, 703, 700, 702, 699, 0, 703, + 0, 0, 704, 0, 703, 700, 704, 0, 0, 0, + 0, 702, 704, 702, 0, 0, 0, 0, 702, 703, + + 0, 703, 704, 702, 705, 0, 703, 0, 705, 704, + 0, 703, 0, 704, 705, 0, 706, 705, 706, 704, + 707, 0, 707, 706, 705, 0, 707, 707, 706, 704, + 0, 705, 707, 0, 0, 705, 0, 0, 0, 0, + 0, 705, 0, 706, 705, 706, 0, 707, 0, 707, + 706, 705, 0, 707, 707, 706, 708, 0, 708, 707, + 0, 0, 708, 708, 0, 710, 0, 710, 708, 0, + 0, 0, 710, 0, 0, 0, 0, 710, 0, 0, + 0, 0, 0, 708, 0, 708, 0, 0, 0, 708, + 708, 0, 710, 0, 710, 708, 709, 0, 711, 710, + + 711, 709, 0, 709, 710, 711, 0, 709, 709, 712, + 711, 712, 713, 709, 713, 0, 712, 0, 0, 713, + 0, 712, 0, 709, 713, 711, 0, 711, 709, 0, + 709, 0, 711, 0, 709, 709, 712, 711, 712, 713, + 709, 713, 714, 712, 714, 715, 713, 715, 712, 714, + 0, 713, 715, 715, 714, 0, 716, 715, 716, 0, + 0, 0, 0, 716, 0, 0, 0, 0, 716, 714, + 0, 714, 715, 0, 715, 717, 714, 717, 0, 715, + 715, 714, 717, 716, 715, 716, 0, 717, 718, 0, + 716, 0, 718, 719, 0, 716, 720, 719, 718, 0, + + 720, 0, 717, 719, 717, 0, 720, 0, 718, 717, + 721, 0, 721, 719, 717, 718, 720, 721, 721, 718, + 719, 0, 721, 720, 719, 718, 0, 720, 0, 0, + 719, 0, 0, 720, 0, 718, 0, 721, 0, 721, + 719, 0, 722, 720, 721, 721, 722, 0, 722, 721, + 723, 724, 723, 722, 0, 724, 723, 723, 722, 0, + 0, 724, 723, 0, 0, 0, 725, 0, 0, 722, + 725, 724, 0, 722, 0, 722, 725, 723, 724, 723, + 722, 0, 724, 723, 723, 722, 725, 0, 724, 723, + 726, 727, 726, 725, 0, 727, 726, 725, 724, 0, + + 0, 727, 726, 725, 0, 0, 0, 0, 0, 0, + 0, 727, 726, 725, 0, 0, 0, 726, 727, 726, + 728, 729, 727, 726, 728, 729, 0, 0, 727, 726, + 728, 729, 0, 728, 729, 0, 0, 0, 727, 726, + 728, 729, 0, 0, 0, 730, 731, 728, 729, 730, + 731, 728, 729, 0, 731, 730, 731, 728, 729, 732, + 728, 729, 0, 732, 0, 730, 731, 728, 729, 732, + 0, 0, 730, 731, 733, 0, 730, 731, 733, 732, + 0, 731, 730, 731, 733, 0, 732, 0, 0, 0, + 732, 0, 730, 731, 733, 734, 732, 0, 0, 734, + + 735, 733, 0, 734, 735, 733, 732, 0, 735, 734, + 0, 733, 0, 736, 735, 0, 0, 736, 0, 734, + 0, 733, 734, 736, 735, 0, 734, 735, 737, 0, + 734, 735, 737, 736, 0, 735, 734, 0, 737, 0, + 736, 735, 0, 0, 736, 0, 734, 0, 737, 0, + 736, 735, 0, 738, 739, 737, 0, 738, 739, 737, + 736, 738, 740, 738, 739, 737, 740, 739, 0, 0, + 0, 0, 740, 738, 739, 737, 0, 740, 0, 0, + 738, 739, 740, 0, 738, 739, 0, 0, 738, 740, + 738, 739, 0, 740, 739, 741, 0, 0, 741, 740, + + 738, 739, 741, 742, 740, 0, 743, 742, 741, 740, + 743, 0, 0, 742, 743, 0, 743, 0, 741, 0, + 0, 0, 741, 742, 0, 741, 743, 0, 0, 741, + 742, 0, 0, 743, 742, 741, 0, 743, 0, 0, + 742, 743, 744, 743, 744, 741, 745, 0, 746, 744, + 742, 0, 746, 743, 744, 745, 0, 745, 746, 0, + 747, 0, 745, 0, 747, 0, 0, 745, 746, 744, + 747, 744, 0, 745, 0, 746, 744, 0, 0, 746, + 747, 744, 745, 0, 745, 746, 748, 747, 0, 745, + 748, 747, 0, 0, 745, 746, 748, 747, 749, 750, + + 749, 0, 0, 750, 751, 749, 748, 747, 751, 750, + 749, 0, 0, 748, 751, 0, 0, 748, 752, 750, + 0, 0, 752, 748, 751, 749, 750, 749, 752, 0, + 750, 751, 749, 748, 0, 751, 750, 749, 752, 0, + 753, 751, 0, 754, 753, 752, 750, 754, 755, 752, + 753, 751, 755, 754, 756, 752, 756, 757, 755, 757, + 753, 756, 0, 754, 757, 752, 756, 753, 755, 757, + 754, 753, 0, 0, 754, 755, 0, 753, 0, 755, + 754, 756, 0, 756, 757, 755, 757, 753, 756, 759, + 754, 757, 758, 756, 758, 755, 757, 0, 759, 758, + + 759, 760, 0, 760, 758, 759, 0, 0, 760, 0, + 759, 0, 0, 760, 0, 0, 759, 0, 0, 758, + 0, 758, 0, 0, 0, 759, 758, 759, 760, 0, + 760, 758, 759, 0, 761, 760, 761, 759, 0, 762, + 760, 761, 0, 761, 0, 0, 761, 763, 0, 763, + 762, 0, 762, 0, 763, 763, 0, 762, 0, 763, + 0, 761, 762, 761, 0, 0, 762, 0, 761, 0, + 761, 0, 0, 761, 763, 0, 763, 762, 764, 762, + 0, 763, 763, 764, 762, 764, 763, 765, 767, 762, + 764, 765, 767, 0, 0, 764, 766, 765, 767, 766, + + 766, 0, 0, 0, 0, 764, 766, 765, 767, 0, + 764, 0, 764, 0, 765, 767, 766, 764, 765, 767, + 0, 0, 764, 766, 765, 767, 766, 766, 768, 0, + 0, 0, 768, 766, 765, 767, 769, 770, 768, 0, + 769, 770, 0, 766, 768, 0, 769, 770, 768, 0, + 771, 0, 0, 0, 771, 768, 769, 770, 0, 768, + 771, 0, 0, 769, 770, 768, 0, 769, 770, 0, + 771, 768, 0, 769, 770, 768, 0, 771, 772, 0, + 772, 771, 0, 769, 770, 772, 866, 771, 866, 867, + 772, 867, 868, 866, 868, 0, 867, 771, 866, 868, + + 0, 867, 0, 0, 868, 772, 868, 772, 0, 0, + 0, 0, 772, 866, 0, 866, 867, 772, 867, 868, + 866, 868, 869, 867, 869, 866, 868, 0, 867, 869, + 0, 868, 870, 868, 869, 871, 870, 872, 0, 871, + 0, 872, 870, 0, 0, 871, 0, 872, 0, 869, + 873, 869, 870, 0, 873, 871, 869, 872, 0, 870, + 873, 869, 871, 870, 872, 873, 871, 0, 872, 870, + 873, 0, 871, 0, 872, 875, 875, 873, 0, 870, + 875, 873, 871, 0, 872, 874, 875, 873, 876, 874, + 876, 0, 873, 874, 876, 0, 875, 873, 0, 874, + + 876, 0, 875, 875, 0, 0, 0, 875, 0, 874, + 876, 0, 874, 875, 0, 876, 874, 876, 0, 0, + 874, 876, 877, 875, 877, 0, 874, 876, 0, 877, + 0, 878, 0, 878, 877, 0, 874, 876, 878, 878, + 0, 0, 879, 878, 880, 0, 879, 0, 880, 877, + 0, 877, 879, 0, 880, 0, 877, 0, 878, 0, + 878, 877, 879, 0, 880, 878, 878, 0, 881, 879, + 878, 880, 881, 879, 0, 880, 882, 0, 881, 879, + 882, 880, 0, 0, 0, 0, 882, 0, 881, 879, + 883, 880, 0, 0, 883, 881, 882, 0, 884, 881, + + 883, 0, 884, 882, 0, 881, 884, 882, 0, 0, + 883, 0, 884, 882, 0, 881, 0, 883, 0, 0, + 0, 883, 884, 882, 885, 884, 885, 883, 886, 884, + 887, 885, 886, 884, 887, 0, 885, 883, 886, 884, + 887, 0, 888, 0, 0, 0, 888, 0, 886, 884, + 887, 885, 888, 885, 0, 886, 889, 887, 885, 886, + 889, 887, 888, 885, 891, 886, 889, 887, 891, 888, + 0, 889, 0, 888, 891, 886, 889, 887, 890, 888, + 890, 0, 892, 889, 891, 890, 892, 889, 0, 888, + 890, 891, 892, 889, 0, 891, 0, 0, 889, 0, + + 893, 891, 892, 889, 893, 890, 0, 890, 0, 892, + 893, 891, 890, 892, 895, 893, 895, 890, 894, 892, + 893, 895, 894, 0, 0, 0, 895, 893, 894, 892, + 896, 893, 0, 894, 896, 0, 0, 893, 894, 0, + 896, 895, 893, 895, 901, 894, 901, 893, 895, 894, + 896, 901, 897, 895, 897, 894, 901, 896, 897, 0, + 894, 896, 898, 0, 897, 894, 898, 896, 0, 0, + 0, 901, 898, 901, 897, 0, 899, 896, 901, 897, + 899, 897, 898, 901, 0, 897, 899, 0, 0, 898, + 900, 897, 0, 898, 900, 0, 899, 0, 0, 898, + + 900, 897, 0, 899, 902, 900, 902, 899, 0, 898, + 900, 902, 0, 899, 0, 0, 902, 900, 904, 0, + 904, 900, 0, 899, 0, 904, 0, 900, 0, 903, + 904, 902, 900, 902, 903, 0, 903, 900, 902, 0, + 0, 903, 905, 902, 905, 904, 903, 904, 0, 905, + 0, 0, 904, 0, 905, 0, 903, 904, 906, 0, + 906, 903, 0, 903, 0, 906, 906, 0, 903, 905, + 906, 905, 907, 903, 907, 0, 905, 0, 0, 907, + 0, 905, 0, 0, 907, 906, 0, 906, 908, 0, + 908, 0, 906, 906, 0, 908, 909, 906, 909, 907, + + 908, 907, 0, 909, 909, 0, 907, 0, 909, 910, + 0, 907, 0, 910, 911, 908, 911, 908, 0, 910, + 0, 911, 908, 909, 911, 909, 911, 908, 0, 910, + 909, 909, 912, 0, 912, 909, 910, 0, 0, 912, + 910, 911, 0, 911, 912, 913, 910, 913, 911, 0, + 0, 911, 913, 911, 0, 0, 910, 913, 914, 912, + 914, 912, 0, 0, 0, 914, 912, 0, 915, 0, + 914, 912, 913, 0, 913, 0, 915, 0, 915, 913, + 0, 0, 0, 915, 913, 914, 0, 914, 915, 916, + 0, 916, 914, 0, 918, 915, 916, 914, 918, 0, + + 917, 916, 917, 915, 918, 915, 0, 917, 0, 0, + 915, 0, 917, 0, 918, 915, 916, 0, 916, 0, + 0, 918, 920, 916, 0, 918, 0, 917, 916, 917, + 919, 918, 919, 920, 917, 920, 921, 919, 921, 917, + 920, 918, 919, 921, 921, 920, 0, 0, 921, 920, + 922, 0, 0, 0, 922, 0, 922, 919, 0, 919, + 920, 922, 920, 921, 919, 921, 922, 920, 0, 919, + 921, 921, 920, 0, 0, 921, 0, 922, 923, 0, + 923, 922, 924, 922, 924, 923, 923, 0, 922, 924, + 923, 0, 0, 922, 924, 0, 925, 0, 925, 0, + + 926, 0, 0, 925, 926, 923, 0, 923, 925, 924, + 926, 924, 923, 923, 927, 0, 924, 923, 927, 0, + 926, 924, 0, 925, 927, 925, 0, 926, 0, 927, + 925, 926, 0, 0, 927, 925, 0, 926, 930, 928, + 929, 927, 930, 928, 929, 927, 0, 926, 930, 928, + 929, 927, 928, 929, 0, 0, 927, 0, 930, 928, + 929, 927, 0, 0, 931, 930, 928, 929, 931, 930, + 928, 929, 0, 0, 931, 930, 928, 929, 932, 928, + 929, 0, 932, 0, 931, 930, 928, 929, 932, 934, + 933, 931, 0, 934, 933, 931, 0, 934, 932, 0, + + 933, 931, 0, 934, 935, 932, 0, 0, 935, 932, + 933, 931, 935, 934, 0, 932, 934, 933, 935, 0, + 934, 933, 0, 0, 934, 932, 0, 933, 935, 0, + 934, 935, 937, 936, 936, 935, 937, 933, 936, 935, + 934, 0, 937, 0, 936, 935, 938, 937, 0, 0, + 938, 0, 937, 0, 936, 935, 938, 0, 939, 937, + 936, 936, 939, 937, 0, 936, 938, 0, 939, 937, + 0, 936, 0, 938, 937, 940, 940, 938, 939, 937, + 940, 936, 0, 938, 941, 939, 940, 0, 941, 939, + 0, 0, 941, 938, 0, 939, 940, 942, 941, 942, + + 0, 0, 940, 940, 942, 939, 0, 940, 941, 942, + 943, 941, 943, 940, 0, 941, 943, 943, 0, 941, + 0, 0, 943, 940, 942, 941, 942, 0, 0, 0, + 0, 942, 0, 0, 0, 941, 942, 943, 944, 943, + 944, 945, 0, 943, 943, 944, 944, 0, 0, 943, + 944, 0, 945, 0, 945, 0, 0, 0, 0, 945, + 0, 0, 0, 0, 945, 944, 0, 944, 945, 946, + 0, 0, 944, 944, 0, 0, 947, 944, 947, 945, + 946, 945, 946, 947, 0, 0, 945, 946, 947, 0, + 0, 945, 946, 0, 0, 0, 946, 0, 948, 0, + + 0, 0, 948, 947, 0, 947, 0, 946, 948, 946, + 947, 949, 949, 950, 946, 947, 949, 950, 948, 946, + 0, 0, 949, 950, 0, 948, 951, 0, 0, 948, + 951, 0, 949, 950, 0, 948, 951, 0, 949, 949, + 950, 0, 0, 949, 950, 948, 951, 0, 0, 949, + 950, 953, 0, 951, 952, 0, 952, 951, 0, 949, + 950, 952, 953, 951, 953, 0, 952, 0, 0, 953, + 0, 0, 0, 951, 953, 0, 0, 0, 953, 954, + 0, 952, 0, 952, 0, 0, 0, 0, 952, 953, + 954, 953, 954, 952, 0, 0, 953, 954, 955, 0, + + 955, 953, 954, 1026, 0, 955, 954, 1026, 1027, 956, + 955, 956, 1027, 1026, 0, 0, 956, 954, 1027, 954, + 0, 956, 0, 1026, 954, 955, 0, 955, 1027, 954, + 1026, 0, 955, 0, 1026, 1027, 956, 955, 956, 1027, + 1026, 0, 1028, 956, 1028, 1027, 0, 0, 956, 1028, + 1026, 1029, 0, 1029, 1028, 1027, 0, 0, 1029, 0, + 1030, 0, 1030, 1029, 1031, 0, 0, 1030, 1031, 1028, + 0, 1028, 1030, 1032, 1031, 0, 1028, 1032, 1029, 0, + 1029, 1028, 1048, 1032, 1031, 1029, 1048, 1030, 1032, 1030, + 1029, 1031, 1048, 1032, 1030, 1031, 1033, 0, 1033, 1030, + + 1032, 1031, 1048, 1033, 1032, 1034, 0, 1034, 1033, 1048, + 1032, 1031, 1034, 1048, 1035, 1032, 1035, 1034, 0, 1048, + 1032, 1035, 0, 1033, 0, 1033, 1035, 0, 0, 1048, + 1033, 0, 1034, 0, 1034, 1033, 0, 0, 1036, 1034, + 1036, 1035, 0, 1035, 1034, 1036, 0, 0, 1035, 0, + 1036, 0, 0, 1035, 1037, 1037, 1037, 0, 0, 1038, + 0, 1037, 1039, 0, 1039, 1036, 1037, 1036, 1038, 1039, + 1038, 0, 1036, 0, 1039, 1038, 0, 1036, 0, 0, + 1038, 1037, 1037, 1037, 0, 0, 1038, 0, 1037, 1039, + 0, 1039, 1040, 1037, 1040, 1038, 1039, 1038, 0, 1040, + + 1040, 1039, 1038, 1041, 1040, 1041, 1042, 1038, 0, 0, + 1041, 0, 0, 0, 0, 1041, 1042, 0, 1042, 1040, + 0, 1040, 1043, 1042, 1043, 0, 1040, 1040, 1042, 1043, + 1041, 1040, 1041, 1042, 1043, 0, 0, 1041, 0, 0, + 0, 0, 1041, 1042, 0, 1042, 0, 0, 1044, 1043, + 1042, 1043, 0, 0, 0, 1042, 1043, 1044, 1045, 1044, + 1045, 1043, 0, 0, 1044, 1045, 1046, 0, 1046, 1044, + 1045, 0, 0, 1046, 0, 1044, 0, 0, 1046, 0, + 0, 0, 0, 0, 1044, 1045, 1044, 1045, 0, 0, + 0, 1044, 1045, 1046, 1049, 1046, 1044, 1045, 1049, 1047, + + 1046, 1047, 0, 0, 1049, 1046, 1047, 0, 1050, 0, + 1050, 1047, 0, 0, 1049, 1050, 0, 0, 0, 0, + 1050, 1049, 1051, 0, 1051, 1049, 1047, 0, 1047, 1051, + 1051, 1049, 0, 1047, 1051, 1050, 0, 1050, 1047, 0, + 0, 1049, 1050, 1052, 0, 1052, 1053, 1050, 1053, 1051, + 1052, 1051, 1054, 1053, 1054, 1052, 1051, 1051, 1053, 1054, + 0, 1051, 0, 0, 1054, 0, 0, 0, 0, 0, + 1052, 0, 1052, 1053, 0, 1053, 1055, 1052, 1055, 1054, + 1053, 1054, 1052, 1055, 0, 1053, 1054, 1056, 1055, 1056, + 1057, 1054, 1057, 0, 1056, 0, 0, 1057, 0, 1056, + + 0, 0, 1057, 1055, 0, 1055, 1058, 0, 1058, 0, + 1055, 0, 1058, 1058, 1056, 1055, 1056, 1057, 1058, 1057, + 0, 1056, 0, 0, 1057, 0, 1056, 1059, 1060, 1057, + 0, 1059, 1060, 1058, 0, 1058, 1060, 1059, 0, 1058, + 1058, 1063, 1060, 1063, 0, 1058, 1061, 1059, 1063, 0, + 1061, 0, 1060, 1063, 1059, 1060, 1061, 0, 1059, 1060, + 1064, 1062, 1064, 1060, 1059, 1062, 1061, 1064, 1063, 1060, + 1063, 1062, 1064, 1061, 1059, 1063, 0, 1061, 0, 1060, + 1063, 1062, 0, 1061, 1065, 0, 1065, 1064, 1062, 1064, + 0, 1065, 1062, 1061, 1064, 1066, 1065, 1066, 1062, 1064, + + 0, 0, 1066, 1067, 0, 0, 0, 1066, 1062, 0, + 0, 1065, 0, 1065, 1067, 0, 1067, 0, 1065, 0, + 0, 1067, 1066, 1065, 1066, 1068, 1067, 1068, 0, 1066, + 1067, 0, 1068, 0, 1066, 0, 0, 1068, 1069, 0, + 1069, 1067, 0, 1067, 0, 1069, 1069, 0, 1067, 0, + 1069, 1070, 1068, 1067, 1068, 1070, 1071, 0, 0, 1068, + 1071, 1070, 0, 0, 1068, 1069, 1071, 1069, 0, 0, + 1072, 1070, 1069, 1069, 1072, 1073, 1071, 1069, 1070, 1073, + 1072, 0, 1070, 1071, 0, 1073, 0, 1071, 1070, 0, + 1072, 0, 0, 1071, 0, 1073, 0, 1072, 1070, 0, + + 0, 1072, 1073, 1071, 0, 0, 1073, 1072, 1074, 1075, + 1074, 1075, 1073, 0, 1074, 1075, 1076, 1072, 1076, 0, + 1074, 1075, 1073, 1076, 0, 0, 0, 1077, 1076, 1077, + 1074, 1075, 0, 0, 1077, 1074, 1075, 1074, 1075, 1077, + 0, 1074, 1075, 1076, 0, 1076, 0, 1074, 1075, 0, + 1076, 0, 0, 0, 1077, 1076, 1077, 1074, 1075, 0, + 1078, 1077, 1078, 1079, 0, 1079, 1077, 1078, 0, 1080, + 1079, 1080, 1078, 0, 0, 1079, 1080, 0, 0, 0, + 0, 1080, 0, 0, 0, 0, 0, 1078, 0, 1078, + 1079, 0, 1079, 1081, 1078, 1081, 1080, 1079, 1080, 1078, + + 1081, 1083, 1079, 1080, 1082, 1081, 1082, 0, 1080, 0, + 0, 1082, 1083, 0, 1083, 0, 1082, 0, 0, 1083, + 1081, 0, 1081, 0, 1083, 0, 0, 1081, 1083, 1084, + 0, 1082, 1081, 1082, 0, 0, 0, 0, 1082, 1083, + 1084, 1083, 1084, 1082, 1085, 0, 1083, 1084, 0, 0, + 0, 1083, 1084, 1085, 0, 1085, 1084, 0, 0, 0, + 1085, 0, 0, 0, 0, 1085, 0, 1084, 0, 1084, + 0, 1085, 0, 0, 1084, 0, 1086, 0, 1086, 1084, + 1085, 0, 1085, 1086, 1086, 0, 0, 1085, 1086, 1087, + 0, 1087, 1085, 0, 0, 1088, 1087, 1088, 0, 0, + + 0, 1087, 1088, 1086, 0, 1086, 0, 1088, 0, 0, + 1086, 1086, 0, 0, 0, 1086, 1087, 0, 1087, 1089, + 0, 1089, 1088, 1087, 1088, 1090, 1089, 1090, 1087, 1088, + 0, 1089, 1090, 1091, 1088, 1091, 0, 1090, 0, 1091, + 1091, 0, 0, 0, 0, 1091, 1089, 0, 1089, 1092, + 0, 1092, 1090, 1089, 1090, 0, 1092, 0, 1089, 1090, + 1091, 1092, 1091, 1133, 1090, 1133, 1091, 1091, 0, 0, + 1133, 0, 1091, 0, 0, 1133, 1092, 1134, 1092, 1134, + 0, 0, 0, 1092, 1134, 0, 0, 0, 1092, 1134, + 1133, 1135, 1133, 1135, 0, 0, 0, 1133, 1135, 0, + + 0, 0, 1133, 1135, 1134, 1136, 1134, 1136, 0, 1137, + 0, 1134, 1136, 1137, 0, 0, 1134, 1136, 1135, 1137, + 1135, 0, 0, 1138, 0, 1135, 0, 1138, 0, 1137, + 1135, 1139, 1136, 1138, 1136, 1139, 1137, 0, 0, 1136, + 1137, 1139, 0, 1138, 1136, 1140, 1137, 0, 0, 1140, + 1138, 1139, 0, 1141, 1138, 1140, 1137, 1141, 1139, 1142, + 1138, 1141, 1139, 1142, 0, 1140, 0, 1141, 1139, 1142, + 1138, 1143, 1140, 0, 0, 1143, 1140, 1141, 1139, 1142, + 1141, 1143, 1140, 1144, 1141, 1145, 1142, 1144, 1141, 1145, + 1142, 1143, 1140, 1144, 1141, 1145, 1142, 1146, 1143, 0, + + 1145, 1146, 1143, 1144, 1141, 1145, 1142, 1146, 1143, 1147, + 1144, 1148, 1145, 1147, 1144, 1148, 1145, 1146, 1143, 1147, + 1144, 1148, 1145, 0, 1146, 0, 0, 1145, 1146, 1147, + 1144, 1148, 1145, 1149, 1146, 0, 1147, 1149, 1148, 1150, + 1147, 1150, 1148, 1149, 1146, 1150, 1147, 1151, 1148, 1151, + 1152, 1150, 1152, 1149, 1151, 0, 1147, 1152, 1148, 1151, + 1149, 1150, 1152, 0, 1149, 0, 1150, 0, 1150, 0, + 1149, 0, 1150, 0, 1151, 0, 1151, 1152, 1150, 1152, + 1149, 1151, 0, 1153, 1152, 1153, 1151, 0, 1150, 1152, + 1153, 1154, 0, 1154, 0, 1153, 1155, 1154, 1154, 0, + + 1155, 1156, 0, 1154, 0, 1156, 1155, 0, 0, 1157, + 1153, 1156, 1153, 1157, 0, 0, 1155, 1153, 1154, 1157, + 1154, 1156, 1153, 1155, 1154, 1154, 0, 1155, 1156, 1157, + 1154, 1158, 1156, 1155, 0, 1158, 1157, 0, 1156, 0, + 1157, 1158, 0, 1155, 0, 1159, 1157, 0, 1156, 1159, + 0, 1158, 0, 1160, 0, 1159, 1157, 1160, 1158, 1160, + 1159, 0, 1158, 1160, 0, 1159, 0, 0, 1158, 0, + 0, 1161, 1159, 1160, 0, 1161, 1159, 0, 1158, 1162, + 1160, 1161, 1159, 1162, 1160, 0, 1160, 1159, 0, 1162, + 1160, 1161, 1159, 0, 0, 0, 0, 1163, 1161, 1162, + + 1160, 1163, 1161, 0, 0, 1164, 1162, 1163, 1161, 1164, + 1162, 0, 1163, 0, 0, 1164, 1162, 1163, 1161, 0, + 0, 0, 0, 0, 1163, 1164, 1162, 1165, 1163, 0, + 0, 1165, 1164, 0, 1163, 0, 1164, 1165, 0, 1163, + 1165, 1166, 1164, 0, 1163, 1166, 1168, 1165, 0, 1166, + 1168, 1166, 1164, 0, 1165, 1167, 1168, 0, 1165, 1167, + 0, 1166, 0, 0, 1165, 1167, 1168, 1165, 1166, 0, + 1167, 0, 1166, 1168, 1165, 1167, 1166, 1168, 1166, 0, + 1169, 1170, 1167, 1168, 1169, 1170, 1167, 0, 1166, 0, + 1169, 1170, 1167, 1168, 1191, 0, 0, 1167, 1191, 0, + + 1169, 1170, 1167, 0, 1191, 0, 1190, 1169, 1170, 0, + 1190, 1169, 1170, 0, 1191, 0, 1190, 1169, 1170, 1190, + 1192, 1191, 0, 0, 1192, 1191, 1190, 1169, 1170, 0, + 1192, 1191, 1193, 1190, 1194, 1192, 1193, 1190, 1194, 0, + 1192, 1191, 1193, 1190, 1194, 0, 1190, 1192, 0, 0, + 0, 1192, 1193, 1190, 1194, 0, 0, 1192, 0, 1193, + 1195, 1194, 1192, 1193, 1195, 1194, 0, 1192, 1196, 1193, + 1195, 1194, 1196, 1197, 0, 1195, 0, 1197, 1196, 1193, + 1195, 1194, 0, 1197, 0, 0, 0, 1195, 1196, 0, + 0, 1195, 0, 1197, 0, 1196, 0, 1195, 0, 1196, + + 1197, 0, 1195, 0, 1197, 1196, 0, 1195, 1198, 0, + 1197, 0, 1198, 0, 0, 1196, 0, 1199, 1198, 1199, + 1197, 1198, 0, 0, 1199, 1200, 0, 1200, 1198, 1199, + 0, 1201, 1200, 1201, 0, 1198, 0, 1200, 1201, 1198, + 0, 0, 0, 1201, 1199, 1198, 1199, 0, 1198, 0, + 0, 1199, 1200, 0, 1200, 1198, 1199, 0, 1201, 1200, + 1201, 1202, 1203, 1202, 1200, 1201, 1203, 1204, 1202, 0, + 1201, 1204, 1203, 1202, 0, 0, 1205, 1204, 1204, 0, + 1205, 1206, 1203, 0, 0, 1206, 1205, 1204, 1202, 1203, + 1202, 1206, 0, 1203, 1204, 1202, 1205, 0, 1204, 1203, + + 1202, 1206, 0, 1205, 1204, 1204, 0, 1205, 1206, 1203, + 1217, 1217, 1206, 1205, 1204, 0, 1218, 1219, 1206, 0, + 1218, 1219, 1220, 1205, 1220, 0, 1218, 1219, 1206, 1220, + 0, 0, 0, 0, 1220, 1217, 1218, 1219, 0, 1217, + 0, 0, 0, 1218, 1219, 1217, 0, 1218, 1219, 1220, + 0, 1220, 0, 1218, 1219, 1217, 1220, 0, 1221, 0, + 1221, 1220, 1217, 1218, 1219, 1221, 1217, 1222, 0, 1222, + 1221, 1223, 1217, 1223, 1222, 0, 0, 0, 1223, 1222, + 0, 0, 1217, 1223, 0, 1221, 0, 1221, 0, 1224, + 0, 0, 1221, 1224, 1222, 0, 1222, 1221, 1223, 1224, + + 1223, 1222, 0, 1232, 1233, 1223, 1222, 1232, 1233, 1224, + 1223, 0, 0, 1232, 1233, 1234, 1224, 1234, 0, 0, + 1224, 0, 1234, 1232, 1233, 0, 1224, 1234, 0, 0, + 1232, 1233, 0, 0, 1232, 1233, 1224, 0, 0, 0, + 1232, 1233, 1234, 0, 1234, 1240, 0, 1240, 0, 1234, + 1232, 1233, 1240, 0, 1234, 0, 0, 1240, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1240, 0, 1240, 0, 0, 0, 0, 1240, + 0, 0, 0, 0, 1240, 1272, 1272, 1272, 1272, 1272, + 1273, 0, 0, 1273, 1273, 1275, 1275, 1275, 0, 1275, + + 1276, 0, 1276, 1276, 1276, 1277, 0, 1277, 1277, 1277, + 1278, 0, 1278, 1278, 1278, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271 } ; @@ -2910,7 +2942,7 @@ static const flex_int16_t yy_chk[8294] = static thread_local std::stringstream strbuf; -#line 2913 "flex_lexer.cpp" +#line 2945 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -2924,7 +2956,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 2927 "flex_lexer.cpp" +#line 2959 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -3211,7 +3243,7 @@ YY_DECL #line 57 "flex_lexer.l" -#line 3214 "flex_lexer.cpp" +#line 3246 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3238,13 +3270,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 >= 1240 ) + if ( yy_current_state >= 1272 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1239 ); + while ( yy_current_state != 1271 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -3584,520 +3616,545 @@ TOKEN(GROUP) case 64: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(HASH) +TOKEN(GROUPS) YY_BREAK case 65: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(HASH) YY_BREAK case 66: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(HINT) +TOKEN(HAVING) YY_BREAK case 67: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(HOUR) +TOKEN(HINT) YY_BREAK case 68: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(HOURS) +TOKEN(HOUR) YY_BREAK case 69: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(IF) +TOKEN(HOURS) YY_BREAK case 70: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(IF) YY_BREAK case 71: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(ILIKE) YY_BREAK case 72: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(IN) +TOKEN(IMPORT) YY_BREAK case 73: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(IN) YY_BREAK case 74: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 75: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(INNER) YY_BREAK case 76: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(INT) +TOKEN(INSERT) YY_BREAK case 77: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(INTEGER) +TOKEN(INT) YY_BREAK case 78: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(INTERSECT) +TOKEN(INTEGER) YY_BREAK case 79: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(INTERVAL) +TOKEN(INTERSECT) YY_BREAK case 80: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(INTO) +TOKEN(INTERVAL) YY_BREAK case 81: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(IS) +TOKEN(INTO) YY_BREAK case 82: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(IS) YY_BREAK case 83: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(ISNULL) YY_BREAK case 84: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(KEY) +TOKEN(JOIN) YY_BREAK case 85: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(KEY) YY_BREAK case 86: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(LEFT) YY_BREAK case 87: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(LIKE) YY_BREAK case 88: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LIMIT) YY_BREAK case 89: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LOAD) YY_BREAK case 90: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(LOCKED) +TOKEN(LOCAL) YY_BREAK case 91: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(LONG) +TOKEN(LOCKED) YY_BREAK case 92: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LONG) YY_BREAK case 93: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 94: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(MINUTE) +TOKEN(MINUS) YY_BREAK case 95: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(MINUTES) +TOKEN(MINUTE) YY_BREAK case 96: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(MONTH) +TOKEN(MINUTES) YY_BREAK case 97: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(MONTHS) +TOKEN(MONTH) YY_BREAK case 98: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(NATURAL) +TOKEN(MONTHS) YY_BREAK case 99: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(NO) +TOKEN(NATURAL) YY_BREAK case 100: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(NOT) +TOKEN(NO) YY_BREAK case 101: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(NOWAIT) +TOKEN(NOT) YY_BREAK case 102: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(NULL) +TOKEN(NOWAIT) YY_BREAK case 103: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NVARCHAR) +TOKEN(NULL) YY_BREAK case 104: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(OF) +TOKEN(NVARCHAR) YY_BREAK case 105: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(OFF) +TOKEN(OF) YY_BREAK case 106: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(OFF) YY_BREAK case 107: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(ON) +TOKEN(OFFSET) YY_BREAK case 108: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(OR) +TOKEN(ON) YY_BREAK case 109: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(OR) YY_BREAK case 110: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 111: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(PARAMETERS) +TOKEN(OUTER) YY_BREAK case 112: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(OVER) YY_BREAK case 113: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(PREPARE) +TOKEN(PARAMETERS) YY_BREAK case 114: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(PRIMARY) +TOKEN(PARTITION) YY_BREAK case 115: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(REAL) +TOKEN(PLAN) YY_BREAK case 116: YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(PREPARE) YY_BREAK case 117: YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(RESTRICT) +TOKEN(PRIMARY) YY_BREAK case 118: YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(RANGE) YY_BREAK case 119: YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(ROLLBACK) +TOKEN(REAL) YY_BREAK case 120: YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(RENAME) YY_BREAK case 121: YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(SCHEMAS) +TOKEN(RESTRICT) YY_BREAK case 122: YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(SECOND) +TOKEN(RIGHT) YY_BREAK case 123: YY_RULE_SETUP #line 183 "flex_lexer.l" -TOKEN(SECONDS) +TOKEN(ROLLBACK) YY_BREAK case 124: YY_RULE_SETUP #line 184 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(ROWS) YY_BREAK case 125: YY_RULE_SETUP #line 185 "flex_lexer.l" -TOKEN(SET) +TOKEN(SCHEMA) YY_BREAK case 126: YY_RULE_SETUP #line 186 "flex_lexer.l" -TOKEN(SHARE) +TOKEN(SCHEMAS) YY_BREAK case 127: YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(SECOND) YY_BREAK case 128: YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(SKIP) +TOKEN(SECONDS) YY_BREAK case 129: YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(SMALLINT) +TOKEN(SELECT) YY_BREAK case 130: YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(SET) YY_BREAK case 131: YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(SPATIAL) +TOKEN(SHARE) YY_BREAK case 132: YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(SHOW) YY_BREAK case 133: YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(SKIP) YY_BREAK case 134: YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(TEMPORARY) +TOKEN(SMALLINT) YY_BREAK case 135: YY_RULE_SETUP #line 195 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(SORTED) YY_BREAK case 136: YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(THEN) +TOKEN(SPATIAL) YY_BREAK case 137: YY_RULE_SETUP #line 197 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TABLE) YY_BREAK case 138: YY_RULE_SETUP #line 198 "flex_lexer.l" -TOKEN(TIMESTAMP) +TOKEN(TABLES) YY_BREAK case 139: YY_RULE_SETUP #line 199 "flex_lexer.l" -TOKEN(TO) +TOKEN(TEMPORARY) YY_BREAK case 140: YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(TOP) +TOKEN(TEXT) YY_BREAK case 141: YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(TRANSACTION) +TOKEN(THEN) YY_BREAK case 142: YY_RULE_SETUP #line 202 "flex_lexer.l" -TOKEN(TRUE) +TOKEN(TIME) YY_BREAK case 143: YY_RULE_SETUP #line 203 "flex_lexer.l" -TOKEN(TRUNCATE) +TOKEN(TIMESTAMP) YY_BREAK case 144: YY_RULE_SETUP #line 204 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TO) YY_BREAK case 145: YY_RULE_SETUP #line 205 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(TOP) YY_BREAK case 146: YY_RULE_SETUP #line 206 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(TRANSACTION) YY_BREAK case 147: YY_RULE_SETUP #line 207 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(TRUE) YY_BREAK case 148: YY_RULE_SETUP #line 208 "flex_lexer.l" -TOKEN(USING) +TOKEN(TRUNCATE) YY_BREAK case 149: YY_RULE_SETUP #line 209 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(UNION) YY_BREAK case 150: YY_RULE_SETUP #line 210 "flex_lexer.l" -TOKEN(VARCHAR) +TOKEN(UNIQUE) YY_BREAK case 151: YY_RULE_SETUP #line 211 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(UNLOAD) YY_BREAK case 152: YY_RULE_SETUP #line 212 "flex_lexer.l" -TOKEN(VIRTUAL) +TOKEN(UPDATE) YY_BREAK case 153: YY_RULE_SETUP #line 213 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(USING) YY_BREAK case 154: YY_RULE_SETUP #line 214 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(VALUES) YY_BREAK case 155: YY_RULE_SETUP #line 215 "flex_lexer.l" -TOKEN(WITH) +TOKEN(VARCHAR) YY_BREAK case 156: YY_RULE_SETUP #line 216 "flex_lexer.l" -TOKEN(YEAR) +TOKEN(VIEW) YY_BREAK case 157: YY_RULE_SETUP #line 217 "flex_lexer.l" -TOKEN(YEARS) +TOKEN(VIRTUAL) YY_BREAK case 158: -/* rule 158 can match eol */ YY_RULE_SETUP -#line 219 "flex_lexer.l" -TOKEN(CHARACTER_VARYING) +#line 218 "flex_lexer.l" +TOKEN(WHEN) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 159: YY_RULE_SETUP -#line 222 "flex_lexer.l" -TOKEN(EQUALS) +#line 219 "flex_lexer.l" +TOKEN(WHERE) YY_BREAK case 160: YY_RULE_SETUP -#line 223 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 220 "flex_lexer.l" +TOKEN(WITH) YY_BREAK case 161: YY_RULE_SETUP -#line 224 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 221 "flex_lexer.l" +TOKEN(YEAR) YY_BREAK case 162: YY_RULE_SETUP -#line 225 "flex_lexer.l" -TOKEN(LESSEQ) +#line 222 "flex_lexer.l" +TOKEN(YEARS) YY_BREAK case 163: +/* rule 163 can match eol */ YY_RULE_SETUP -#line 226 "flex_lexer.l" -TOKEN(GREATEREQ) +#line 224 "flex_lexer.l" +TOKEN(CHARACTER_VARYING) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 164: YY_RULE_SETUP #line 227 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(EQUALS) YY_BREAK case 165: YY_RULE_SETUP -#line 229 "flex_lexer.l" -{ return yytext[0]; } +#line 228 "flex_lexer.l" +TOKEN(NOTEQUALS) YY_BREAK case 166: -#line 232 "flex_lexer.l" +YY_RULE_SETUP +#line 229 "flex_lexer.l" +TOKEN(NOTEQUALS) + YY_BREAK case 167: YY_RULE_SETUP +#line 230 "flex_lexer.l" +TOKEN(LESSEQ) + YY_BREAK +case 168: +YY_RULE_SETUP +#line 231 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK +case 169: +YY_RULE_SETUP #line 232 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 170: +YY_RULE_SETUP +#line 234 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 171: +#line 237 "flex_lexer.l" +case 172: +YY_RULE_SETUP +#line 237 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; @@ -4108,17 +4165,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 168: +case 173: YY_RULE_SETUP -#line 242 "flex_lexer.l" +#line 247 "flex_lexer.l" { yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK -case 169: +case 174: YY_RULE_SETUP -#line 247 "flex_lexer.l" +#line 252 "flex_lexer.l" { errno = 0; yylval->ival = strtoll(yytext, nullptr, 0); @@ -4129,59 +4186,59 @@ YY_RULE_SETUP return SQL_INTVAL; } YY_BREAK -case 170: +case 175: YY_RULE_SETUP -#line 257 "flex_lexer.l" +#line 262 "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 171: +case 176: YY_RULE_SETUP -#line 263 "flex_lexer.l" +#line 268 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 172: +case 177: YY_RULE_SETUP -#line 268 "flex_lexer.l" +#line 273 "flex_lexer.l" { BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 YY_BREAK -case 173: +case 178: YY_RULE_SETUP -#line 269 "flex_lexer.l" +#line 274 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 174: -/* rule 174 can match eol */ +case 179: +/* rule 179 can match eol */ YY_RULE_SETUP -#line 270 "flex_lexer.l" +#line 275 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 175: +case 180: YY_RULE_SETUP -#line 271 "flex_lexer.l" +#line 276 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 272 "flex_lexer.l" +#line 277 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 176: +case 181: YY_RULE_SETUP -#line 274 "flex_lexer.l" +#line 279 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 177: +case 182: YY_RULE_SETUP -#line 276 "flex_lexer.l" +#line 281 "flex_lexer.l" ECHO; YY_BREAK -#line 4184 "flex_lexer.cpp" +#line 4241 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -4482,7 +4539,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 >= 1240 ) + if ( yy_current_state >= 1272 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4511,11 +4568,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 >= 1240 ) + if ( yy_current_state >= 1272 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1239); + yy_is_jam = (yy_current_state == 1271); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -5338,7 +5395,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 276 "flex_lexer.l" +#line 281 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index e3ab6c5d..e73bdde0 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -730,7 +730,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 276 "flex_lexer.l" +#line 281 "flex_lexer.l" #line 736 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 167e934c..5b444e5d 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -121,6 +121,7 @@ FROM TOKEN(FROM) FULL TOKEN(FULL) GLOBAL TOKEN(GLOBAL) GROUP TOKEN(GROUP) +GROUPS TOKEN(GROUPS) HASH TOKEN(HASH) HAVING TOKEN(HAVING) HINT TOKEN(HINT) @@ -168,15 +169,19 @@ ON TOKEN(ON) OR TOKEN(OR) ORDER TOKEN(ORDER) OUTER TOKEN(OUTER) +OVER TOKEN(OVER) PARAMETERS TOKEN(PARAMETERS) +PARTITION TOKEN(PARTITION) PLAN TOKEN(PLAN) PREPARE TOKEN(PREPARE) PRIMARY TOKEN(PRIMARY) +RANGE TOKEN(RANGE) REAL TOKEN(REAL) RENAME TOKEN(RENAME) RESTRICT TOKEN(RESTRICT) RIGHT TOKEN(RIGHT) ROLLBACK TOKEN(ROLLBACK) +ROWS TOKEN(ROWS) SCHEMA TOKEN(SCHEMA) SCHEMAS TOKEN(SCHEMAS) SECOND TOKEN(SECOND) diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index e2ac520f..e1785374 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -5,6 +5,27 @@ namespace hsql { +FrameDescription::FrameDescription(FrameType type, char* start, char* end) : type{type}, start{start}, end{end} {} + +FrameDescription::~FrameDescription() { + free(start); + free(end); +} + +WindowDescription::WindowDescription(std::vector* orderList, FrameDescription* frameDescription) + : orderList{orderList}, frameDescription(frameDescription) {} + +WindowDescription::~WindowDescription() { + if (orderList) { + for (OrderDescription* orderDescription : *orderList) { + delete orderDescription; + } + delete orderList; + } + + delete frameDescription; +} + Expr::Expr(ExprType type) : type(type), expr(nullptr), @@ -21,12 +42,15 @@ Expr::Expr(ExprType type) columnType(DataType::UNKNOWN, 0), isBoolLiteral(false), opType(kOpNone), - distinct(false) {} + distinct(false), + windowDescription(nullptr) {} Expr::~Expr() { delete expr; delete expr2; delete select; + delete windowDescription; + free(name); free(table); free(alias); @@ -243,6 +267,16 @@ Expr* Expr::makeCast(Expr* expr, ColumnType columnType) { return e; } +Expr* Expr::makeWindow(Expr* expr, std::vector* partitionList, std::vector* orderList, + FrameDescription* frameDescription) { + Expr* e = new Expr(kExprWindow); + e->expr = expr; + e->exprList = partitionList; + WindowDescription* w = new WindowDescription(orderList, frameDescription); + e->windowDescription = w; + return e; +} + bool Expr::isType(ExprType exprType) const { return exprType == type; } bool Expr::isLiteral() const { diff --git a/src/sql/Expr.h b/src/sql/Expr.h index 806f1602..2dea3b0c 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -8,6 +8,7 @@ namespace hsql { struct SelectStatement; +struct OrderDescription; // Helper function used by the lexer. // TODO: move to more appropriate place. @@ -30,7 +31,8 @@ enum ExprType { kExprArray, kExprArrayIndex, kExprExtract, - kExprCast + kExprCast, + kExprWindow }; // Operator types. These are important for expressions of type kExprOperator. @@ -83,6 +85,27 @@ enum DatetimeField { kDatetimeYear, }; +enum FrameType { kRange, kRows, kGroups }; + +// Description of the frame clause within a window expression. +struct FrameDescription { + FrameDescription(FrameType type, char* start, char* end); + virtual ~FrameDescription(); + + FrameType type; + char* start; + char* end; +}; + +// Description of additional fields for a window expression. +struct WindowDescription { + WindowDescription(std::vector* orderList, FrameDescription* frameDescription); + virtual ~WindowDescription(); + + std::vector* orderList; + FrameDescription* frameDescription; +}; + typedef struct Expr Expr; // Represents SQL expressions (i.e. literals, operators, column_refs). @@ -112,6 +135,8 @@ struct Expr { OperatorType opType; bool distinct; + WindowDescription* windowDescription; + // Convenience accessor methods. bool isType(ExprType exprType) const; @@ -183,6 +208,9 @@ struct Expr { static Expr* makeExtract(DatetimeField datetimeField1, Expr* expr); static Expr* makeCast(Expr* expr, ColumnType columnType); + + static Expr* makeWindow(Expr* expr, std::vector* partitionList, std::vector* orderList, + FrameDescription* frameDescription); }; // Zero initializes an Expr object and assigns it to a space in the heap diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 799d6b57..44cc9baf 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -49,3 +49,8 @@ !CREATE TABLE a_table (a_column INT NULL PRIMARY KEY); !CREATE TABLE a_table (a_column INT NOT NULL NULL); !CREATE TABLE a_table (a_column INT NULL NOT NULL); +# WINDOW EXPRESSIONS +!SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN UNBOUNDED AND CURRENT ROW) FROM test; +!SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN -1 PRECEDING AND CURRENT ROW) FROM test; +!SELECT test1, rank() OVER (INVALID UNBOUNDED PRECEDING) FROM test; +!SELECT rank() OVER (INVALID) FROM test; diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index 0441c186..cc2a36b5 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -100,3 +100,10 @@ SELECT * FROM test WHERE id = 1 FOR UPDATE NOWAIT; SELECT * FROM test1, test2 WHERE test1.id = 10 FOR UPDATE OF test1; SELECT * FROM test1, test2 WHERE test2.val = 2 FOR SHARE OF test1, test2; SELECT * FROM test1, test2 WHERE test2.val = 2 FOR UPDATE OF test1 FOR SHARE OF test2; +# WINDOW EXPRESSIONS +SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) an_alias FROM test; +SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3, test4 ORDER BY test5, test6 ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) FROM test; +SELECT test1, rank() OVER (ORDER BY test2 DESC, test3 ASC) rnk FROM test; +SELECT rank() OVER () FROM test; +SELECT rank() OVER (PARTITION BY test1) FROM test; +SELECT rank() OVER (PARTITION BY test1 ORDER BY test2) FROM test; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index aeb8d759..f2dab8f7 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -827,20 +827,20 @@ TEST(LockingClauseWithoutWaitPolicy) { stmt = (SelectStatement*)result.getStatement(0); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::None); stmt = (SelectStatement*)result.getStatement(1); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForShare); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::None); stmt = (SelectStatement*)result.getStatement(2); ASSERT_EQ(stmt->lockings->size(), 2); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); - ASSERT_TRUE(stmt->lockings->at(1)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); + ASSERT_FALSE(stmt->lockings->at(1)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForNoKeyUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::None); ASSERT_EQ(stmt->lockings->at(1)->rowLockMode, RowLockMode::ForKeyShare); @@ -862,49 +862,49 @@ TEST(LockingClauseWithWaitPolicy) { stmt = (SelectStatement*)result.getStatement(0); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::NoWait); stmt = (SelectStatement*)result.getStatement(1); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForShare); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::NoWait); stmt = (SelectStatement*)result.getStatement(2); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForNoKeyUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::NoWait); stmt = (SelectStatement*)result.getStatement(3); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForKeyShare); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::NoWait); stmt = (SelectStatement*)result.getStatement(4); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::SkipLocked); stmt = (SelectStatement*)result.getStatement(5); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForShare); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::SkipLocked); stmt = (SelectStatement*)result.getStatement(6); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForNoKeyUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::SkipLocked); stmt = (SelectStatement*)result.getStatement(7); ASSERT_EQ(stmt->lockings->size(), 1); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForKeyShare); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::SkipLocked); } @@ -975,7 +975,7 @@ TEST(MultipleLockingClause) { ASSERT_EQ(stmt->lockings->size(), 3); ASSERT_EQ(stmt->lockings->at(0)->rowLockMode, RowLockMode::ForNoKeyUpdate); ASSERT_EQ(stmt->lockings->at(0)->rowLockWaitPolicy, RowLockWaitPolicy::None); - ASSERT_TRUE(stmt->lockings->at(0)->tables == nullptr); + ASSERT_FALSE(stmt->lockings->at(0)->tables); ASSERT_EQ(stmt->lockings->at(1)->rowLockMode, RowLockMode::ForShare); ASSERT_EQ(stmt->lockings->at(1)->rowLockWaitPolicy, RowLockWaitPolicy::SkipLocked); @@ -988,3 +988,84 @@ TEST(MultipleLockingClause) { ASSERT_STREQ(stmt->lockings->at(2)->tables->at(0), "c"); ASSERT_STREQ(stmt->lockings->at(2)->tables->at(1), "s"); } + +TEST(WindowExpression) { + SelectStatement* stmt; + TEST_PARSE_SQL_QUERY( + "SELECT t2, avg(t1) OVER() FROM t;" + "SELECT rank() OVER(ORDER BY t1) FROM t;" + "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5) FROM t;" + "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND CURRENT ROW) FROM t;" + "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t;" + "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 GROUPS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t;", + result, 6); + + stmt = (SelectStatement*)result.getStatement(0); + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 2); + ASSERT_EQ(stmt->selectList->at(1)->type, kExprWindow); + ASSERT_FALSE(stmt->selectList->at(1)->exprList); + ASSERT_TRUE(stmt->selectList->at(1)->expr); + ASSERT_EQ(stmt->selectList->at(1)->expr->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(1)->expr->name, "avg"); + ASSERT_TRUE(stmt->selectList->at(1)->expr->exprList) + ASSERT_EQ(stmt->selectList->at(1)->expr->exprList->size(), 1); + ASSERT_EQ(stmt->selectList->at(1)->expr->exprList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(1)->expr->exprList->at(0)->name, "t1"); + ASSERT_TRUE(stmt->selectList->at(1)->windowDescription); + ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->orderList); + ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + + stmt = (SelectStatement*)result.getStatement(1); + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); + ASSERT_FALSE(stmt->selectList->at(0)->exprList); + ASSERT_TRUE(stmt->selectList->at(0)->expr); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "rank"); + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList) + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()) + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t1"); + ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + + stmt = (SelectStatement*)result.getStatement(2); + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); + ASSERT_TRUE(stmt->selectList->at(0)->exprList); + ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 2); + ASSERT_EQ(stmt->selectList->at(0)->exprList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(0)->name, "t2"); + ASSERT_EQ(stmt->selectList->at(0)->exprList->at(1)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(1)->name, "t3"); + ASSERT_TRUE(stmt->selectList->at(0)->expr); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "avg"); + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList) + ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->size(), 1) + ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->expr->exprList->at(0)->name, "t1"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 2); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t4"); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->name, "t5"); + ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + +} From de92cd906d87ef213d5075fc670d691ca85da293 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 18:03:14 +0200 Subject: [PATCH 02/12] reserve enough space --- src/parser/bison_parser.cpp | 438 ++++++++++++++++++------------------ src/parser/bison_parser.y | 14 +- 2 files changed, 230 insertions(+), 222 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 97064729..51ef23c8 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -881,19 +881,19 @@ static const yytype_int16 yyrline[] = 939, 939, 941, 942, 943, 944, 945, 947, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 958, 959, 961, 962, 963, 964, 968, 970, 971, 973, 974, 975, - 977, 978, 979, 985, 1000, 1009, 1010, 1011, 1012, 1014, - 1015, 1017, 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, - 1028, 1029, 1031, 1033, 1035, 1036, 1037, 1038, 1039, 1040, - 1042, 1043, 1044, 1045, 1046, 1047, 1049, 1049, 1051, 1053, - 1055, 1057, 1058, 1059, 1060, 1062, 1062, 1062, 1062, 1062, - 1062, 1062, 1064, 1066, 1067, 1069, 1070, 1072, 1074, 1076, - 1087, 1091, 1102, 1134, 1143, 1143, 1150, 1150, 1152, 1152, - 1159, 1163, 1168, 1176, 1182, 1186, 1191, 1192, 1194, 1194, - 1196, 1196, 1198, 1199, 1201, 1201, 1207, 1208, 1210, 1214, - 1219, 1225, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1245, - 1245, 1247, 1249, 1253, 1258, 1268, 1275, 1283, 1307, 1308, - 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1318, 1324, - 1324, 1327, 1331 + 977, 978, 979, 985, 1001, 1013, 1014, 1015, 1016, 1018, + 1019, 1021, 1022, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1032, 1033, 1035, 1037, 1039, 1040, 1041, 1042, 1043, 1044, + 1046, 1047, 1048, 1049, 1050, 1051, 1053, 1053, 1055, 1057, + 1059, 1061, 1062, 1063, 1064, 1066, 1066, 1066, 1066, 1066, + 1066, 1066, 1068, 1070, 1071, 1073, 1074, 1076, 1078, 1080, + 1091, 1095, 1106, 1138, 1147, 1147, 1154, 1154, 1156, 1156, + 1163, 1167, 1172, 1180, 1186, 1190, 1195, 1196, 1198, 1198, + 1200, 1200, 1202, 1203, 1205, 1205, 1211, 1212, 1214, 1218, + 1223, 1229, 1236, 1237, 1238, 1239, 1241, 1242, 1243, 1249, + 1249, 1251, 1253, 1257, 1262, 1272, 1279, 1287, 1311, 1312, + 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1322, 1328, + 1328, 1331, 1335 }; #endif @@ -4710,294 +4710,298 @@ YYLTYPE yylloc = yyloc_default; stream << (yyvsp[-1].ival); std::string temp_str = stream.str(); - // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. - char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + 1))); + // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. +2 for NULL + // terminator and whitespace. + char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen((yyvsp[0].sval)) + 2))); strcpy(char_type, temp_str.c_str()); strcat(char_type, " "); strcat(char_type, (yyvsp[0].sval)); free((yyvsp[0].sval)); (yyval.sval) = char_type; } -#line 4722 "bison_parser.cpp" +#line 4723 "bison_parser.cpp" break; case 214: /* frame_bound: IDENTIFIER IDENTIFIER */ -#line 1000 "bison_parser.y" +#line 1001 "bison_parser.y" { - strcat((yyvsp[-1].sval), " "); - strcat((yyvsp[-1].sval), (yyvsp[0].sval)); + char* char_type = static_cast(malloc(sizeof(char) * (strlen((yyvsp[-1].sval)) + strlen((yyvsp[0].sval)) + 2))); + strcpy(char_type, (yyvsp[-1].sval)); + strcat(char_type, " "); + strcat(char_type, (yyvsp[0].sval)); + free((yyvsp[-1].sval)); free((yyvsp[0].sval)); - (yyval.sval) = (yyvsp[-1].sval); + (yyval.sval) = char_type; } -#line 4733 "bison_parser.cpp" +#line 4737 "bison_parser.cpp" break; case 215: /* case_expr: CASE expr case_list END */ -#line 1009 "bison_parser.y" +#line 1013 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4739 "bison_parser.cpp" +#line 4743 "bison_parser.cpp" break; case 216: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1010 "bison_parser.y" +#line 1014 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4745 "bison_parser.cpp" +#line 4749 "bison_parser.cpp" break; case 217: /* case_expr: CASE case_list END */ -#line 1011 "bison_parser.y" +#line 1015 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4751 "bison_parser.cpp" +#line 4755 "bison_parser.cpp" break; case 218: /* case_expr: CASE case_list ELSE expr END */ -#line 1012 "bison_parser.y" +#line 1016 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4757 "bison_parser.cpp" +#line 4761 "bison_parser.cpp" break; case 219: /* case_list: WHEN expr THEN expr */ -#line 1014 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4763 "bison_parser.cpp" +#line 4767 "bison_parser.cpp" break; case 220: /* case_list: case_list WHEN expr THEN expr */ -#line 1015 "bison_parser.y" +#line 1019 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4769 "bison_parser.cpp" +#line 4773 "bison_parser.cpp" break; case 221: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1017 "bison_parser.y" +#line 1021 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4775 "bison_parser.cpp" +#line 4779 "bison_parser.cpp" break; case 222: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1018 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4781 "bison_parser.cpp" +#line 4785 "bison_parser.cpp" break; case 223: /* comp_expr: operand '=' operand */ -#line 1020 "bison_parser.y" +#line 1024 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4787 "bison_parser.cpp" +#line 4791 "bison_parser.cpp" break; case 224: /* comp_expr: operand EQUALS operand */ -#line 1021 "bison_parser.y" +#line 1025 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4793 "bison_parser.cpp" +#line 4797 "bison_parser.cpp" break; case 225: /* comp_expr: operand NOTEQUALS operand */ -#line 1022 "bison_parser.y" +#line 1026 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4799 "bison_parser.cpp" +#line 4803 "bison_parser.cpp" break; case 226: /* comp_expr: operand '<' operand */ -#line 1023 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4805 "bison_parser.cpp" +#line 4809 "bison_parser.cpp" break; case 227: /* comp_expr: operand '>' operand */ -#line 1024 "bison_parser.y" +#line 1028 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4811 "bison_parser.cpp" +#line 4815 "bison_parser.cpp" break; case 228: /* comp_expr: operand LESSEQ operand */ -#line 1025 "bison_parser.y" +#line 1029 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4817 "bison_parser.cpp" +#line 4821 "bison_parser.cpp" break; case 229: /* comp_expr: operand GREATEREQ operand */ -#line 1026 "bison_parser.y" +#line 1030 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4823 "bison_parser.cpp" +#line 4827 "bison_parser.cpp" break; case 230: /* function_expr: IDENTIFIER '(' ')' */ -#line 1028 "bison_parser.y" +#line 1032 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4829 "bison_parser.cpp" +#line 4833 "bison_parser.cpp" break; case 231: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 1029 "bison_parser.y" +#line 1033 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4835 "bison_parser.cpp" +#line 4839 "bison_parser.cpp" break; case 232: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1031 "bison_parser.y" +#line 1035 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4841 "bison_parser.cpp" +#line 4845 "bison_parser.cpp" break; case 233: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1033 "bison_parser.y" +#line 1037 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4847 "bison_parser.cpp" +#line 4851 "bison_parser.cpp" break; case 234: /* datetime_field: SECOND */ -#line 1035 "bison_parser.y" +#line 1039 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4853 "bison_parser.cpp" +#line 4857 "bison_parser.cpp" break; case 235: /* datetime_field: MINUTE */ -#line 1036 "bison_parser.y" +#line 1040 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4859 "bison_parser.cpp" +#line 4863 "bison_parser.cpp" break; case 236: /* datetime_field: HOUR */ -#line 1037 "bison_parser.y" +#line 1041 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4865 "bison_parser.cpp" +#line 4869 "bison_parser.cpp" break; case 237: /* datetime_field: DAY */ -#line 1038 "bison_parser.y" +#line 1042 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4871 "bison_parser.cpp" +#line 4875 "bison_parser.cpp" break; case 238: /* datetime_field: MONTH */ -#line 1039 "bison_parser.y" +#line 1043 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4877 "bison_parser.cpp" +#line 4881 "bison_parser.cpp" break; case 239: /* datetime_field: YEAR */ -#line 1040 "bison_parser.y" +#line 1044 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4883 "bison_parser.cpp" +#line 4887 "bison_parser.cpp" break; case 240: /* datetime_field_plural: SECONDS */ -#line 1042 "bison_parser.y" +#line 1046 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4889 "bison_parser.cpp" +#line 4893 "bison_parser.cpp" break; case 241: /* datetime_field_plural: MINUTES */ -#line 1043 "bison_parser.y" +#line 1047 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4895 "bison_parser.cpp" +#line 4899 "bison_parser.cpp" break; case 242: /* datetime_field_plural: HOURS */ -#line 1044 "bison_parser.y" +#line 1048 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4901 "bison_parser.cpp" +#line 4905 "bison_parser.cpp" break; case 243: /* datetime_field_plural: DAYS */ -#line 1045 "bison_parser.y" +#line 1049 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4907 "bison_parser.cpp" +#line 4911 "bison_parser.cpp" break; case 244: /* datetime_field_plural: MONTHS */ -#line 1046 "bison_parser.y" +#line 1050 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4913 "bison_parser.cpp" +#line 4917 "bison_parser.cpp" break; case 245: /* datetime_field_plural: YEARS */ -#line 1047 "bison_parser.y" +#line 1051 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4919 "bison_parser.cpp" +#line 4923 "bison_parser.cpp" break; case 248: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1051 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4925 "bison_parser.cpp" +#line 4929 "bison_parser.cpp" break; case 249: /* array_index: operand '[' int_literal ']' */ -#line 1053 "bison_parser.y" +#line 1057 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4931 "bison_parser.cpp" +#line 4935 "bison_parser.cpp" break; case 250: /* between_expr: operand BETWEEN operand AND operand */ -#line 1055 "bison_parser.y" +#line 1059 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4937 "bison_parser.cpp" +#line 4941 "bison_parser.cpp" break; case 251: /* column_name: IDENTIFIER */ -#line 1057 "bison_parser.y" +#line 1061 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4943 "bison_parser.cpp" +#line 4947 "bison_parser.cpp" break; case 252: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1058 "bison_parser.y" +#line 1062 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4949 "bison_parser.cpp" +#line 4953 "bison_parser.cpp" break; case 253: /* column_name: '*' */ -#line 1059 "bison_parser.y" +#line 1063 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4955 "bison_parser.cpp" +#line 4959 "bison_parser.cpp" break; case 254: /* column_name: IDENTIFIER '.' '*' */ -#line 1060 "bison_parser.y" +#line 1064 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4961 "bison_parser.cpp" +#line 4965 "bison_parser.cpp" break; case 262: /* string_literal: STRING */ -#line 1064 "bison_parser.y" +#line 1068 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4967 "bison_parser.cpp" +#line 4971 "bison_parser.cpp" break; case 263: /* bool_literal: TRUE */ -#line 1066 "bison_parser.y" +#line 1070 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4973 "bison_parser.cpp" +#line 4977 "bison_parser.cpp" break; case 264: /* bool_literal: FALSE */ -#line 1067 "bison_parser.y" +#line 1071 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4979 "bison_parser.cpp" +#line 4983 "bison_parser.cpp" break; case 265: /* num_literal: FLOATVAL */ -#line 1069 "bison_parser.y" +#line 1073 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4985 "bison_parser.cpp" +#line 4989 "bison_parser.cpp" break; case 267: /* int_literal: INTVAL */ -#line 1072 "bison_parser.y" +#line 1076 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4991 "bison_parser.cpp" +#line 4995 "bison_parser.cpp" break; case 268: /* null_literal: NULL */ -#line 1074 "bison_parser.y" +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4997 "bison_parser.cpp" +#line 5001 "bison_parser.cpp" break; case 269: /* date_literal: DATE STRING */ -#line 1076 "bison_parser.y" +#line 1080 "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 @@ -5008,20 +5012,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5012 "bison_parser.cpp" +#line 5016 "bison_parser.cpp" break; case 270: /* interval_literal: int_literal duration_field */ -#line 1087 "bison_parser.y" +#line 1091 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 5021 "bison_parser.cpp" +#line 5025 "bison_parser.cpp" break; case 271: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1091 "bison_parser.y" +#line 1095 "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 @@ -5033,11 +5037,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5037 "bison_parser.cpp" +#line 5041 "bison_parser.cpp" break; case 272: /* interval_literal: INTERVAL STRING */ -#line 1102 "bison_parser.y" +#line 1106 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5069,61 +5073,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5073 "bison_parser.cpp" +#line 5077 "bison_parser.cpp" break; case 273: /* param_expr: '?' */ -#line 1134 "bison_parser.y" +#line 1138 "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 5083 "bison_parser.cpp" +#line 5087 "bison_parser.cpp" break; case 275: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1143 "bison_parser.y" +#line 1147 "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 5094 "bison_parser.cpp" +#line 5098 "bison_parser.cpp" break; case 279: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1152 "bison_parser.y" +#line 1156 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5105 "bison_parser.cpp" +#line 5109 "bison_parser.cpp" break; case 280: /* table_ref_commalist: table_ref_atomic */ -#line 1159 "bison_parser.y" +#line 1163 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5114 "bison_parser.cpp" +#line 5118 "bison_parser.cpp" break; case 281: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1163 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5123 "bison_parser.cpp" +#line 5127 "bison_parser.cpp" break; case 282: /* table_ref_name: table_name opt_table_alias */ -#line 1168 "bison_parser.y" +#line 1172 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5131,215 +5135,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5135 "bison_parser.cpp" +#line 5139 "bison_parser.cpp" break; case 283: /* table_ref_name_no_alias: table_name */ -#line 1176 "bison_parser.y" +#line 1180 "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 5145 "bison_parser.cpp" +#line 5149 "bison_parser.cpp" break; case 284: /* table_name: IDENTIFIER */ -#line 1182 "bison_parser.y" +#line 1186 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5154 "bison_parser.cpp" +#line 5158 "bison_parser.cpp" break; case 285: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1186 "bison_parser.y" +#line 1190 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5163 "bison_parser.cpp" +#line 5167 "bison_parser.cpp" break; case 286: /* opt_index_name: IDENTIFIER */ -#line 1191 "bison_parser.y" +#line 1195 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5169 "bison_parser.cpp" +#line 5173 "bison_parser.cpp" break; case 287: /* opt_index_name: %empty */ -#line 1192 "bison_parser.y" +#line 1196 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5175 "bison_parser.cpp" +#line 5179 "bison_parser.cpp" break; case 289: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1194 "bison_parser.y" +#line 1198 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5181 "bison_parser.cpp" +#line 5185 "bison_parser.cpp" break; case 291: /* opt_table_alias: %empty */ -#line 1196 "bison_parser.y" +#line 1200 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5187 "bison_parser.cpp" +#line 5191 "bison_parser.cpp" break; case 292: /* alias: AS IDENTIFIER */ -#line 1198 "bison_parser.y" +#line 1202 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5193 "bison_parser.cpp" +#line 5197 "bison_parser.cpp" break; case 293: /* alias: IDENTIFIER */ -#line 1199 "bison_parser.y" +#line 1203 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5199 "bison_parser.cpp" +#line 5203 "bison_parser.cpp" break; case 295: /* opt_alias: %empty */ -#line 1201 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5205 "bison_parser.cpp" +#line 5209 "bison_parser.cpp" break; case 296: /* opt_locking_clause: opt_locking_clause_list */ -#line 1207 "bison_parser.y" +#line 1211 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5211 "bison_parser.cpp" +#line 5215 "bison_parser.cpp" break; case 297: /* opt_locking_clause: %empty */ -#line 1208 "bison_parser.y" +#line 1212 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5217 "bison_parser.cpp" +#line 5221 "bison_parser.cpp" break; case 298: /* opt_locking_clause_list: locking_clause */ -#line 1210 "bison_parser.y" +#line 1214 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5226 "bison_parser.cpp" +#line 5230 "bison_parser.cpp" break; case 299: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1214 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5235 "bison_parser.cpp" +#line 5239 "bison_parser.cpp" break; case 300: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1219 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5246 "bison_parser.cpp" +#line 5250 "bison_parser.cpp" break; case 301: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1225 "bison_parser.y" +#line 1229 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5257 "bison_parser.cpp" +#line 5261 "bison_parser.cpp" break; case 302: /* row_lock_mode: UPDATE */ -#line 1232 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5263 "bison_parser.cpp" +#line 5267 "bison_parser.cpp" break; case 303: /* row_lock_mode: NO KEY UPDATE */ -#line 1233 "bison_parser.y" +#line 1237 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5269 "bison_parser.cpp" +#line 5273 "bison_parser.cpp" break; case 304: /* row_lock_mode: SHARE */ -#line 1234 "bison_parser.y" +#line 1238 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5275 "bison_parser.cpp" +#line 5279 "bison_parser.cpp" break; case 305: /* row_lock_mode: KEY SHARE */ -#line 1235 "bison_parser.y" +#line 1239 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5281 "bison_parser.cpp" +#line 5285 "bison_parser.cpp" break; case 306: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1237 "bison_parser.y" +#line 1241 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5287 "bison_parser.cpp" +#line 5291 "bison_parser.cpp" break; case 307: /* opt_row_lock_policy: NOWAIT */ -#line 1238 "bison_parser.y" +#line 1242 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5293 "bison_parser.cpp" +#line 5297 "bison_parser.cpp" break; case 308: /* opt_row_lock_policy: %empty */ -#line 1239 "bison_parser.y" +#line 1243 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5299 "bison_parser.cpp" +#line 5303 "bison_parser.cpp" break; case 310: /* opt_with_clause: %empty */ -#line 1245 "bison_parser.y" +#line 1249 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5305 "bison_parser.cpp" +#line 5309 "bison_parser.cpp" break; case 311: /* with_clause: WITH with_description_list */ -#line 1247 "bison_parser.y" +#line 1251 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5311 "bison_parser.cpp" +#line 5315 "bison_parser.cpp" break; case 312: /* with_description_list: with_description */ -#line 1249 "bison_parser.y" +#line 1253 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5320 "bison_parser.cpp" +#line 5324 "bison_parser.cpp" break; case 313: /* with_description_list: with_description_list ',' with_description */ -#line 1253 "bison_parser.y" +#line 1257 "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 5329 "bison_parser.cpp" +#line 5333 "bison_parser.cpp" break; case 314: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1258 "bison_parser.y" +#line 1262 "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 5339 "bison_parser.cpp" +#line 5343 "bison_parser.cpp" break; case 315: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1268 "bison_parser.y" +#line 1272 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5347,11 +5351,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5351 "bison_parser.cpp" +#line 5355 "bison_parser.cpp" break; case 316: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1275 "bison_parser.y" +#line 1279 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5360,11 +5364,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5364 "bison_parser.cpp" +#line 5368 "bison_parser.cpp" break; case 317: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1283 "bison_parser.y" +#line 1287 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5388,89 +5392,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5392 "bison_parser.cpp" +#line 5396 "bison_parser.cpp" break; case 318: /* opt_join_type: INNER */ -#line 1307 "bison_parser.y" +#line 1311 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5398 "bison_parser.cpp" +#line 5402 "bison_parser.cpp" break; case 319: /* opt_join_type: LEFT OUTER */ -#line 1308 "bison_parser.y" +#line 1312 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5404 "bison_parser.cpp" +#line 5408 "bison_parser.cpp" break; case 320: /* opt_join_type: LEFT */ -#line 1309 "bison_parser.y" +#line 1313 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5410 "bison_parser.cpp" +#line 5414 "bison_parser.cpp" break; case 321: /* opt_join_type: RIGHT OUTER */ -#line 1310 "bison_parser.y" +#line 1314 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5416 "bison_parser.cpp" +#line 5420 "bison_parser.cpp" break; case 322: /* opt_join_type: RIGHT */ -#line 1311 "bison_parser.y" +#line 1315 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5422 "bison_parser.cpp" +#line 5426 "bison_parser.cpp" break; case 323: /* opt_join_type: FULL OUTER */ -#line 1312 "bison_parser.y" +#line 1316 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5428 "bison_parser.cpp" +#line 5432 "bison_parser.cpp" break; case 324: /* opt_join_type: OUTER */ -#line 1313 "bison_parser.y" +#line 1317 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5434 "bison_parser.cpp" +#line 5438 "bison_parser.cpp" break; case 325: /* opt_join_type: FULL */ -#line 1314 "bison_parser.y" +#line 1318 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5440 "bison_parser.cpp" +#line 5444 "bison_parser.cpp" break; case 326: /* opt_join_type: CROSS */ -#line 1315 "bison_parser.y" +#line 1319 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5446 "bison_parser.cpp" +#line 5450 "bison_parser.cpp" break; case 327: /* opt_join_type: %empty */ -#line 1316 "bison_parser.y" +#line 1320 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5452 "bison_parser.cpp" +#line 5456 "bison_parser.cpp" break; case 331: /* ident_commalist: IDENTIFIER */ -#line 1327 "bison_parser.y" +#line 1331 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5461 "bison_parser.cpp" +#line 5465 "bison_parser.cpp" break; case 332: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1331 "bison_parser.y" +#line 1335 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5470 "bison_parser.cpp" +#line 5474 "bison_parser.cpp" break; -#line 5474 "bison_parser.cpp" +#line 5478 "bison_parser.cpp" default: break; } @@ -5699,7 +5703,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1337 "bison_parser.y" +#line 1341 "bison_parser.y" // clang-format on /********************************* diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index cc4cc72f..7c2efd6b 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -989,8 +989,9 @@ frame_bound : INTVAL IDENTIFIER { stream << $1; std::string temp_str = stream.str(); - // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. - char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + 1))); + // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. +2 for NULL + // terminator and whitespace. + char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen($2) + 2))); strcpy(char_type, temp_str.c_str()); strcat(char_type, " "); strcat(char_type, $2); @@ -998,10 +999,13 @@ frame_bound : INTVAL IDENTIFIER { $$ = char_type; } | IDENTIFIER IDENTIFIER { - strcat($1, " "); - strcat($1, $2); + char* char_type = static_cast(malloc(sizeof(char) * (strlen($1) + strlen($2) + 2))); + strcpy(char_type, $1); + strcat(char_type, " "); + strcat(char_type, $2); + free($1); free($2); - $$ = $1; + $$ = char_type; }; // CASE grammar based on: flex & bison by John Levine From 149841c197c9e268a2685011b09d0700dc429a63 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 19:35:16 +0200 Subject: [PATCH 03/12] rename --- src/parser/bison_parser.y | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 7c2efd6b..979a6c51 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -989,23 +989,25 @@ frame_bound : INTVAL IDENTIFIER { stream << $1; std::string temp_str = stream.str(); - // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. +2 for NULL - // terminator and whitespace. - char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen($2) + 2))); - strcpy(char_type, temp_str.c_str()); - strcat(char_type, " "); - strcat(char_type, $2); + // We must allocate a new char* that has enough space for the result. The destructor for sval (a.k.a char*) uses + // free(), so we have to use malloc() rather than new char. +2 for NULL terminator and whitespace. + char* result = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen($2) + 2))); + strcpy(result, temp_str.c_str()); + strcat(result, " "); + strcat(result, $2); free($2); - $$ = char_type; + $$ = result; } | IDENTIFIER IDENTIFIER { - char* char_type = static_cast(malloc(sizeof(char) * (strlen($1) + strlen($2) + 2))); - strcpy(char_type, $1); - strcat(char_type, " "); - strcat(char_type, $2); + // We must allocate a new char* that has enough space for the result. The destructor for sval (a.k.a char*) uses + // free(), so we have to use malloc() rather than new char. +2 for NULL terminator and whitespace. + char* result = static_cast(malloc(sizeof(char) * (strlen($1) + strlen($2) + 2))); + strcpy(result, $1); + strcat(result, " "); + strcat(result, $2); free($1); free($2); - $$ = char_type; + $$ = result; }; // CASE grammar based on: flex & bison by John Levine From 7f45a3fc34b4a8a965cb9be13023625180b5ef66 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 21:51:15 +0200 Subject: [PATCH 04/12] redo frame bounds --- src/parser/bison_parser.cpp | 3410 ++++++++-------- src/parser/bison_parser.h | 413 +- src/parser/bison_parser.y | 44 +- src/parser/flex_lexer.cpp | 7401 +++++++++++++++------------------- src/parser/flex_lexer.h | 167 +- src/parser/flex_lexer.l | 5 + src/sql/Expr.cpp | 13 +- src/sql/Expr.h | 18 +- src/util/sqlhelper.cpp | 364 +- src/util/sqlhelper.h | 5 + test/queries/queries-bad.sql | 4 + test/select_tests.cpp | 63 +- 12 files changed, 5549 insertions(+), 6358 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 51ef23c8..9c9e24b2 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -64,20 +64,20 @@ #define YYPULL 1 /* Substitute the type names. */ -#define YYSTYPE HSQL_STYPE -#define YYLTYPE HSQL_LTYPE +#define YYSTYPE HSQL_STYPE +#define YYLTYPE HSQL_LTYPE /* Substitute the variable and function names. */ -#define yyparse hsql_parse -#define yylex hsql_lex -#define yyerror hsql_error -#define yydebug hsql_debug -#define yynerrs hsql_nerrs +#define yyparse hsql_parse +#define yylex hsql_lex +#define yyerror hsql_error +#define yydebug hsql_debug +#define yynerrs hsql_nerrs /* First part of user prologue. */ #line 2 "bison_parser.y" - // clang-format on - /** +// clang-format on +/** * bison_parser.y * defines bison_parser.h * outputs bison_parser.c @@ -85,7 +85,7 @@ * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html * */ - /********************************* +/********************************* ** Section 1: C Declarations *********************************/ @@ -93,17 +93,17 @@ #include "flex_lexer.h" #include -#include #include +#include - using namespace hsql; +using namespace hsql; - int yyerror(YYLTYPE * llocp, SQLParserResult * result, yyscan_t scanner, const char* msg) { - result->setIsValid(false); - result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); - return 0; - } - // clang-format off +int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const char* msg) { + result->setIsValid(false); + result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); + return 0; +} +// clang-format off #line 109 "bison_parser.cpp" @@ -204,257 +204,261 @@ enum yysymbol_kind_t YYSYMBOL_DELTA = 68, /* DELTA */ YYSYMBOL_FLOAT = 69, /* FLOAT */ YYSYMBOL_GROUP = 70, /* GROUP */ - YYSYMBOL_GROUPS = 71, /* GROUPS */ - YYSYMBOL_INDEX = 72, /* INDEX */ - YYSYMBOL_INNER = 73, /* INNER */ - YYSYMBOL_LIMIT = 74, /* LIMIT */ - YYSYMBOL_LOCAL = 75, /* LOCAL */ - YYSYMBOL_MERGE = 76, /* MERGE */ - YYSYMBOL_MINUS = 77, /* MINUS */ - YYSYMBOL_ORDER = 78, /* ORDER */ - YYSYMBOL_OVER = 79, /* OVER */ - YYSYMBOL_RANGE = 80, /* RANGE */ - YYSYMBOL_ROWS = 81, /* ROWS */ - YYSYMBOL_OUTER = 82, /* OUTER */ - YYSYMBOL_RIGHT = 83, /* RIGHT */ - YYSYMBOL_TABLE = 84, /* TABLE */ - YYSYMBOL_UNION = 85, /* UNION */ - YYSYMBOL_USING = 86, /* USING */ - YYSYMBOL_WHERE = 87, /* WHERE */ - YYSYMBOL_CALL = 88, /* CALL */ - YYSYMBOL_CASE = 89, /* CASE */ - YYSYMBOL_CHAR = 90, /* CHAR */ - YYSYMBOL_COPY = 91, /* COPY */ - YYSYMBOL_DATE = 92, /* DATE */ - YYSYMBOL_DATETIME = 93, /* DATETIME */ - YYSYMBOL_DESC = 94, /* DESC */ - YYSYMBOL_DROP = 95, /* DROP */ - YYSYMBOL_ELSE = 96, /* ELSE */ - YYSYMBOL_FILE = 97, /* FILE */ - YYSYMBOL_FROM = 98, /* FROM */ - YYSYMBOL_FULL = 99, /* FULL */ - YYSYMBOL_HASH = 100, /* HASH */ - YYSYMBOL_HINT = 101, /* HINT */ - YYSYMBOL_INTO = 102, /* INTO */ - YYSYMBOL_JOIN = 103, /* JOIN */ - YYSYMBOL_LEFT = 104, /* LEFT */ - YYSYMBOL_LIKE = 105, /* LIKE */ - YYSYMBOL_LOAD = 106, /* LOAD */ - YYSYMBOL_LONG = 107, /* LONG */ - YYSYMBOL_NULL = 108, /* NULL */ - YYSYMBOL_PARTITION = 109, /* PARTITION */ - YYSYMBOL_PLAN = 110, /* PLAN */ - YYSYMBOL_SHOW = 111, /* SHOW */ - YYSYMBOL_TEXT = 112, /* TEXT */ - YYSYMBOL_THEN = 113, /* THEN */ - YYSYMBOL_TIME = 114, /* TIME */ - YYSYMBOL_VIEW = 115, /* VIEW */ - YYSYMBOL_WHEN = 116, /* WHEN */ - YYSYMBOL_WITH = 117, /* WITH */ - YYSYMBOL_ADD = 118, /* ADD */ - YYSYMBOL_ALL = 119, /* ALL */ - YYSYMBOL_AND = 120, /* AND */ - YYSYMBOL_ASC = 121, /* ASC */ - YYSYMBOL_END = 122, /* END */ - YYSYMBOL_FOR = 123, /* FOR */ - YYSYMBOL_INT = 124, /* INT */ - YYSYMBOL_KEY = 125, /* KEY */ - YYSYMBOL_NOT = 126, /* NOT */ - YYSYMBOL_OFF = 127, /* OFF */ - YYSYMBOL_SET = 128, /* SET */ - YYSYMBOL_TOP = 129, /* TOP */ - YYSYMBOL_AS = 130, /* AS */ - YYSYMBOL_BY = 131, /* BY */ - YYSYMBOL_IF = 132, /* IF */ - YYSYMBOL_IN = 133, /* IN */ - YYSYMBOL_IS = 134, /* IS */ - YYSYMBOL_OF = 135, /* OF */ - YYSYMBOL_ON = 136, /* ON */ - YYSYMBOL_OR = 137, /* OR */ - YYSYMBOL_TO = 138, /* TO */ - YYSYMBOL_NO = 139, /* NO */ - YYSYMBOL_ARRAY = 140, /* ARRAY */ - YYSYMBOL_CONCAT = 141, /* CONCAT */ - YYSYMBOL_ILIKE = 142, /* ILIKE */ - YYSYMBOL_SECOND = 143, /* SECOND */ - YYSYMBOL_MINUTE = 144, /* MINUTE */ - YYSYMBOL_HOUR = 145, /* HOUR */ - YYSYMBOL_DAY = 146, /* DAY */ - YYSYMBOL_MONTH = 147, /* MONTH */ - YYSYMBOL_YEAR = 148, /* YEAR */ - YYSYMBOL_SECONDS = 149, /* SECONDS */ - YYSYMBOL_MINUTES = 150, /* MINUTES */ - YYSYMBOL_HOURS = 151, /* HOURS */ - YYSYMBOL_DAYS = 152, /* DAYS */ - YYSYMBOL_MONTHS = 153, /* MONTHS */ - YYSYMBOL_YEARS = 154, /* YEARS */ - YYSYMBOL_INTERVAL = 155, /* INTERVAL */ - YYSYMBOL_TRUE = 156, /* TRUE */ - YYSYMBOL_FALSE = 157, /* FALSE */ - YYSYMBOL_BOOLEAN = 158, /* BOOLEAN */ - YYSYMBOL_TRANSACTION = 159, /* TRANSACTION */ - YYSYMBOL_BEGIN = 160, /* BEGIN */ - YYSYMBOL_COMMIT = 161, /* COMMIT */ - YYSYMBOL_ROLLBACK = 162, /* ROLLBACK */ - YYSYMBOL_NOWAIT = 163, /* NOWAIT */ - YYSYMBOL_SKIP = 164, /* SKIP */ - YYSYMBOL_LOCKED = 165, /* LOCKED */ - YYSYMBOL_SHARE = 166, /* SHARE */ - YYSYMBOL_167_ = 167, /* '=' */ - YYSYMBOL_EQUALS = 168, /* EQUALS */ - YYSYMBOL_NOTEQUALS = 169, /* NOTEQUALS */ - YYSYMBOL_170_ = 170, /* '<' */ - YYSYMBOL_171_ = 171, /* '>' */ - YYSYMBOL_LESS = 172, /* LESS */ - YYSYMBOL_GREATER = 173, /* GREATER */ - YYSYMBOL_LESSEQ = 174, /* LESSEQ */ - YYSYMBOL_GREATEREQ = 175, /* GREATEREQ */ - YYSYMBOL_NOTNULL = 176, /* NOTNULL */ - YYSYMBOL_177_ = 177, /* '+' */ - YYSYMBOL_178_ = 178, /* '-' */ - YYSYMBOL_179_ = 179, /* '*' */ - YYSYMBOL_180_ = 180, /* '/' */ - YYSYMBOL_181_ = 181, /* '%' */ - YYSYMBOL_182_ = 182, /* '^' */ - YYSYMBOL_UMINUS = 183, /* UMINUS */ - YYSYMBOL_184_ = 184, /* '[' */ - YYSYMBOL_185_ = 185, /* ']' */ - YYSYMBOL_186_ = 186, /* '(' */ - YYSYMBOL_187_ = 187, /* ')' */ - YYSYMBOL_188_ = 188, /* '.' */ - YYSYMBOL_189_ = 189, /* ';' */ - YYSYMBOL_190_ = 190, /* ',' */ - YYSYMBOL_191_ = 191, /* '?' */ - YYSYMBOL_YYACCEPT = 192, /* $accept */ - YYSYMBOL_input = 193, /* input */ - YYSYMBOL_statement_list = 194, /* statement_list */ - YYSYMBOL_statement = 195, /* statement */ - YYSYMBOL_preparable_statement = 196, /* preparable_statement */ - YYSYMBOL_opt_hints = 197, /* opt_hints */ - YYSYMBOL_hint_list = 198, /* hint_list */ - YYSYMBOL_hint = 199, /* hint */ - YYSYMBOL_transaction_statement = 200, /* transaction_statement */ - YYSYMBOL_opt_transaction_keyword = 201, /* opt_transaction_keyword */ - YYSYMBOL_prepare_statement = 202, /* prepare_statement */ - YYSYMBOL_prepare_target_query = 203, /* prepare_target_query */ - YYSYMBOL_execute_statement = 204, /* execute_statement */ - YYSYMBOL_import_statement = 205, /* import_statement */ - YYSYMBOL_file_type = 206, /* file_type */ - YYSYMBOL_file_path = 207, /* file_path */ - YYSYMBOL_opt_file_type = 208, /* opt_file_type */ - YYSYMBOL_export_statement = 209, /* export_statement */ - YYSYMBOL_show_statement = 210, /* show_statement */ - YYSYMBOL_create_statement = 211, /* create_statement */ - YYSYMBOL_opt_not_exists = 212, /* opt_not_exists */ - YYSYMBOL_table_elem_commalist = 213, /* table_elem_commalist */ - YYSYMBOL_table_elem = 214, /* table_elem */ - YYSYMBOL_column_def = 215, /* column_def */ - YYSYMBOL_column_type = 216, /* column_type */ - YYSYMBOL_opt_time_precision = 217, /* opt_time_precision */ - YYSYMBOL_opt_decimal_specification = 218, /* opt_decimal_specification */ - YYSYMBOL_opt_column_constraints = 219, /* opt_column_constraints */ - YYSYMBOL_column_constraint_set = 220, /* column_constraint_set */ - YYSYMBOL_column_constraint = 221, /* column_constraint */ - YYSYMBOL_table_constraint = 222, /* table_constraint */ - YYSYMBOL_drop_statement = 223, /* drop_statement */ - YYSYMBOL_opt_exists = 224, /* opt_exists */ - YYSYMBOL_alter_statement = 225, /* alter_statement */ - YYSYMBOL_alter_action = 226, /* alter_action */ - YYSYMBOL_drop_action = 227, /* drop_action */ - YYSYMBOL_delete_statement = 228, /* delete_statement */ - YYSYMBOL_truncate_statement = 229, /* truncate_statement */ - YYSYMBOL_insert_statement = 230, /* insert_statement */ - YYSYMBOL_opt_column_list = 231, /* opt_column_list */ - YYSYMBOL_update_statement = 232, /* update_statement */ - YYSYMBOL_update_clause_commalist = 233, /* update_clause_commalist */ - YYSYMBOL_update_clause = 234, /* update_clause */ - YYSYMBOL_select_statement = 235, /* select_statement */ - YYSYMBOL_select_within_set_operation = 236, /* select_within_set_operation */ - YYSYMBOL_select_within_set_operation_no_parentheses = 237, /* select_within_set_operation_no_parentheses */ - YYSYMBOL_select_with_paren = 238, /* select_with_paren */ - YYSYMBOL_select_no_paren = 239, /* select_no_paren */ - YYSYMBOL_set_operator = 240, /* set_operator */ - YYSYMBOL_set_type = 241, /* set_type */ - YYSYMBOL_opt_all = 242, /* opt_all */ - YYSYMBOL_select_clause = 243, /* select_clause */ - YYSYMBOL_opt_distinct = 244, /* opt_distinct */ - YYSYMBOL_select_list = 245, /* select_list */ - YYSYMBOL_opt_from_clause = 246, /* opt_from_clause */ - YYSYMBOL_from_clause = 247, /* from_clause */ - YYSYMBOL_opt_where = 248, /* opt_where */ - YYSYMBOL_opt_group = 249, /* opt_group */ - YYSYMBOL_opt_having = 250, /* opt_having */ - YYSYMBOL_opt_order = 251, /* opt_order */ - YYSYMBOL_order_list = 252, /* order_list */ - YYSYMBOL_order_desc = 253, /* order_desc */ - YYSYMBOL_opt_order_type = 254, /* opt_order_type */ - YYSYMBOL_opt_top = 255, /* opt_top */ - YYSYMBOL_opt_limit = 256, /* opt_limit */ - YYSYMBOL_expr_list = 257, /* expr_list */ - YYSYMBOL_opt_literal_list = 258, /* opt_literal_list */ - YYSYMBOL_literal_list = 259, /* literal_list */ - YYSYMBOL_expr_alias = 260, /* expr_alias */ - YYSYMBOL_expr = 261, /* expr */ - YYSYMBOL_operand = 262, /* operand */ - YYSYMBOL_scalar_expr = 263, /* scalar_expr */ - YYSYMBOL_unary_expr = 264, /* unary_expr */ - YYSYMBOL_binary_expr = 265, /* binary_expr */ - YYSYMBOL_logic_expr = 266, /* logic_expr */ - YYSYMBOL_in_expr = 267, /* in_expr */ - YYSYMBOL_window_expr = 268, /* window_expr */ - YYSYMBOL_opt_partition = 269, /* opt_partition */ - YYSYMBOL_opt_frame_clause = 270, /* opt_frame_clause */ - YYSYMBOL_frame_type = 271, /* frame_type */ - YYSYMBOL_frame_bound = 272, /* frame_bound */ - YYSYMBOL_case_expr = 273, /* case_expr */ - YYSYMBOL_case_list = 274, /* case_list */ - YYSYMBOL_exists_expr = 275, /* exists_expr */ - YYSYMBOL_comp_expr = 276, /* comp_expr */ - YYSYMBOL_function_expr = 277, /* function_expr */ - YYSYMBOL_extract_expr = 278, /* extract_expr */ - YYSYMBOL_cast_expr = 279, /* cast_expr */ - YYSYMBOL_datetime_field = 280, /* datetime_field */ - YYSYMBOL_datetime_field_plural = 281, /* datetime_field_plural */ - YYSYMBOL_duration_field = 282, /* duration_field */ - YYSYMBOL_array_expr = 283, /* array_expr */ - YYSYMBOL_array_index = 284, /* array_index */ - YYSYMBOL_between_expr = 285, /* between_expr */ - YYSYMBOL_column_name = 286, /* column_name */ - YYSYMBOL_literal = 287, /* literal */ - YYSYMBOL_string_literal = 288, /* string_literal */ - YYSYMBOL_bool_literal = 289, /* bool_literal */ - YYSYMBOL_num_literal = 290, /* num_literal */ - YYSYMBOL_int_literal = 291, /* int_literal */ - YYSYMBOL_null_literal = 292, /* null_literal */ - YYSYMBOL_date_literal = 293, /* date_literal */ - YYSYMBOL_interval_literal = 294, /* interval_literal */ - YYSYMBOL_param_expr = 295, /* param_expr */ - YYSYMBOL_table_ref = 296, /* table_ref */ - YYSYMBOL_table_ref_atomic = 297, /* table_ref_atomic */ - YYSYMBOL_nonjoin_table_ref_atomic = 298, /* nonjoin_table_ref_atomic */ - YYSYMBOL_table_ref_commalist = 299, /* table_ref_commalist */ - YYSYMBOL_table_ref_name = 300, /* table_ref_name */ - YYSYMBOL_table_ref_name_no_alias = 301, /* table_ref_name_no_alias */ - YYSYMBOL_table_name = 302, /* table_name */ - YYSYMBOL_opt_index_name = 303, /* opt_index_name */ - YYSYMBOL_table_alias = 304, /* table_alias */ - YYSYMBOL_opt_table_alias = 305, /* opt_table_alias */ - YYSYMBOL_alias = 306, /* alias */ - YYSYMBOL_opt_alias = 307, /* opt_alias */ - YYSYMBOL_opt_locking_clause = 308, /* opt_locking_clause */ - YYSYMBOL_opt_locking_clause_list = 309, /* opt_locking_clause_list */ - YYSYMBOL_locking_clause = 310, /* locking_clause */ - YYSYMBOL_row_lock_mode = 311, /* row_lock_mode */ - YYSYMBOL_opt_row_lock_policy = 312, /* opt_row_lock_policy */ - YYSYMBOL_opt_with_clause = 313, /* opt_with_clause */ - YYSYMBOL_with_clause = 314, /* with_clause */ - YYSYMBOL_with_description_list = 315, /* with_description_list */ - YYSYMBOL_with_description = 316, /* with_description */ - YYSYMBOL_join_clause = 317, /* join_clause */ - YYSYMBOL_opt_join_type = 318, /* opt_join_type */ - YYSYMBOL_join_condition = 319, /* join_condition */ - YYSYMBOL_opt_semicolon = 320, /* opt_semicolon */ - YYSYMBOL_ident_commalist = 321 /* ident_commalist */ + YYSYMBOL_INDEX = 71, /* INDEX */ + YYSYMBOL_INNER = 72, /* INNER */ + YYSYMBOL_LIMIT = 73, /* LIMIT */ + YYSYMBOL_LOCAL = 74, /* LOCAL */ + YYSYMBOL_MERGE = 75, /* MERGE */ + YYSYMBOL_MINUS = 76, /* MINUS */ + YYSYMBOL_ORDER = 77, /* ORDER */ + YYSYMBOL_OVER = 78, /* OVER */ + YYSYMBOL_OUTER = 79, /* OUTER */ + YYSYMBOL_RIGHT = 80, /* RIGHT */ + YYSYMBOL_TABLE = 81, /* TABLE */ + YYSYMBOL_UNION = 82, /* UNION */ + YYSYMBOL_USING = 83, /* USING */ + YYSYMBOL_WHERE = 84, /* WHERE */ + YYSYMBOL_CALL = 85, /* CALL */ + YYSYMBOL_CASE = 86, /* CASE */ + YYSYMBOL_CHAR = 87, /* CHAR */ + YYSYMBOL_COPY = 88, /* COPY */ + YYSYMBOL_DATE = 89, /* DATE */ + YYSYMBOL_DATETIME = 90, /* DATETIME */ + YYSYMBOL_DESC = 91, /* DESC */ + YYSYMBOL_DROP = 92, /* DROP */ + YYSYMBOL_ELSE = 93, /* ELSE */ + YYSYMBOL_FILE = 94, /* FILE */ + YYSYMBOL_FROM = 95, /* FROM */ + YYSYMBOL_FULL = 96, /* FULL */ + YYSYMBOL_HASH = 97, /* HASH */ + YYSYMBOL_HINT = 98, /* HINT */ + YYSYMBOL_INTO = 99, /* INTO */ + YYSYMBOL_JOIN = 100, /* JOIN */ + YYSYMBOL_LEFT = 101, /* LEFT */ + YYSYMBOL_LIKE = 102, /* LIKE */ + YYSYMBOL_LOAD = 103, /* LOAD */ + YYSYMBOL_LONG = 104, /* LONG */ + YYSYMBOL_NULL = 105, /* NULL */ + YYSYMBOL_PARTITION = 106, /* PARTITION */ + YYSYMBOL_PLAN = 107, /* PLAN */ + YYSYMBOL_SHOW = 108, /* SHOW */ + YYSYMBOL_TEXT = 109, /* TEXT */ + YYSYMBOL_THEN = 110, /* THEN */ + YYSYMBOL_TIME = 111, /* TIME */ + YYSYMBOL_VIEW = 112, /* VIEW */ + YYSYMBOL_WHEN = 113, /* WHEN */ + YYSYMBOL_WITH = 114, /* WITH */ + YYSYMBOL_ADD = 115, /* ADD */ + YYSYMBOL_ALL = 116, /* ALL */ + YYSYMBOL_AND = 117, /* AND */ + YYSYMBOL_ASC = 118, /* ASC */ + YYSYMBOL_END = 119, /* END */ + YYSYMBOL_FOR = 120, /* FOR */ + YYSYMBOL_INT = 121, /* INT */ + YYSYMBOL_KEY = 122, /* KEY */ + YYSYMBOL_NOT = 123, /* NOT */ + YYSYMBOL_OFF = 124, /* OFF */ + YYSYMBOL_SET = 125, /* SET */ + YYSYMBOL_TOP = 126, /* TOP */ + YYSYMBOL_AS = 127, /* AS */ + YYSYMBOL_BY = 128, /* BY */ + YYSYMBOL_IF = 129, /* IF */ + YYSYMBOL_IN = 130, /* IN */ + YYSYMBOL_IS = 131, /* IS */ + YYSYMBOL_OF = 132, /* OF */ + YYSYMBOL_ON = 133, /* ON */ + YYSYMBOL_OR = 134, /* OR */ + YYSYMBOL_TO = 135, /* TO */ + YYSYMBOL_NO = 136, /* NO */ + YYSYMBOL_ARRAY = 137, /* ARRAY */ + YYSYMBOL_CONCAT = 138, /* CONCAT */ + YYSYMBOL_ILIKE = 139, /* ILIKE */ + YYSYMBOL_SECOND = 140, /* SECOND */ + YYSYMBOL_MINUTE = 141, /* MINUTE */ + YYSYMBOL_HOUR = 142, /* HOUR */ + YYSYMBOL_DAY = 143, /* DAY */ + YYSYMBOL_MONTH = 144, /* MONTH */ + YYSYMBOL_YEAR = 145, /* YEAR */ + YYSYMBOL_SECONDS = 146, /* SECONDS */ + YYSYMBOL_MINUTES = 147, /* MINUTES */ + YYSYMBOL_HOURS = 148, /* HOURS */ + YYSYMBOL_DAYS = 149, /* DAYS */ + YYSYMBOL_MONTHS = 150, /* MONTHS */ + YYSYMBOL_YEARS = 151, /* YEARS */ + YYSYMBOL_INTERVAL = 152, /* INTERVAL */ + YYSYMBOL_TRUE = 153, /* TRUE */ + YYSYMBOL_FALSE = 154, /* FALSE */ + YYSYMBOL_BOOLEAN = 155, /* BOOLEAN */ + YYSYMBOL_TRANSACTION = 156, /* TRANSACTION */ + YYSYMBOL_BEGIN = 157, /* BEGIN */ + YYSYMBOL_COMMIT = 158, /* COMMIT */ + YYSYMBOL_ROLLBACK = 159, /* ROLLBACK */ + YYSYMBOL_NOWAIT = 160, /* NOWAIT */ + YYSYMBOL_SKIP = 161, /* SKIP */ + YYSYMBOL_LOCKED = 162, /* LOCKED */ + YYSYMBOL_SHARE = 163, /* SHARE */ + YYSYMBOL_RANGE = 164, /* RANGE */ + YYSYMBOL_ROWS = 165, /* ROWS */ + YYSYMBOL_GROUPS = 166, /* GROUPS */ + YYSYMBOL_UNBOUNDED = 167, /* UNBOUNDED */ + YYSYMBOL_FOLLOWING = 168, /* FOLLOWING */ + YYSYMBOL_PRECEDING = 169, /* PRECEDING */ + YYSYMBOL_CURRENT_ROW = 170, /* CURRENT_ROW */ + YYSYMBOL_171_ = 171, /* '=' */ + YYSYMBOL_EQUALS = 172, /* EQUALS */ + YYSYMBOL_NOTEQUALS = 173, /* NOTEQUALS */ + YYSYMBOL_174_ = 174, /* '<' */ + YYSYMBOL_175_ = 175, /* '>' */ + YYSYMBOL_LESS = 176, /* LESS */ + YYSYMBOL_GREATER = 177, /* GREATER */ + YYSYMBOL_LESSEQ = 178, /* LESSEQ */ + YYSYMBOL_GREATEREQ = 179, /* GREATEREQ */ + YYSYMBOL_NOTNULL = 180, /* NOTNULL */ + YYSYMBOL_181_ = 181, /* '+' */ + YYSYMBOL_182_ = 182, /* '-' */ + YYSYMBOL_183_ = 183, /* '*' */ + YYSYMBOL_184_ = 184, /* '/' */ + YYSYMBOL_185_ = 185, /* '%' */ + YYSYMBOL_186_ = 186, /* '^' */ + YYSYMBOL_UMINUS = 187, /* UMINUS */ + YYSYMBOL_188_ = 188, /* '[' */ + YYSYMBOL_189_ = 189, /* ']' */ + YYSYMBOL_190_ = 190, /* '(' */ + YYSYMBOL_191_ = 191, /* ')' */ + YYSYMBOL_192_ = 192, /* '.' */ + YYSYMBOL_193_ = 193, /* ';' */ + YYSYMBOL_194_ = 194, /* ',' */ + YYSYMBOL_195_ = 195, /* '?' */ + YYSYMBOL_YYACCEPT = 196, /* $accept */ + YYSYMBOL_input = 197, /* input */ + YYSYMBOL_statement_list = 198, /* statement_list */ + YYSYMBOL_statement = 199, /* statement */ + YYSYMBOL_preparable_statement = 200, /* preparable_statement */ + YYSYMBOL_opt_hints = 201, /* opt_hints */ + YYSYMBOL_hint_list = 202, /* hint_list */ + YYSYMBOL_hint = 203, /* hint */ + YYSYMBOL_transaction_statement = 204, /* transaction_statement */ + YYSYMBOL_opt_transaction_keyword = 205, /* opt_transaction_keyword */ + YYSYMBOL_prepare_statement = 206, /* prepare_statement */ + YYSYMBOL_prepare_target_query = 207, /* prepare_target_query */ + YYSYMBOL_execute_statement = 208, /* execute_statement */ + YYSYMBOL_import_statement = 209, /* import_statement */ + YYSYMBOL_file_type = 210, /* file_type */ + YYSYMBOL_file_path = 211, /* file_path */ + YYSYMBOL_opt_file_type = 212, /* opt_file_type */ + YYSYMBOL_export_statement = 213, /* export_statement */ + YYSYMBOL_show_statement = 214, /* show_statement */ + YYSYMBOL_create_statement = 215, /* create_statement */ + YYSYMBOL_opt_not_exists = 216, /* opt_not_exists */ + YYSYMBOL_table_elem_commalist = 217, /* table_elem_commalist */ + YYSYMBOL_table_elem = 218, /* table_elem */ + YYSYMBOL_column_def = 219, /* column_def */ + YYSYMBOL_column_type = 220, /* column_type */ + YYSYMBOL_opt_time_precision = 221, /* opt_time_precision */ + YYSYMBOL_opt_decimal_specification = 222, /* opt_decimal_specification */ + YYSYMBOL_opt_column_constraints = 223, /* opt_column_constraints */ + YYSYMBOL_column_constraint_set = 224, /* column_constraint_set */ + YYSYMBOL_column_constraint = 225, /* column_constraint */ + YYSYMBOL_table_constraint = 226, /* table_constraint */ + YYSYMBOL_drop_statement = 227, /* drop_statement */ + YYSYMBOL_opt_exists = 228, /* opt_exists */ + YYSYMBOL_alter_statement = 229, /* alter_statement */ + YYSYMBOL_alter_action = 230, /* alter_action */ + YYSYMBOL_drop_action = 231, /* drop_action */ + YYSYMBOL_delete_statement = 232, /* delete_statement */ + YYSYMBOL_truncate_statement = 233, /* truncate_statement */ + YYSYMBOL_insert_statement = 234, /* insert_statement */ + YYSYMBOL_opt_column_list = 235, /* opt_column_list */ + YYSYMBOL_update_statement = 236, /* update_statement */ + YYSYMBOL_update_clause_commalist = 237, /* update_clause_commalist */ + YYSYMBOL_update_clause = 238, /* update_clause */ + YYSYMBOL_select_statement = 239, /* select_statement */ + YYSYMBOL_select_within_set_operation = 240, /* select_within_set_operation */ + YYSYMBOL_select_within_set_operation_no_parentheses = 241, /* select_within_set_operation_no_parentheses */ + YYSYMBOL_select_with_paren = 242, /* select_with_paren */ + YYSYMBOL_select_no_paren = 243, /* select_no_paren */ + YYSYMBOL_set_operator = 244, /* set_operator */ + YYSYMBOL_set_type = 245, /* set_type */ + YYSYMBOL_opt_all = 246, /* opt_all */ + YYSYMBOL_select_clause = 247, /* select_clause */ + YYSYMBOL_opt_distinct = 248, /* opt_distinct */ + YYSYMBOL_select_list = 249, /* select_list */ + YYSYMBOL_opt_from_clause = 250, /* opt_from_clause */ + YYSYMBOL_from_clause = 251, /* from_clause */ + YYSYMBOL_opt_where = 252, /* opt_where */ + YYSYMBOL_opt_group = 253, /* opt_group */ + YYSYMBOL_opt_having = 254, /* opt_having */ + YYSYMBOL_opt_order = 255, /* opt_order */ + YYSYMBOL_order_list = 256, /* order_list */ + YYSYMBOL_order_desc = 257, /* order_desc */ + YYSYMBOL_opt_order_type = 258, /* opt_order_type */ + YYSYMBOL_opt_top = 259, /* opt_top */ + YYSYMBOL_opt_limit = 260, /* opt_limit */ + YYSYMBOL_expr_list = 261, /* expr_list */ + YYSYMBOL_opt_literal_list = 262, /* opt_literal_list */ + YYSYMBOL_literal_list = 263, /* literal_list */ + YYSYMBOL_expr_alias = 264, /* expr_alias */ + YYSYMBOL_expr = 265, /* expr */ + YYSYMBOL_operand = 266, /* operand */ + YYSYMBOL_scalar_expr = 267, /* scalar_expr */ + YYSYMBOL_unary_expr = 268, /* unary_expr */ + YYSYMBOL_binary_expr = 269, /* binary_expr */ + YYSYMBOL_logic_expr = 270, /* logic_expr */ + YYSYMBOL_in_expr = 271, /* in_expr */ + YYSYMBOL_window_expr = 272, /* window_expr */ + YYSYMBOL_opt_partition = 273, /* opt_partition */ + YYSYMBOL_opt_frame_clause = 274, /* opt_frame_clause */ + YYSYMBOL_frame_type = 275, /* frame_type */ + YYSYMBOL_frame_bound = 276, /* frame_bound */ + YYSYMBOL_case_expr = 277, /* case_expr */ + YYSYMBOL_case_list = 278, /* case_list */ + YYSYMBOL_exists_expr = 279, /* exists_expr */ + YYSYMBOL_comp_expr = 280, /* comp_expr */ + YYSYMBOL_function_expr = 281, /* function_expr */ + YYSYMBOL_extract_expr = 282, /* extract_expr */ + YYSYMBOL_cast_expr = 283, /* cast_expr */ + YYSYMBOL_datetime_field = 284, /* datetime_field */ + YYSYMBOL_datetime_field_plural = 285, /* datetime_field_plural */ + YYSYMBOL_duration_field = 286, /* duration_field */ + YYSYMBOL_array_expr = 287, /* array_expr */ + YYSYMBOL_array_index = 288, /* array_index */ + YYSYMBOL_between_expr = 289, /* between_expr */ + YYSYMBOL_column_name = 290, /* column_name */ + YYSYMBOL_literal = 291, /* literal */ + YYSYMBOL_string_literal = 292, /* string_literal */ + YYSYMBOL_bool_literal = 293, /* bool_literal */ + YYSYMBOL_num_literal = 294, /* num_literal */ + YYSYMBOL_int_literal = 295, /* int_literal */ + YYSYMBOL_null_literal = 296, /* null_literal */ + YYSYMBOL_date_literal = 297, /* date_literal */ + YYSYMBOL_interval_literal = 298, /* interval_literal */ + YYSYMBOL_param_expr = 299, /* param_expr */ + YYSYMBOL_table_ref = 300, /* table_ref */ + YYSYMBOL_table_ref_atomic = 301, /* table_ref_atomic */ + YYSYMBOL_nonjoin_table_ref_atomic = 302, /* nonjoin_table_ref_atomic */ + YYSYMBOL_table_ref_commalist = 303, /* table_ref_commalist */ + YYSYMBOL_table_ref_name = 304, /* table_ref_name */ + YYSYMBOL_table_ref_name_no_alias = 305, /* table_ref_name_no_alias */ + YYSYMBOL_table_name = 306, /* table_name */ + YYSYMBOL_opt_index_name = 307, /* opt_index_name */ + YYSYMBOL_table_alias = 308, /* table_alias */ + YYSYMBOL_opt_table_alias = 309, /* opt_table_alias */ + YYSYMBOL_alias = 310, /* alias */ + YYSYMBOL_opt_alias = 311, /* opt_alias */ + YYSYMBOL_opt_locking_clause = 312, /* opt_locking_clause */ + YYSYMBOL_opt_locking_clause_list = 313, /* opt_locking_clause_list */ + YYSYMBOL_locking_clause = 314, /* locking_clause */ + YYSYMBOL_row_lock_mode = 315, /* row_lock_mode */ + YYSYMBOL_opt_row_lock_policy = 316, /* opt_row_lock_policy */ + YYSYMBOL_opt_with_clause = 317, /* opt_with_clause */ + YYSYMBOL_with_clause = 318, /* with_clause */ + YYSYMBOL_with_description_list = 319, /* with_description_list */ + YYSYMBOL_with_description = 320, /* with_description */ + YYSYMBOL_join_clause = 321, /* join_clause */ + YYSYMBOL_opt_join_type = 322, /* opt_join_type */ + YYSYMBOL_join_condition = 323, /* join_condition */ + YYSYMBOL_opt_semicolon = 324, /* opt_semicolon */ + YYSYMBOL_ident_commalist = 325 /* ident_commalist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -785,19 +789,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 898 +#define YYLAST 887 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 192 +#define YYNTOKENS 196 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 130 /* YYNRULES -- Number of rules. */ -#define YYNRULES 332 +#define YYNRULES 335 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 601 +#define YYNSTATES 604 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 429 +#define YYMAXUTOK 433 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -814,13 +818,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, 181, 2, 2, - 186, 187, 179, 177, 190, 178, 188, 180, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 189, - 170, 167, 171, 191, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 185, 2, 2, + 190, 191, 183, 181, 194, 182, 192, 184, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 193, + 174, 171, 175, 195, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 184, 2, 185, 182, 2, 2, 2, 2, 2, + 2, 188, 2, 189, 186, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -853,47 +857,48 @@ static const yytype_uint8 yytranslate[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 168, 169, 172, 173, 174, 175, 176, 183 + 165, 166, 167, 168, 169, 170, 172, 173, 176, 177, + 178, 179, 180, 187 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 319, 319, 338, 344, 351, 355, 359, 360, 361, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 378, 379, 381, 385, 390, 394, 404, 405, 406, 408, - 408, 414, 420, 422, 426, 437, 443, 451, 466, 471, - 472, 478, 484, 495, 496, 501, 512, 525, 537, 544, - 551, 560, 561, 563, 567, 572, 573, 575, 582, 583, - 584, 585, 586, 587, 588, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 604, 605, 607, 608, - 609, 611, 612, 614, 618, 623, 624, 625, 626, 628, - 629, 637, 643, 649, 655, 661, 662, 669, 675, 677, - 687, 694, 705, 712, 720, 721, 728, 735, 739, 744, - 754, 758, 762, 774, 774, 776, 777, 786, 787, 789, - 803, 815, 820, 824, 828, 833, 834, 836, 846, 847, - 849, 851, 852, 854, 856, 857, 859, 864, 866, 867, - 869, 870, 872, 876, 881, 883, 884, 885, 889, 890, - 892, 893, 894, 895, 896, 897, 902, 906, 911, 912, - 914, 918, 923, 931, 931, 931, 931, 931, 931, 933, - 934, 934, 934, 934, 934, 934, 934, 934, 935, 935, - 939, 939, 941, 942, 943, 944, 945, 947, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 958, 959, - 961, 962, 963, 964, 968, 970, 971, 973, 974, 975, - 977, 978, 979, 985, 1001, 1013, 1014, 1015, 1016, 1018, - 1019, 1021, 1022, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1032, 1033, 1035, 1037, 1039, 1040, 1041, 1042, 1043, 1044, - 1046, 1047, 1048, 1049, 1050, 1051, 1053, 1053, 1055, 1057, - 1059, 1061, 1062, 1063, 1064, 1066, 1066, 1066, 1066, 1066, - 1066, 1066, 1068, 1070, 1071, 1073, 1074, 1076, 1078, 1080, - 1091, 1095, 1106, 1138, 1147, 1147, 1154, 1154, 1156, 1156, - 1163, 1167, 1172, 1180, 1186, 1190, 1195, 1196, 1198, 1198, - 1200, 1200, 1202, 1203, 1205, 1205, 1211, 1212, 1214, 1218, - 1223, 1229, 1236, 1237, 1238, 1239, 1241, 1242, 1243, 1249, - 1249, 1251, 1253, 1257, 1262, 1272, 1279, 1287, 1311, 1312, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1322, 1328, - 1328, 1331, 1335 + 0, 321, 321, 340, 346, 353, 357, 361, 362, 363, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 380, 381, 383, 387, 392, 396, 406, 407, 408, 410, + 410, 416, 422, 424, 428, 439, 445, 453, 468, 473, + 474, 480, 486, 497, 498, 503, 514, 527, 539, 546, + 553, 562, 563, 565, 569, 574, 575, 577, 584, 585, + 586, 587, 588, 589, 590, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 606, 607, 609, 610, + 611, 613, 614, 616, 620, 625, 626, 627, 628, 630, + 631, 639, 645, 651, 657, 663, 664, 671, 677, 679, + 689, 696, 707, 714, 722, 723, 730, 737, 741, 746, + 756, 760, 764, 776, 776, 778, 779, 788, 789, 791, + 805, 817, 822, 826, 830, 835, 836, 838, 848, 849, + 851, 853, 854, 856, 858, 859, 861, 866, 868, 869, + 871, 872, 874, 878, 883, 885, 886, 887, 891, 892, + 894, 895, 896, 897, 898, 899, 904, 908, 913, 914, + 916, 920, 925, 933, 933, 933, 933, 933, 933, 935, + 936, 936, 936, 936, 936, 936, 936, 936, 937, 937, + 941, 941, 943, 944, 945, 946, 947, 949, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 960, 961, + 963, 964, 965, 966, 970, 972, 973, 975, 976, 977, + 979, 980, 981, 983, 984, 985, 986, 987, 992, 993, + 994, 995, 997, 998, 1000, 1001, 1003, 1004, 1005, 1006, + 1007, 1008, 1009, 1011, 1012, 1014, 1016, 1018, 1019, 1020, + 1021, 1022, 1023, 1025, 1026, 1027, 1028, 1029, 1030, 1032, + 1032, 1034, 1036, 1038, 1040, 1041, 1042, 1043, 1045, 1045, + 1045, 1045, 1045, 1045, 1045, 1047, 1049, 1050, 1052, 1053, + 1055, 1057, 1059, 1070, 1074, 1085, 1117, 1126, 1126, 1133, + 1133, 1135, 1135, 1142, 1146, 1151, 1159, 1165, 1169, 1174, + 1175, 1177, 1177, 1179, 1179, 1181, 1182, 1184, 1184, 1190, + 1191, 1193, 1197, 1202, 1208, 1215, 1216, 1217, 1218, 1220, + 1221, 1222, 1228, 1228, 1230, 1232, 1236, 1241, 1251, 1258, + 1266, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, + 1299, 1301, 1307, 1307, 1310, 1314 }; #endif @@ -920,29 +925,29 @@ static const char *const yytname[] = "EXTRACT", "CAST", "FORMAT", "GLOBAL", "HAVING", "IMPORT", "INSERT", "ISNULL", "OFFSET", "RENAME", "SCHEMA", "SELECT", "SORTED", "TABLES", "UNIQUE", "UNLOAD", "UPDATE", "VALUES", "AFTER", "ALTER", "CROSS", - "DELTA", "FLOAT", "GROUP", "GROUPS", "INDEX", "INNER", "LIMIT", "LOCAL", - "MERGE", "MINUS", "ORDER", "OVER", "RANGE", "ROWS", "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", - "PARTITION", "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", "NO", "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", - "DAY", "MONTH", "YEAR", "SECONDS", "MINUTES", "HOURS", "DAYS", "MONTHS", - "YEARS", "INTERVAL", "TRUE", "FALSE", "BOOLEAN", "TRANSACTION", "BEGIN", - "COMMIT", "ROLLBACK", "NOWAIT", "SKIP", "LOCKED", "SHARE", "'='", - "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", - "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", - "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'?'", - "$accept", "input", "statement_list", "statement", - "preparable_statement", "opt_hints", "hint_list", "hint", - "transaction_statement", "opt_transaction_keyword", "prepare_statement", - "prepare_target_query", "execute_statement", "import_statement", - "file_type", "file_path", "opt_file_type", "export_statement", - "show_statement", "create_statement", "opt_not_exists", - "table_elem_commalist", "table_elem", "column_def", "column_type", - "opt_time_precision", "opt_decimal_specification", + "DELTA", "FLOAT", "GROUP", "INDEX", "INNER", "LIMIT", "LOCAL", "MERGE", + "MINUS", "ORDER", "OVER", "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", "PARTITION", "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", "NO", "ARRAY", "CONCAT", + "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", "YEAR", "SECONDS", + "MINUTES", "HOURS", "DAYS", "MONTHS", "YEARS", "INTERVAL", "TRUE", + "FALSE", "BOOLEAN", "TRANSACTION", "BEGIN", "COMMIT", "ROLLBACK", + "NOWAIT", "SKIP", "LOCKED", "SHARE", "RANGE", "ROWS", "GROUPS", + "UNBOUNDED", "FOLLOWING", "PRECEDING", "CURRENT_ROW", "'='", "EQUALS", + "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", "GREATEREQ", + "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", + "']'", "'('", "')'", "'.'", "';'", "','", "'?'", "$accept", "input", + "statement_list", "statement", "preparable_statement", "opt_hints", + "hint_list", "hint", "transaction_statement", "opt_transaction_keyword", + "prepare_statement", "prepare_target_query", "execute_statement", + "import_statement", "file_type", "file_path", "opt_file_type", + "export_statement", "show_statement", "create_statement", + "opt_not_exists", "table_elem_commalist", "table_elem", "column_def", + "column_type", "opt_time_precision", "opt_decimal_specification", "opt_column_constraints", "column_constraint_set", "column_constraint", "table_constraint", "drop_statement", "opt_exists", "alter_statement", "alter_action", "drop_action", "delete_statement", "truncate_statement", @@ -980,12 +985,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-464) +#define YYPACT_NINF (-512) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-330) +#define YYTABLE_NINF (-333) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -994,67 +999,67 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 629, 35, 54, 101, 105, 54, -16, -52, 30, 57, - 54, 68, 11, 196, 23, 170, 25, 25, 25, 203, - 67, -464, 93, -464, 93, -464, -464, -464, -464, -464, - -464, -464, -464, -464, -464, -464, -464, -26, -464, 230, - 104, -464, 116, 222, -464, 184, 184, 184, 54, 321, - 54, 200, -464, 190, -26, 208, -32, 190, 190, 190, - 54, -464, 217, 158, -464, -464, -464, -464, -464, -464, - 624, -464, 251, -464, -464, 236, 138, -464, 176, -464, - 357, 71, 382, 261, 389, 54, 54, 311, -464, 302, - 223, 408, 369, 54, 241, 242, 413, 413, 413, 428, - 54, 54, -464, 247, 170, -464, 248, 429, 425, -464, - -464, -464, -26, 320, 310, -26, -11, -464, -464, -464, - -464, 438, -464, 439, -464, -464, -464, 257, 255, -464, - -464, -464, -464, 386, -464, -464, -464, -464, -464, -464, - 400, -464, 314, -59, 223, 366, -464, 413, 449, 249, - 284, -49, -464, -464, 359, -464, -464, 339, -464, 339, - 339, -464, -464, -464, -464, -464, 454, -464, -464, 366, - 381, -464, -464, 138, -464, -464, 366, 381, 366, 85, - 338, -464, 231, -464, 71, -464, -464, -464, -464, -464, - -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, - -464, 54, 463, 352, 76, 342, 34, 287, 290, 291, - 211, 416, 295, 420, -464, 292, 58, 448, -464, -464, - -464, -464, -464, -464, -464, -464, -464, -464, -464, -464, - -464, -464, -464, -464, -464, 373, -464, 127, 294, -464, - 366, 408, -464, 442, -464, -464, 433, -464, 311, -464, - 299, 166, -464, 388, 297, -464, 50, -11, -26, 301, - -464, 149, -11, 58, 440, 18, 9, -464, 338, -464, - -464, -464, 318, 387, -464, 669, 363, 324, 167, -464, - -464, -464, 352, 15, 19, 453, 231, 366, 366, 169, - 60, 327, 420, 662, 366, 10, 328, 44, 366, 366, - 420, -464, 330, 420, 53, 331, 147, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 429, 54, -464, 504, 71, 58, -464, 190, - 321, -464, 71, -464, 454, 21, 311, -464, 366, -464, - 511, -464, -464, -464, -464, 366, -464, -464, -464, 338, - 366, 366, -464, 353, 393, -464, 83, -464, 449, 413, - -464, -464, 334, -464, 340, -464, -464, 355, -464, -464, - 361, -464, -464, -464, -464, 362, -464, -464, 31, 364, - 449, -464, 76, -464, -464, 366, -464, -464, 356, 427, - 130, -39, 113, 366, 366, -464, 453, 444, -136, -464, - -464, -464, 431, 631, 445, 714, 420, 372, 292, -464, - 447, 375, 714, 714, 714, 714, 319, 319, 319, 319, - 10, 10, 55, 55, 55, -77, 376, -464, -464, 172, - 559, -464, 174, -464, 352, -464, 62, -464, 374, -464, - 37, -464, 493, -464, -464, -464, -464, 58, 58, -464, - 502, 449, -464, 401, -464, 193, -464, 561, 562, -464, - 563, 564, 572, -464, 455, -464, -464, 471, -464, 31, - -464, 449, 195, -464, 204, -464, 366, 669, 366, 366, - -464, -75, 99, 396, -464, 420, 456, 381, 714, 292, - 397, 206, -464, -464, -464, -464, -464, 398, 483, -464, - -464, -464, 506, 509, 510, 490, 21, 593, -464, -464, - -464, 466, -464, -464, -112, -464, -464, 414, 214, 417, - 418, 421, -464, -464, -464, 216, -464, -464, 51, 422, - 58, 168, -464, 366, -464, 662, 366, 194, 423, 218, - -464, -464, 37, 21, -464, -464, -464, 21, 226, 426, - 366, -464, -464, -464, 594, -464, -464, -464, -464, -464, - -464, -464, 58, 297, -464, -464, -464, 434, 298, -464, - -464, -464, -464, 259, 449, -21, 446, -464, 600, 610, - 404, -464, 451, 366, 240, 366, -464, -464, -464, -464, - 494, 20, 58, -464, -464, 58, 404, 432, 458, -464, - -464 + 457, 51, 76, 88, 103, 76, 146, -50, 9, 127, + 76, 75, 19, 148, 27, 105, -10, -10, -10, 251, + 104, -512, 191, -512, 191, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -32, -512, 311, + 124, -512, 135, 259, -512, 231, 231, 231, 76, 359, + 76, 242, -512, 237, -32, 238, -37, 237, 237, 237, + 76, -512, 247, 193, -512, -512, -512, -512, -512, -512, + 618, -512, 292, -512, -512, 269, 47, -512, 54, -512, + 410, 36, 412, 294, 416, 76, 76, 336, -512, 331, + 236, 424, 383, 76, 243, 244, 434, 434, 434, 437, + 76, 76, -512, 253, 105, -512, 254, 439, 435, -512, + -512, -512, -32, 330, 320, -32, 118, -512, -512, -512, + -512, 448, -512, 449, -512, -512, -512, 263, 262, -512, + -512, -512, -512, 736, -512, -512, -512, -512, -512, -512, + 414, -512, 328, -43, 236, 332, -512, 434, 459, 134, + 295, -55, -512, -512, 371, -512, -512, 351, -512, 351, + 351, -512, -512, -512, -512, -512, 465, -512, -512, 332, + 390, -512, -512, 47, -512, -512, 332, 390, 332, 166, + 350, -512, 241, -512, 36, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, 76, 468, 362, 46, 346, -126, 287, 288, 290, + 175, 403, 302, 427, -512, 305, 139, 464, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, 394, -512, -34, 306, -512, + 332, 424, -512, 443, -512, -512, 450, -512, 336, -512, + 312, 101, -512, 406, 309, -512, 50, 118, -32, 310, + -512, 129, 118, 139, 451, 42, 12, -512, 350, -512, + -512, -512, 315, 413, -512, 658, 389, 322, 102, -512, + -512, -512, 362, 16, 11, 461, 241, 332, 332, 152, + 157, 327, 427, 649, 332, 116, 333, -63, 332, 332, + 427, -512, 335, 427, -47, 338, 80, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 439, 76, -512, 518, 36, 139, -512, 237, + 359, -512, 36, -512, 465, 20, 336, -512, 332, -512, + 526, -512, -512, -512, -512, 332, -512, -512, -512, 350, + 332, 332, -512, 367, 409, -512, 107, -512, 459, 434, + -512, -512, 343, -512, 344, -512, -512, 345, -512, -512, + 347, -512, -512, -512, -512, 348, -512, -512, 113, 349, + 459, -512, 46, -512, -512, 332, -512, -512, 352, 441, + 108, 173, 213, 332, 332, -512, 461, 442, -113, -512, + -512, -512, 429, 611, 445, 669, 427, 357, 305, -512, + 436, 360, 669, 669, 669, 669, 687, 687, 687, 687, + 116, 116, 57, 57, 57, -5, 363, -512, -512, 156, + 550, -512, 177, -512, 362, -512, 65, -512, 364, -512, + 24, -512, 484, -512, -512, -512, -512, 139, 139, -512, + 496, 459, -512, 398, -512, 181, -512, 555, 556, -512, + 557, 561, 562, -512, 447, -512, -512, 467, -512, 113, + -512, 459, 198, -512, 205, -512, 332, 658, 332, 332, + -512, 196, 207, 379, -512, 427, 446, 390, 669, 305, + 382, 209, -512, -512, -512, -512, -512, 384, 476, -512, + -512, -512, 498, 499, 503, 483, 20, 581, -512, -512, + -512, 460, -512, -512, 3, -512, -512, 399, 210, 400, + 401, 405, -512, -512, -512, 211, -512, -512, -56, 408, + 139, 225, -512, 332, -512, 649, 332, 258, 415, 220, + -512, -512, 24, 20, -512, -512, -512, 20, 297, 407, + 332, -512, -512, -512, 583, -512, -512, -512, -512, -512, + -512, -512, 139, 309, -512, -512, -512, 417, 26, -512, + -512, -512, -512, 161, 459, -26, 420, -512, 69, 32, + 106, -512, -512, 411, 332, 221, 332, -512, -512, -512, + -512, 487, -512, -512, 21, 139, -512, -512, 139, 32, + 421, 428, -512, -512 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1062,85 +1067,85 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 0, - 330, 3, 21, 19, 21, 18, 8, 9, 7, 11, - 16, 17, 13, 14, 12, 15, 10, 0, 309, 0, - 284, 101, 33, 0, 45, 52, 52, 52, 0, 0, - 0, 0, 283, 96, 0, 0, 0, 96, 96, 96, - 0, 43, 0, 311, 312, 29, 26, 28, 27, 1, - 310, 2, 0, 6, 5, 149, 110, 111, 141, 93, - 0, 159, 0, 0, 287, 0, 0, 135, 37, 0, + 333, 3, 21, 19, 21, 18, 8, 9, 7, 11, + 16, 17, 13, 14, 12, 15, 10, 0, 312, 0, + 287, 101, 33, 0, 45, 52, 52, 52, 0, 0, + 0, 0, 286, 96, 0, 0, 0, 96, 96, 96, + 0, 43, 0, 314, 315, 29, 26, 28, 27, 1, + 313, 2, 0, 6, 5, 149, 110, 111, 141, 93, + 0, 159, 0, 0, 290, 0, 0, 135, 37, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 4, 0, 0, 129, 123, - 124, 122, 0, 126, 0, 0, 155, 285, 262, 265, - 267, 0, 268, 0, 263, 264, 273, 0, 158, 160, - 255, 256, 257, 266, 258, 259, 260, 261, 32, 31, - 0, 286, 0, 0, 105, 0, 100, 0, 0, 0, + 124, 122, 0, 126, 0, 0, 155, 288, 265, 268, + 270, 0, 271, 0, 266, 267, 276, 0, 158, 160, + 258, 259, 260, 269, 261, 262, 263, 264, 32, 31, + 0, 289, 0, 0, 105, 0, 100, 0, 0, 0, 0, 135, 107, 95, 0, 118, 117, 40, 38, 40, - 40, 94, 91, 92, 314, 313, 0, 148, 128, 0, + 40, 94, 91, 92, 317, 316, 0, 148, 128, 0, 141, 114, 113, 115, 125, 121, 0, 141, 0, 0, - 297, 269, 272, 34, 0, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 270, - 51, 0, 0, 310, 0, 0, 251, 0, 0, 0, - 0, 0, 0, 0, 253, 0, 134, 163, 171, 172, + 300, 272, 275, 34, 0, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 273, + 51, 0, 0, 313, 0, 0, 254, 0, 0, 0, + 0, 0, 0, 0, 256, 0, 134, 163, 171, 172, 173, 165, 167, 168, 174, 166, 187, 175, 176, 177, - 178, 170, 164, 180, 181, 0, 331, 0, 0, 103, + 178, 170, 164, 180, 181, 0, 334, 0, 0, 103, 0, 0, 106, 0, 97, 98, 0, 42, 135, 41, - 24, 0, 22, 132, 130, 156, 295, 155, 0, 140, - 142, 147, 155, 151, 153, 150, 0, 119, 296, 298, - 271, 161, 0, 0, 48, 0, 0, 0, 0, 53, - 55, 56, 310, 129, 0, 0, 0, 0, 0, 0, + 24, 0, 22, 132, 130, 156, 298, 155, 0, 140, + 142, 147, 155, 151, 153, 150, 0, 119, 299, 301, + 274, 161, 0, 0, 48, 0, 0, 0, 0, 53, + 55, 56, 313, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 182, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 109, 108, 96, - 0, 36, 0, 20, 0, 0, 135, 131, 0, 293, - 0, 294, 162, 112, 116, 0, 146, 145, 144, 297, - 0, 0, 302, 0, 0, 304, 308, 299, 0, 0, + 0, 36, 0, 20, 0, 0, 135, 131, 0, 296, + 0, 297, 162, 112, 116, 0, 146, 145, 144, 300, + 0, 0, 305, 0, 0, 307, 311, 302, 0, 0, 74, 68, 0, 70, 80, 71, 58, 0, 65, 66, 0, 62, 63, 69, 72, 77, 67, 59, 82, 0, - 0, 47, 0, 50, 230, 0, 252, 254, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 0, 0, 179, + 0, 47, 0, 50, 233, 0, 255, 257, 0, 0, + 0, 0, 0, 0, 0, 220, 0, 0, 0, 179, 169, 198, 199, 0, 206, 194, 0, 0, 0, 185, - 0, 197, 196, 223, 224, 225, 226, 227, 228, 229, - 189, 188, 191, 190, 192, 193, 0, 35, 332, 0, - 0, 39, 0, 23, 310, 133, 274, 276, 0, 278, - 291, 277, 137, 157, 292, 143, 120, 154, 152, 305, - 0, 0, 307, 0, 300, 0, 46, 0, 0, 64, + 0, 197, 196, 226, 227, 228, 229, 230, 231, 232, + 189, 188, 191, 190, 192, 193, 0, 35, 335, 0, + 0, 39, 0, 23, 313, 133, 277, 279, 0, 281, + 294, 280, 137, 157, 295, 143, 120, 154, 152, 308, + 0, 0, 310, 0, 303, 0, 46, 0, 0, 64, 0, 0, 0, 73, 0, 86, 87, 0, 57, 81, - 83, 0, 0, 54, 0, 221, 0, 0, 0, 0, - 215, 0, 0, 0, 248, 0, 0, 141, 195, 0, - 0, 0, 186, 249, 102, 99, 25, 0, 0, 326, - 318, 324, 322, 325, 320, 0, 0, 0, 290, 282, - 288, 0, 127, 303, 308, 306, 49, 0, 0, 0, - 0, 0, 85, 88, 84, 0, 90, 231, 0, 0, - 219, 0, 218, 0, 222, 250, 0, 209, 0, 0, - 202, 200, 291, 0, 321, 323, 319, 0, 275, 292, - 0, 301, 61, 79, 0, 75, 60, 76, 89, 232, - 233, 216, 220, 205, 212, 210, 211, 0, 0, 203, - 201, 279, 315, 327, 0, 139, 0, 204, 0, 0, - 0, 207, 0, 0, 0, 0, 136, 78, 214, 213, - 0, 0, 328, 316, 289, 138, 0, 251, 0, 208, - 317 + 83, 0, 0, 54, 0, 224, 0, 0, 0, 0, + 218, 0, 0, 0, 251, 0, 0, 141, 195, 0, + 0, 0, 186, 252, 102, 99, 25, 0, 0, 329, + 321, 327, 325, 328, 323, 0, 0, 0, 293, 285, + 291, 0, 127, 306, 311, 309, 49, 0, 0, 0, + 0, 0, 85, 88, 84, 0, 90, 234, 0, 0, + 222, 0, 221, 0, 225, 253, 0, 209, 0, 0, + 202, 200, 294, 0, 324, 326, 322, 0, 278, 295, + 0, 304, 61, 79, 0, 75, 60, 76, 89, 235, + 236, 219, 223, 205, 210, 211, 212, 0, 0, 203, + 201, 282, 318, 330, 0, 139, 0, 204, 0, 0, + 0, 217, 207, 0, 0, 0, 0, 136, 78, 216, + 214, 0, 215, 213, 0, 331, 319, 292, 138, 0, + 254, 0, 208, 320 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -464, -464, -464, 565, -464, 614, -464, 300, -464, 227, - -464, -464, -464, -464, 312, -78, 123, -464, -464, -464, - 289, -464, 258, -464, 164, -464, -464, -464, -464, 178, - -464, -464, -51, -464, -464, -464, -464, -464, -464, 499, - -464, -464, 407, -200, -90, -464, 43, -53, -37, -464, - -464, -86, 370, -464, -464, -464, -123, -464, -464, -166, - -464, 304, -464, -464, 87, -259, -464, -14, 316, -145, - -198, -464, -464, -464, -464, -464, -464, -464, -464, -464, - -286, -464, 367, -464, -464, -464, -464, -464, -146, -464, - -464, -464, -464, -464, 61, -60, -80, -464, -464, -98, - -464, -464, -464, -464, -464, -463, 114, -464, -464, -464, - 0, -464, -464, 117, 402, -464, 313, -464, 392, -464, - 153, -464, -464, -464, 567, -464, -464, -464, -464, -321 + -512, -512, -512, 530, -512, 588, -512, 271, -512, 267, + -512, -512, -512, -512, 277, -78, 180, -512, -512, -512, + 299, -512, 239, -512, 143, -512, -512, -512, -512, 154, + -512, -512, -51, -512, -512, -512, -512, -512, -512, 480, + -512, -512, 385, -200, -71, -512, 35, -53, -21, -512, + -512, -76, 358, -512, -512, -512, -121, -512, -512, -166, + -512, 282, -512, -512, -46, -259, -512, -252, 291, -145, + -198, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -511, -512, 339, -512, -512, -512, -512, -512, -131, -512, + -512, -512, -512, -512, 37, -60, -80, -512, -512, -98, + -512, -512, -512, -512, -512, -444, 87, -512, -512, -512, + 0, -512, -512, 90, 378, -512, 304, -512, 386, -512, + 137, -512, -512, -512, 552, -512, -512, -512, -512, -321 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1151,14 +1156,14 @@ static const yytype_int16 yydefgoto[] = 84, 278, 279, 280, 378, 463, 459, 468, 469, 470, 281, 30, 93, 31, 244, 245, 32, 33, 34, 149, 35, 151, 152, 36, 170, 171, 172, 77, 112, 113, - 175, 78, 169, 253, 336, 337, 146, 512, 586, 116, + 175, 78, 169, 253, 336, 337, 146, 512, 587, 116, 259, 260, 348, 108, 180, 254, 127, 128, 255, 256, 217, 218, 219, 220, 221, 222, 223, 487, 567, 568, - 581, 224, 290, 225, 226, 227, 228, 229, 197, 198, + 582, 224, 290, 225, 226, 227, 228, 229, 197, 198, 199, 230, 231, 232, 233, 234, 130, 131, 132, 133, 134, 135, 136, 137, 435, 436, 437, 438, 439, 51, 440, 142, 508, 509, 510, 342, 267, 268, 269, 356, - 454, 37, 38, 63, 64, 441, 505, 593, 71, 237 + 454, 37, 38, 63, 64, 441, 505, 596, 71, 237 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1167,189 +1172,187 @@ static const yytype_int16 yydefgoto[] = static const yytype_int16 yytable[] = { 216, 95, 41, 274, 257, 44, 99, 100, 101, 167, - 52, 262, 56, 293, 40, 295, 158, 158, 158, 159, - 160, 129, 386, 597, 40, 177, 173, 168, 242, 173, - 585, 261, 75, 263, 265, 398, 270, 455, 145, 202, - 339, 115, 60, 548, 178, 298, 48, 532, 87, 484, - 90, 452, 453, 339, 338, 55, 45, 40, 464, 472, - 102, 39, 299, 179, 307, 289, 97, 158, 46, 235, - 297, 203, 352, 351, 478, 118, 119, 120, 325, 275, - 76, 298, 383, 61, 573, 143, 144, 498, 206, 118, - 119, 120, 465, 154, 293, 327, 239, 94, 299, 47, - 162, 163, 403, 276, 42, 405, 98, 322, 43, 411, + 52, 262, 56, 293, 386, 295, 158, 158, 158, 159, + 160, 129, 40, 40, 600, 586, 75, 339, 168, 145, + 242, 261, 578, 263, 265, 398, 173, 455, 578, 173, + 118, 119, 120, 579, 177, 48, 60, 55, 87, 275, + 90, 270, 202, 339, 298, 406, 109, 115, 97, 472, + 102, 298, 548, 109, 283, 289, 284, 158, 591, 235, + 297, 299, 76, 276, 429, 352, 484, 39, 299, 40, + 432, 338, 383, 407, 203, 143, 144, 61, 602, 94, + 498, 42, 110, 154, 293, 327, 239, 351, 98, 110, + 162, 163, 403, 573, 49, 405, 43, 277, 62, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 271, 331, 474, 204, 49, 499, - 514, 207, 208, 209, 353, 500, 258, 277, 298, 466, - 389, 241, 390, 391, 501, 502, 164, 109, 354, 491, - 525, 307, 53, 401, 402, 299, 393, 467, 406, 50, - 54, 503, 296, 121, 298, -327, 504, 507, 344, 338, - 298, 298, 173, 62, 210, 355, 394, 121, 298, 122, - 340, 299, 395, 110, 65, 109, 407, 299, 299, 318, - 319, 320, 321, 122, 322, 299, 307, 54, 387, 214, - 261, 272, 384, 69, 264, 447, 448, 434, 488, 479, - 72, 211, 533, 442, 206, 118, 119, 120, 451, 298, - 283, 110, 284, 111, 426, 212, 123, 124, 125, 394, - 539, 400, 388, 79, 497, 480, 299, 321, 559, 322, - 123, 124, 125, 346, 67, 68, 452, 453, 481, 482, - 298, 498, -280, 584, 114, 409, 70, 207, 208, 209, - 477, 111, 126, 213, 214, 564, 129, 299, 57, 298, - 347, 215, 129, 410, 565, 566, 126, 563, 430, 158, - 58, 456, 248, 249, 498, 288, 299, 535, 298, 298, - 561, 575, 80, 499, 590, 206, 118, 119, 120, 500, - 210, 578, 81, 121, 579, 299, 299, 75, 501, 502, - 599, 59, 429, 238, 324, 580, 83, 325, 432, 122, - 82, 537, 92, 427, 88, 503, 499, 288, 91, -327, - 504, 528, 500, 530, 531, 85, 86, 211, 207, 208, - 209, 501, 502, 483, 343, 582, 96, 103, 104, 349, - 75, 212, 106, 333, 381, 490, 334, 382, 503, 494, - 117, 496, 184, 504, 184, 107, 123, 124, 125, 206, - 118, 119, 120, 301, 185, 186, 187, 188, 189, 190, - 516, 210, 526, 325, 121, 325, 138, 140, 562, 213, - 214, 527, 141, 541, 338, 583, 338, 215, 145, 147, - 122, 553, 126, 558, 554, 570, 325, 578, 338, 148, - 579, 150, 207, 208, 209, 153, -281, 118, 211, 206, - 118, 119, 120, 206, 118, 119, 120, 594, 155, 156, - 325, 161, 212, 54, 166, 120, 538, 168, 592, 174, - 595, 176, 181, 182, 183, 184, 200, 123, 124, 125, - 201, 240, 236, 306, 243, 210, 246, 250, 121, 114, - 307, 266, 291, 208, 209, 300, 273, 208, 209, 15, - 213, 214, 282, 285, 122, 323, 286, 287, 215, 294, - 326, 329, 330, 126, 359, 332, 335, 338, 379, -330, - -330, 345, 211, -330, -330, 350, 316, 317, 318, 319, - 320, 321, 301, 322, 358, 210, 212, 428, 121, 210, - 380, 75, 121, 396, 444, 399, 404, 408, 450, 449, - 457, 123, 124, 125, 122, 476, 458, 302, 122, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 460, 292, 475, 213, 214, 292, 461, 462, 406, - 471, 298, 215, 303, 486, 492, 212, 126, 489, 322, - 212, 493, 495, 511, 506, 513, 515, 517, 518, 519, - 520, 123, 124, 125, 304, 123, 124, 125, 521, 523, - 522, 305, 306, 534, 540, 542, 543, 536, 544, 307, - 308, 545, 546, 547, 213, 214, 549, 550, 213, 214, - 576, 552, 215, 588, 555, 556, 215, 126, 557, 560, - 569, 126, 574, 589, 596, 309, 310, 311, 312, 313, - 284, 577, 314, 315, -329, 316, 317, 318, 319, 320, - 321, 1, 322, 587, 433, 105, 1, 591, 74, 2, - 473, 529, 431, 205, 2, 600, 3, 524, 328, 445, - 4, 3, 598, 385, 443, 4, 392, 572, 341, 571, - 357, 5, 446, 0, 6, 7, 5, 551, 0, 6, - 7, 165, 0, 0, 0, 0, 8, 9, 0, 0, - 360, 8, 9, 0, 0, 301, 0, 10, 0, 0, - 11, 0, 10, 361, 0, 11, 0, 0, 362, 363, - 364, 365, 366, 0, 367, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 0, 12, 301, 0, 0, 13, - 12, 0, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 303, 0, 369, 0, - 14, 15, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 485, 0, 0, 0, 0, 0, 397, 0, 370, - 0, 371, 372, 0, 0, 306, 0, 303, 301, 0, - 0, 0, 307, 308, 0, 0, 373, 0, 0, 0, - 0, 374, 0, 375, 16, 17, 18, 0, 397, 16, - 17, 18, 0, 376, 0, 0, 306, 0, 309, 310, - 311, 312, 313, 307, 308, 314, 315, 0, 316, 317, - 318, 319, 320, 321, 0, 322, 0, 0, 0, -330, - 0, 0, 0, 0, 0, 0, 0, 377, 0, 309, - 310, 311, 312, 313, 0, 0, 314, 315, 0, 316, - 317, 318, 319, 320, 321, 0, 322, 0, 306, 0, - 0, 0, 0, 0, 0, 307, -330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -330, -330, -330, 312, 313, 0, 0, 314, 315, - 0, 316, 317, 318, 319, 320, 321, 0, 322 + 422, 423, 424, 425, 271, 121, 474, 331, 400, 111, + 514, 114, 499, 307, 353, 559, 111, 500, 164, 241, + 464, 122, 390, 391, 501, 502, 65, 204, 354, 491, + 525, 507, 258, 401, 402, 389, 53, 324, 54, 298, + 325, 503, 296, 452, 453, -330, 504, 298, 338, 206, + 118, 119, 120, 178, 465, 355, 299, 340, 206, 118, + 119, 120, 173, 322, 299, 409, 498, 344, 123, 124, + 125, 179, 75, 580, 387, 307, 581, 325, 238, 580, + 261, 272, 581, 410, 214, 447, 448, 384, 488, 54, + 434, 343, 207, 208, 209, 442, 349, 45, 466, 57, + 346, 207, 208, 209, 426, 298, 50, 46, 499, 58, + 539, 126, 388, 500, 497, 477, 467, 589, 590, 451, + 501, 502, 299, 321, 583, 322, 298, 347, 481, 482, + 393, 69, 210, 585, 307, 121, 298, 503, 47, -283, + 59, 210, 504, 299, 121, 288, 129, 452, 453, 298, + 394, 122, 129, 299, 592, 593, 395, 563, 430, 158, + 122, 456, 264, 478, 67, 68, 299, 535, 288, 211, + 298, 575, 333, 381, 584, 334, 382, 70, 211, 318, + 319, 320, 321, 212, 322, 72, 479, 299, 206, 118, + 119, 120, 212, 298, 79, 532, 80, 533, 123, 124, + 125, 537, 498, 427, 298, 81, 394, 123, 124, 125, + 299, 528, 480, 530, 531, 206, 118, 119, 120, 248, + 249, 299, 298, 483, 561, 85, 86, 494, 213, 214, + 184, 207, 208, 209, 82, 490, 215, 213, 214, 299, + 83, 126, 88, 75, 499, 215, 92, 91, 496, 500, + 126, 184, 516, 96, 103, 325, 501, 502, 207, 208, + 209, 185, 186, 187, 188, 189, 190, 104, 562, 526, + 106, 210, 325, 503, 121, 107, 527, -330, 504, 338, + 541, 553, 558, 338, 554, 325, 206, 118, 119, 120, + 122, 570, 597, 117, 338, 325, 138, 140, 210, 141, + 145, 121, 564, 565, 566, 147, 148, 150, 211, 153, + 206, 118, 119, 120, 155, 156, 538, 122, 118, 595, + 161, 598, 212, 54, 166, 120, 174, 168, 176, 291, + 208, 209, 181, 182, 183, 211, 184, 123, 124, 125, + 200, 201, 236, 243, 1, 246, 240, 114, 250, 212, + 266, 273, 2, 282, 208, 209, 15, 285, 286, 3, + 287, 300, 329, 4, 123, 124, 125, 213, 214, 210, + 294, -284, 121, 323, 5, 215, 326, 6, 7, 330, + 126, 335, 332, 338, 345, 358, 350, 359, 122, 8, + 9, 379, 380, 210, 213, 214, 121, 396, 301, 75, + 10, 428, 215, 11, 399, 404, 292, 126, 408, 444, + 449, 450, 122, 457, 458, 460, 476, 461, 462, 471, + 212, 492, 302, 475, 406, 12, 298, 489, 322, 13, + 292, 486, 493, 495, 511, 123, 124, 125, 506, 513, + 515, 517, 518, 519, 212, 14, 303, 520, 521, 522, + 534, 15, 523, 540, 536, 542, 543, 544, 545, 123, + 124, 125, 546, 547, 549, 213, 214, 304, 550, 576, + 552, 555, 556, 215, 305, 306, 557, 574, 126, 560, + 105, 594, 307, 308, 599, 433, 569, 431, 577, 213, + 214, 588, 74, 284, 16, 17, 18, 215, -332, 603, + 529, 473, 126, 524, 205, 1, 328, 445, 392, 443, + 572, 601, 571, 2, 341, 309, 310, 311, 312, 313, + 3, 385, 314, 315, 4, 316, 317, 318, 319, 320, + 321, 551, 322, 446, 357, 5, 165, 0, 6, 7, + 0, 0, 0, 0, 0, 301, 0, 0, 0, 360, + 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 10, 361, 0, 11, 0, 0, 362, 363, 364, + 365, 366, 0, 367, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 301, 0, 0, 12, 0, 0, 0, + 13, 0, 0, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 301, 0, 0, 14, 369, 485, 0, + 0, 0, 15, 0, 397, 0, 0, 0, 0, 0, + 0, 301, 306, 0, 0, 370, 0, 371, 372, 307, + 308, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 373, 0, 0, 0, 0, 374, 0, 375, + 0, -333, 397, 0, 0, 16, 17, 18, 0, 376, + 306, 0, 309, 310, 311, 312, 313, 307, 308, 314, + 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, + 306, 0, 0, 0, 0, 0, 0, 307, -333, 0, + 0, 0, 0, 377, 0, 0, 0, 0, 306, 0, + 309, 310, 311, 312, 313, 307, 0, 314, 315, 0, + 316, 317, 318, 319, 320, 321, 0, 322, 0, 0, + -333, -333, -333, 312, 313, 0, 0, 314, 315, 0, + 316, 317, 318, 319, 320, 321, 0, 322, 0, 0, + 0, -333, -333, 0, 0, -333, -333, 0, 316, 317, + 318, 319, 320, 321, 0, 322, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196 }; static const yytype_int16 yycheck[] = { 145, 54, 2, 203, 170, 5, 57, 58, 59, 107, 10, 177, 12, 211, 3, 213, 96, 97, 98, 97, - 98, 81, 3, 3, 3, 115, 112, 12, 151, 115, - 51, 176, 58, 178, 179, 294, 182, 358, 87, 98, - 3, 78, 19, 506, 55, 120, 98, 122, 48, 185, - 50, 163, 164, 3, 190, 12, 72, 3, 27, 380, - 60, 26, 137, 74, 141, 210, 98, 147, 84, 147, - 215, 130, 63, 55, 113, 4, 5, 6, 190, 3, - 37, 120, 282, 60, 547, 85, 86, 25, 3, 4, - 5, 6, 61, 93, 292, 240, 149, 54, 137, 115, - 100, 101, 300, 27, 3, 303, 138, 184, 3, 307, + 98, 81, 3, 3, 3, 51, 58, 3, 12, 84, + 151, 176, 6, 178, 179, 294, 112, 358, 6, 115, + 4, 5, 6, 17, 115, 95, 19, 12, 48, 3, + 50, 182, 95, 3, 117, 102, 9, 78, 95, 380, + 60, 117, 506, 9, 190, 210, 192, 147, 579, 147, + 215, 134, 37, 27, 326, 63, 189, 26, 134, 3, + 332, 194, 282, 130, 127, 85, 86, 60, 599, 54, + 25, 3, 45, 93, 292, 240, 149, 55, 135, 45, + 100, 101, 300, 547, 95, 303, 3, 61, 3, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 184, 248, 385, 186, 98, 67, - 451, 46, 47, 48, 125, 73, 173, 61, 120, 108, - 286, 190, 287, 288, 82, 83, 103, 9, 139, 408, - 471, 141, 84, 298, 299, 137, 96, 126, 105, 102, - 186, 99, 215, 92, 120, 103, 104, 130, 258, 190, - 120, 120, 258, 3, 89, 166, 116, 92, 120, 108, - 130, 137, 122, 45, 159, 9, 133, 137, 137, 179, - 180, 181, 182, 108, 184, 137, 141, 186, 179, 179, - 345, 201, 187, 0, 119, 350, 351, 186, 406, 96, - 117, 126, 113, 336, 3, 4, 5, 6, 135, 120, - 186, 45, 188, 85, 322, 140, 155, 156, 157, 116, - 489, 187, 285, 3, 434, 122, 137, 182, 187, 184, - 155, 156, 157, 94, 17, 18, 163, 164, 393, 394, - 120, 25, 190, 574, 78, 108, 189, 46, 47, 48, - 130, 85, 191, 178, 179, 71, 326, 137, 72, 120, - 121, 186, 332, 126, 80, 81, 191, 536, 329, 359, - 84, 359, 159, 160, 25, 116, 137, 485, 120, 120, - 122, 550, 188, 67, 580, 3, 4, 5, 6, 73, - 89, 3, 186, 92, 6, 137, 137, 58, 82, 83, - 596, 115, 326, 64, 187, 17, 132, 190, 332, 108, - 98, 487, 132, 323, 3, 99, 67, 116, 128, 103, - 104, 476, 73, 478, 479, 46, 47, 126, 46, 47, - 48, 82, 83, 396, 257, 86, 138, 130, 190, 262, - 58, 140, 101, 187, 187, 408, 190, 190, 99, 187, - 3, 187, 190, 104, 190, 129, 155, 156, 157, 3, - 4, 5, 6, 54, 143, 144, 145, 146, 147, 148, - 187, 89, 187, 190, 92, 190, 4, 126, 533, 178, - 179, 187, 3, 187, 190, 136, 190, 186, 87, 97, - 108, 187, 191, 187, 190, 187, 190, 3, 190, 186, - 6, 3, 46, 47, 48, 46, 190, 4, 126, 3, - 4, 5, 6, 3, 4, 5, 6, 187, 187, 187, - 190, 3, 140, 186, 186, 6, 489, 12, 583, 119, - 585, 131, 4, 4, 187, 190, 46, 155, 156, 157, - 136, 167, 3, 134, 95, 89, 117, 3, 92, 78, - 141, 123, 46, 47, 48, 17, 3, 47, 48, 117, - 178, 179, 130, 186, 108, 102, 186, 186, 186, 184, - 186, 39, 49, 191, 97, 186, 98, 190, 125, 170, - 171, 190, 126, 174, 175, 55, 177, 178, 179, 180, - 181, 182, 54, 184, 186, 89, 140, 3, 92, 89, - 186, 58, 92, 186, 3, 187, 186, 186, 125, 166, - 186, 155, 156, 157, 108, 98, 186, 79, 108, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 186, 126, 187, 178, 179, 126, 186, 186, 105, - 186, 120, 186, 105, 109, 108, 140, 191, 186, 184, - 140, 185, 3, 70, 190, 63, 165, 6, 6, 6, - 6, 155, 156, 157, 126, 155, 156, 157, 6, 108, - 125, 133, 134, 187, 187, 187, 103, 131, 82, 141, - 142, 82, 82, 103, 178, 179, 3, 131, 178, 179, - 6, 187, 186, 3, 187, 187, 186, 191, 187, 187, - 187, 191, 186, 3, 120, 167, 168, 169, 170, 171, - 188, 187, 174, 175, 0, 177, 178, 179, 180, 181, - 182, 7, 184, 187, 334, 70, 7, 186, 24, 15, - 382, 477, 330, 144, 15, 187, 22, 469, 241, 345, - 26, 22, 591, 283, 338, 26, 289, 543, 256, 542, - 268, 37, 349, -1, 40, 41, 37, 514, -1, 40, - 41, 104, -1, -1, -1, -1, 52, 53, -1, -1, - 11, 52, 53, -1, -1, 54, -1, 63, -1, -1, - 66, -1, 63, 24, -1, 66, -1, -1, 29, 30, - 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, - -1, -1, 43, -1, -1, 91, 54, -1, -1, 95, - 91, -1, -1, -1, 95, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 111, 105, -1, 69, -1, - 111, 117, -1, -1, -1, -1, 117, -1, -1, -1, - -1, 120, -1, -1, -1, -1, -1, 126, -1, 90, - -1, 92, 93, -1, -1, 134, -1, 105, 54, -1, - -1, -1, 141, 142, -1, -1, 107, -1, -1, -1, - -1, 112, -1, 114, 160, 161, 162, -1, 126, 160, - 161, 162, -1, 124, -1, -1, 134, -1, 167, 168, - 169, 170, 171, 141, 142, 174, 175, -1, 177, 178, - 179, 180, 181, 182, -1, 184, -1, -1, -1, 105, - -1, -1, -1, -1, -1, -1, -1, 158, -1, 167, - 168, 169, 170, 171, -1, -1, 174, 175, -1, 177, - 178, 179, 180, 181, 182, -1, 184, -1, 134, -1, - -1, -1, -1, -1, -1, 141, 142, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 167, 168, 169, 170, 171, -1, -1, 174, 175, - -1, 177, 178, 179, 180, 181, 182, -1, 184 + 318, 319, 320, 321, 184, 89, 385, 248, 191, 82, + 451, 77, 67, 138, 122, 191, 82, 72, 103, 194, + 27, 105, 287, 288, 79, 80, 156, 190, 136, 408, + 471, 127, 173, 298, 299, 286, 81, 191, 190, 117, + 194, 96, 215, 160, 161, 100, 101, 117, 194, 3, + 4, 5, 6, 55, 61, 163, 134, 127, 3, 4, + 5, 6, 258, 188, 134, 105, 25, 258, 152, 153, + 154, 73, 58, 167, 183, 138, 170, 194, 64, 167, + 345, 201, 170, 123, 183, 350, 351, 191, 406, 190, + 190, 257, 46, 47, 48, 336, 262, 71, 105, 71, + 91, 46, 47, 48, 322, 117, 99, 81, 67, 81, + 489, 195, 285, 72, 434, 127, 123, 168, 169, 132, + 79, 80, 134, 186, 83, 188, 117, 118, 393, 394, + 93, 0, 86, 574, 138, 89, 117, 96, 112, 194, + 112, 86, 101, 134, 89, 113, 326, 160, 161, 117, + 113, 105, 332, 134, 168, 169, 119, 536, 329, 359, + 105, 359, 116, 110, 17, 18, 134, 485, 113, 123, + 117, 550, 191, 191, 133, 194, 194, 193, 123, 183, + 184, 185, 186, 137, 188, 114, 93, 134, 3, 4, + 5, 6, 137, 117, 3, 119, 192, 110, 152, 153, + 154, 487, 25, 323, 117, 190, 113, 152, 153, 154, + 134, 476, 119, 478, 479, 3, 4, 5, 6, 159, + 160, 134, 117, 396, 119, 46, 47, 191, 182, 183, + 194, 46, 47, 48, 95, 408, 190, 182, 183, 134, + 129, 195, 3, 58, 67, 190, 129, 125, 191, 72, + 195, 194, 191, 135, 127, 194, 79, 80, 46, 47, + 48, 140, 141, 142, 143, 144, 145, 194, 533, 191, + 98, 86, 194, 96, 89, 126, 191, 100, 101, 194, + 191, 191, 191, 194, 194, 194, 3, 4, 5, 6, + 105, 191, 191, 3, 194, 194, 4, 123, 86, 3, + 84, 89, 164, 165, 166, 94, 190, 3, 123, 46, + 3, 4, 5, 6, 191, 191, 489, 105, 4, 584, + 3, 586, 137, 190, 190, 6, 116, 12, 128, 46, + 47, 48, 4, 4, 191, 123, 194, 152, 153, 154, + 46, 133, 3, 92, 7, 114, 171, 77, 3, 137, + 120, 3, 15, 127, 47, 48, 114, 190, 190, 22, + 190, 17, 39, 26, 152, 153, 154, 182, 183, 86, + 188, 194, 89, 99, 37, 190, 190, 40, 41, 49, + 195, 95, 190, 194, 194, 190, 55, 94, 105, 52, + 53, 122, 190, 86, 182, 183, 89, 190, 54, 58, + 63, 3, 190, 66, 191, 190, 123, 195, 190, 3, + 163, 122, 105, 190, 190, 190, 95, 190, 190, 190, + 137, 105, 78, 191, 102, 88, 117, 190, 188, 92, + 123, 106, 189, 3, 70, 152, 153, 154, 194, 63, + 162, 6, 6, 6, 137, 108, 102, 6, 6, 122, + 191, 114, 105, 191, 128, 191, 100, 79, 79, 152, + 153, 154, 79, 100, 3, 182, 183, 123, 128, 6, + 191, 191, 191, 190, 130, 131, 191, 190, 195, 191, + 70, 190, 138, 139, 117, 334, 191, 330, 191, 182, + 183, 191, 24, 192, 157, 158, 159, 190, 0, 191, + 477, 382, 195, 469, 144, 7, 241, 345, 289, 338, + 543, 594, 542, 15, 256, 171, 172, 173, 174, 175, + 22, 283, 178, 179, 26, 181, 182, 183, 184, 185, + 186, 514, 188, 349, 268, 37, 104, -1, 40, 41, + -1, -1, -1, -1, -1, 54, -1, -1, -1, 11, + 52, 53, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 63, 24, -1, 66, -1, -1, 29, 30, 31, + 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, + -1, 43, -1, 54, -1, -1, 88, -1, -1, -1, + 92, -1, -1, 102, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, -1, 108, 69, 117, -1, + -1, -1, 114, -1, 123, -1, -1, -1, -1, -1, + -1, 54, 131, -1, -1, 87, -1, 89, 90, 138, + 139, 102, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 104, -1, -1, -1, -1, 109, -1, 111, + -1, 102, 123, -1, -1, 157, 158, 159, -1, 121, + 131, -1, 171, 172, 173, 174, 175, 138, 139, 178, + 179, -1, 181, 182, 183, 184, 185, 186, -1, 188, + 131, -1, -1, -1, -1, -1, -1, 138, 139, -1, + -1, -1, -1, 155, -1, -1, -1, -1, 131, -1, + 171, 172, 173, 174, 175, 138, -1, 178, 179, -1, + 181, 182, 183, 184, 185, 186, -1, 188, -1, -1, + 171, 172, 173, 174, 175, -1, -1, 178, 179, -1, + 181, 182, 183, 184, 185, 186, -1, 188, -1, -1, + -1, 174, 175, -1, -1, 178, 179, -1, 181, 182, + 183, 184, 185, 186, -1, 188, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1357,105 +1360,105 @@ static const yytype_int16 yycheck[] = static const yytype_int16 yystos[] = { 0, 7, 15, 22, 26, 37, 40, 41, 52, 53, - 63, 66, 91, 95, 111, 117, 160, 161, 162, 193, - 194, 195, 196, 200, 202, 204, 205, 209, 210, 211, - 223, 225, 228, 229, 230, 232, 235, 313, 314, 26, - 3, 302, 3, 3, 302, 72, 84, 115, 98, 98, - 102, 301, 302, 84, 186, 238, 302, 72, 84, 115, - 19, 60, 3, 315, 316, 159, 201, 201, 201, 0, - 189, 320, 117, 197, 197, 58, 238, 239, 243, 3, - 188, 186, 98, 132, 212, 212, 212, 302, 3, 206, - 302, 128, 132, 224, 238, 239, 138, 98, 138, 224, - 224, 224, 302, 130, 190, 195, 101, 129, 255, 9, - 45, 85, 240, 241, 78, 240, 251, 3, 4, 5, - 6, 92, 108, 155, 156, 157, 191, 258, 259, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 4, 203, - 126, 3, 303, 302, 302, 87, 248, 97, 186, 231, - 3, 233, 234, 46, 302, 187, 187, 207, 288, 207, - 207, 3, 302, 302, 238, 316, 186, 291, 12, 244, - 236, 237, 238, 243, 119, 242, 131, 236, 55, 74, - 256, 4, 4, 187, 190, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 280, 281, 282, - 46, 136, 98, 130, 186, 231, 3, 46, 47, 48, - 89, 126, 140, 178, 179, 186, 261, 262, 263, 264, - 265, 266, 267, 268, 273, 275, 276, 277, 278, 279, - 283, 284, 285, 286, 287, 207, 3, 321, 64, 239, - 167, 190, 248, 95, 226, 227, 117, 208, 208, 208, - 3, 198, 199, 245, 257, 260, 261, 251, 240, 252, - 253, 261, 251, 261, 119, 261, 123, 308, 309, 310, - 280, 287, 302, 3, 235, 3, 27, 61, 213, 214, - 215, 222, 130, 186, 188, 186, 186, 186, 116, 261, - 274, 46, 126, 262, 184, 262, 239, 261, 120, 137, - 17, 54, 79, 105, 126, 133, 134, 141, 142, 167, - 168, 169, 170, 171, 174, 175, 177, 178, 179, 180, - 181, 182, 184, 102, 187, 190, 186, 261, 234, 39, - 49, 248, 186, 187, 190, 98, 246, 247, 190, 3, - 130, 306, 307, 256, 236, 190, 94, 121, 254, 256, - 55, 55, 63, 125, 139, 166, 311, 310, 186, 97, + 63, 66, 88, 92, 108, 114, 157, 158, 159, 197, + 198, 199, 200, 204, 206, 208, 209, 213, 214, 215, + 227, 229, 232, 233, 234, 236, 239, 317, 318, 26, + 3, 306, 3, 3, 306, 71, 81, 112, 95, 95, + 99, 305, 306, 81, 190, 242, 306, 71, 81, 112, + 19, 60, 3, 319, 320, 156, 205, 205, 205, 0, + 193, 324, 114, 201, 201, 58, 242, 243, 247, 3, + 192, 190, 95, 129, 216, 216, 216, 306, 3, 210, + 306, 125, 129, 228, 242, 243, 135, 95, 135, 228, + 228, 228, 306, 127, 194, 199, 98, 126, 259, 9, + 45, 82, 244, 245, 77, 244, 255, 3, 4, 5, + 6, 89, 105, 152, 153, 154, 195, 262, 263, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 4, 207, + 123, 3, 307, 306, 306, 84, 252, 94, 190, 235, + 3, 237, 238, 46, 306, 191, 191, 211, 292, 211, + 211, 3, 306, 306, 242, 320, 190, 295, 12, 248, + 240, 241, 242, 247, 116, 246, 128, 240, 55, 73, + 260, 4, 4, 191, 194, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 284, 285, 286, + 46, 133, 95, 127, 190, 235, 3, 46, 47, 48, + 86, 123, 137, 182, 183, 190, 265, 266, 267, 268, + 269, 270, 271, 272, 277, 279, 280, 281, 282, 283, + 287, 288, 289, 290, 291, 211, 3, 325, 64, 243, + 171, 194, 252, 92, 230, 231, 114, 212, 212, 212, + 3, 202, 203, 249, 261, 264, 265, 255, 244, 256, + 257, 265, 255, 265, 116, 265, 120, 312, 313, 314, + 284, 291, 306, 3, 239, 3, 27, 61, 217, 218, + 219, 226, 127, 190, 192, 190, 190, 190, 113, 265, + 278, 46, 123, 266, 188, 266, 243, 265, 117, 134, + 17, 54, 78, 102, 123, 130, 131, 138, 139, 171, + 172, 173, 174, 175, 178, 179, 181, 182, 183, 184, + 185, 186, 188, 99, 191, 194, 190, 265, 238, 39, + 49, 252, 190, 191, 194, 95, 250, 251, 194, 3, + 127, 310, 311, 260, 240, 194, 91, 118, 258, 260, + 55, 55, 63, 122, 136, 163, 315, 314, 190, 94, 11, 24, 29, 30, 31, 32, 33, 35, 43, 69, - 90, 92, 93, 107, 112, 114, 124, 158, 216, 125, - 186, 187, 190, 235, 187, 244, 3, 179, 239, 280, - 261, 261, 274, 96, 116, 122, 186, 126, 257, 187, - 187, 261, 261, 262, 186, 262, 105, 133, 186, 108, - 126, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 291, 302, 3, 259, - 224, 206, 259, 199, 186, 296, 297, 298, 299, 300, - 302, 317, 248, 260, 3, 253, 308, 261, 261, 166, - 125, 135, 163, 164, 312, 321, 207, 186, 186, 218, - 186, 186, 186, 217, 27, 61, 108, 126, 219, 220, - 221, 186, 321, 214, 257, 187, 98, 130, 113, 96, - 122, 261, 261, 239, 185, 120, 109, 269, 262, 186, - 239, 257, 108, 185, 187, 3, 187, 235, 25, 67, - 73, 82, 83, 99, 104, 318, 190, 130, 304, 305, - 306, 70, 249, 63, 321, 165, 187, 6, 6, 6, - 6, 6, 125, 108, 221, 321, 187, 187, 261, 216, - 261, 261, 122, 113, 187, 262, 131, 251, 239, 257, - 187, 187, 187, 103, 82, 82, 82, 103, 297, 3, - 131, 312, 187, 187, 190, 187, 187, 187, 187, 187, - 187, 122, 261, 257, 71, 80, 81, 270, 271, 187, - 187, 305, 298, 297, 186, 257, 6, 187, 3, 6, - 17, 272, 86, 136, 321, 51, 250, 187, 3, 3, - 272, 186, 261, 319, 187, 261, 120, 3, 286, 272, - 187 + 87, 89, 90, 104, 109, 111, 121, 155, 220, 122, + 190, 191, 194, 239, 191, 248, 3, 183, 243, 284, + 265, 265, 278, 93, 113, 119, 190, 123, 261, 191, + 191, 265, 265, 266, 190, 266, 102, 130, 190, 105, + 123, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 295, 306, 3, 263, + 228, 210, 263, 203, 190, 300, 301, 302, 303, 304, + 306, 321, 252, 264, 3, 257, 312, 265, 265, 163, + 122, 132, 160, 161, 316, 325, 211, 190, 190, 222, + 190, 190, 190, 221, 27, 61, 105, 123, 223, 224, + 225, 190, 325, 218, 261, 191, 95, 127, 110, 93, + 119, 265, 265, 243, 189, 117, 106, 273, 266, 190, + 243, 261, 105, 189, 191, 3, 191, 239, 25, 67, + 72, 79, 80, 96, 101, 322, 194, 127, 308, 309, + 310, 70, 253, 63, 325, 162, 191, 6, 6, 6, + 6, 6, 122, 105, 225, 325, 191, 191, 265, 220, + 265, 265, 119, 110, 191, 266, 128, 255, 243, 261, + 191, 191, 191, 100, 79, 79, 79, 100, 301, 3, + 128, 316, 191, 191, 194, 191, 191, 191, 191, 191, + 191, 119, 265, 261, 164, 165, 166, 274, 275, 191, + 191, 309, 302, 301, 190, 261, 6, 191, 6, 17, + 167, 170, 276, 83, 133, 325, 51, 254, 191, 168, + 169, 276, 168, 169, 190, 265, 323, 191, 265, 117, + 3, 290, 276, 191 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 192, 193, 194, 194, 195, 195, 195, 195, 195, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 197, 197, 198, 198, 199, 199, 200, 200, 200, 201, - 201, 202, 203, 204, 204, 205, 205, 206, 207, 208, - 208, 209, 209, 210, 210, 210, 211, 211, 211, 211, - 211, 212, 212, 213, 213, 214, 214, 215, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 217, 217, 218, 218, - 218, 219, 219, 220, 220, 221, 221, 221, 221, 222, - 222, 223, 223, 223, 223, 224, 224, 225, 226, 227, - 228, 229, 230, 230, 231, 231, 232, 233, 233, 234, - 235, 235, 235, 236, 236, 237, 237, 238, 238, 239, - 239, 240, 241, 241, 241, 242, 242, 243, 244, 244, - 245, 246, 246, 247, 248, 248, 249, 249, 250, 250, - 251, 251, 252, 252, 253, 254, 254, 254, 255, 255, - 256, 256, 256, 256, 256, 256, 257, 257, 258, 258, - 259, 259, 260, 261, 261, 261, 261, 261, 261, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 263, 263, 264, 264, 264, 264, 264, 265, 265, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, - 267, 267, 267, 267, 268, 269, 269, 270, 270, 270, - 271, 271, 271, 272, 272, 273, 273, 273, 273, 274, - 274, 275, 275, 276, 276, 276, 276, 276, 276, 276, - 277, 277, 278, 279, 280, 280, 280, 280, 280, 280, - 281, 281, 281, 281, 281, 281, 282, 282, 283, 284, - 285, 286, 286, 286, 286, 287, 287, 287, 287, 287, - 287, 287, 288, 289, 289, 290, 290, 291, 292, 293, - 294, 294, 294, 295, 296, 296, 297, 297, 298, 298, - 299, 299, 300, 301, 302, 302, 303, 303, 304, 304, - 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, - 310, 310, 311, 311, 311, 311, 312, 312, 312, 313, - 313, 314, 315, 315, 316, 317, 317, 317, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, - 320, 321, 321 + 0, 196, 197, 198, 198, 199, 199, 199, 199, 199, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 201, 201, 202, 202, 203, 203, 204, 204, 204, 205, + 205, 206, 207, 208, 208, 209, 209, 210, 211, 212, + 212, 213, 213, 214, 214, 214, 215, 215, 215, 215, + 215, 216, 216, 217, 217, 218, 218, 219, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 221, 221, 222, 222, + 222, 223, 223, 224, 224, 225, 225, 225, 225, 226, + 226, 227, 227, 227, 227, 228, 228, 229, 230, 231, + 232, 233, 234, 234, 235, 235, 236, 237, 237, 238, + 239, 239, 239, 240, 240, 241, 241, 242, 242, 243, + 243, 244, 245, 245, 245, 246, 246, 247, 248, 248, + 249, 250, 250, 251, 252, 252, 253, 253, 254, 254, + 255, 255, 256, 256, 257, 258, 258, 258, 259, 259, + 260, 260, 260, 260, 260, 260, 261, 261, 262, 262, + 263, 263, 264, 265, 265, 265, 265, 265, 265, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 267, 267, 268, 268, 268, 268, 268, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 270, 270, + 271, 271, 271, 271, 272, 273, 273, 274, 274, 274, + 275, 275, 275, 276, 276, 276, 276, 276, 277, 277, + 277, 277, 278, 278, 279, 279, 280, 280, 280, 280, + 280, 280, 280, 281, 281, 282, 283, 284, 284, 284, + 284, 284, 284, 285, 285, 285, 285, 285, 285, 286, + 286, 287, 288, 289, 290, 290, 290, 290, 291, 291, + 291, 291, 291, 291, 291, 292, 293, 293, 294, 294, + 295, 296, 297, 298, 298, 298, 299, 300, 300, 301, + 301, 302, 302, 303, 303, 304, 305, 306, 306, 307, + 307, 308, 308, 309, 309, 310, 310, 311, 311, 312, + 312, 313, 313, 314, 314, 315, 315, 315, 315, 316, + 316, 316, 317, 317, 318, 319, 319, 320, 321, 321, + 321, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 323, 324, 324, 325, 325 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1482,19 +1485,19 @@ static const yytype_int8 yyr2[] = 1, 1, 2, 2, 2, 3, 4, 1, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, 6, 5, 6, 7, 3, 0, 2, 5, 0, - 1, 1, 1, 2, 2, 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, 1, 2, - 3, 5, 1, 3, 1, 2, 2, 1, 0, 1, - 0, 2, 1, 3, 3, 4, 6, 8, 1, 2, - 1, 2, 1, 2, 1, 1, 1, 0, 1, 1, - 0, 1, 3 + 1, 1, 1, 2, 2, 2, 2, 1, 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, 1, 2, 3, 5, 1, 3, 1, 2, 2, + 1, 0, 1, 0, 2, 1, 3, 3, 4, 6, + 8, 1, 2, 1, 2, 1, 2, 1, 1, 1, + 0, 1, 1, 0, 1, 3 }; @@ -2058,31 +2061,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2064 "bison_parser.cpp" +#line 2067 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2070 "bison_parser.cpp" +#line 2073 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2076 "bison_parser.cpp" +#line 2079 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2082 "bison_parser.cpp" +#line 2085 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).stmt_vec)) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2091,23 +2094,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2095 "bison_parser.cpp" +#line 2098 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2101 "bison_parser.cpp" +#line 2104 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2107 "bison_parser.cpp" +#line 2110 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2116,11 +2119,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2120 "bison_parser.cpp" +#line 2123 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2129,89 +2132,89 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2133 "bison_parser.cpp" +#line 2136 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2139 "bison_parser.cpp" +#line 2142 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2145 "bison_parser.cpp" +#line 2148 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2151 "bison_parser.cpp" +#line 2154 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2157 "bison_parser.cpp" +#line 2160 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2163 "bison_parser.cpp" +#line 2166 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2169 "bison_parser.cpp" +#line 2172 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2175 "bison_parser.cpp" +#line 2178 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2181 "bison_parser.cpp" +#line 2184 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2187 "bison_parser.cpp" +#line 2190 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2193 "bison_parser.cpp" +#line 2196 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2199 "bison_parser.cpp" +#line 2202 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2205 "bison_parser.cpp" +#line 2208 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2211 "bison_parser.cpp" +#line 2214 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).table_element_vec)) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2220,113 +2223,113 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2224 "bison_parser.cpp" +#line 2227 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2230 "bison_parser.cpp" +#line 2233 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2236 "bison_parser.cpp" +#line 2239 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2242 "bison_parser.cpp" +#line 2245 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2248 "bison_parser.cpp" +#line 2251 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2254 "bison_parser.cpp" +#line 2257 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2260 "bison_parser.cpp" +#line 2263 "bison_parser.cpp" break; case YYSYMBOL_column_constraint_set: /* column_constraint_set */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2266 "bison_parser.cpp" +#line 2269 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2272 "bison_parser.cpp" +#line 2275 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2278 "bison_parser.cpp" +#line 2281 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2284 "bison_parser.cpp" +#line 2287 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2290 "bison_parser.cpp" +#line 2293 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2296 "bison_parser.cpp" +#line 2299 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2302 "bison_parser.cpp" +#line 2305 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2308 "bison_parser.cpp" +#line 2311 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2314 "bison_parser.cpp" +#line 2317 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2320 "bison_parser.cpp" +#line 2323 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2326 "bison_parser.cpp" +#line 2329 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 172 "bison_parser.y" +#line 173 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2335,17 +2338,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2339 "bison_parser.cpp" +#line 2342 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2345 "bison_parser.cpp" +#line 2348 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).update_vec)) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2354,77 +2357,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2358 "bison_parser.cpp" +#line 2361 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2364 "bison_parser.cpp" +#line 2367 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2370 "bison_parser.cpp" +#line 2373 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2376 "bison_parser.cpp" +#line 2379 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2382 "bison_parser.cpp" +#line 2385 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2388 "bison_parser.cpp" +#line 2391 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2394 "bison_parser.cpp" +#line 2397 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2400 "bison_parser.cpp" +#line 2403 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2406 "bison_parser.cpp" +#line 2409 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2412 "bison_parser.cpp" +#line 2415 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2418 "bison_parser.cpp" +#line 2421 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2424 "bison_parser.cpp" +#line 2427 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2433,41 +2436,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2437 "bison_parser.cpp" +#line 2440 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2443 "bison_parser.cpp" +#line 2446 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2449 "bison_parser.cpp" +#line 2452 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2455 "bison_parser.cpp" +#line 2458 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2461 "bison_parser.cpp" +#line 2464 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2467 "bison_parser.cpp" +#line 2470 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2476,11 +2479,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2480 "bison_parser.cpp" +#line 2483 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2489,35 +2492,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2493 "bison_parser.cpp" +#line 2496 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2499 "bison_parser.cpp" +#line 2502 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2505 "bison_parser.cpp" +#line 2508 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2511 "bison_parser.cpp" +#line 2514 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2517 "bison_parser.cpp" +#line 2520 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2526,11 +2529,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2530 "bison_parser.cpp" +#line 2533 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2539,11 +2542,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2543 "bison_parser.cpp" +#line 2546 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2552,65 +2555,65 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2556 "bison_parser.cpp" +#line 2559 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2562 "bison_parser.cpp" +#line 2565 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2568 "bison_parser.cpp" +#line 2571 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2574 "bison_parser.cpp" +#line 2577 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2580 "bison_parser.cpp" +#line 2583 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2586 "bison_parser.cpp" +#line 2589 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2592 "bison_parser.cpp" +#line 2595 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2598 "bison_parser.cpp" +#line 2601 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2604 "bison_parser.cpp" +#line 2607 "bison_parser.cpp" break; case YYSYMBOL_window_expr: /* window_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2610 "bison_parser.cpp" +#line 2613 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2619,185 +2622,185 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2623 "bison_parser.cpp" +#line 2626 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2629 "bison_parser.cpp" +#line 2632 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2635 "bison_parser.cpp" +#line 2638 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 180 "bison_parser.y" - { free( (((*yyvaluep).sval)) ); } -#line 2641 "bison_parser.cpp" +#line 190 "bison_parser.y" + { delete (((*yyvaluep).frame_bound)); } +#line 2644 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2647 "bison_parser.cpp" +#line 2650 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2653 "bison_parser.cpp" +#line 2656 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2659 "bison_parser.cpp" +#line 2662 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2665 "bison_parser.cpp" +#line 2668 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2671 "bison_parser.cpp" +#line 2674 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2677 "bison_parser.cpp" +#line 2680 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2683 "bison_parser.cpp" +#line 2686 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2689 "bison_parser.cpp" +#line 2692 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2695 "bison_parser.cpp" +#line 2698 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2701 "bison_parser.cpp" +#line 2704 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2707 "bison_parser.cpp" +#line 2710 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2713 "bison_parser.cpp" +#line 2716 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2719 "bison_parser.cpp" +#line 2722 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2725 "bison_parser.cpp" +#line 2728 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2731 "bison_parser.cpp" +#line 2734 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2737 "bison_parser.cpp" +#line 2740 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2743 "bison_parser.cpp" +#line 2746 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2749 "bison_parser.cpp" +#line 2752 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2755 "bison_parser.cpp" +#line 2758 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2761 "bison_parser.cpp" +#line 2764 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2767 "bison_parser.cpp" +#line 2770 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2773 "bison_parser.cpp" +#line 2776 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2779 "bison_parser.cpp" +#line 2782 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2785 "bison_parser.cpp" +#line 2788 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2791 "bison_parser.cpp" +#line 2794 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2797 "bison_parser.cpp" +#line 2800 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).table_vec)) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2806,134 +2809,134 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2810 "bison_parser.cpp" +#line 2813 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2816 "bison_parser.cpp" +#line 2819 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2822 "bison_parser.cpp" +#line 2825 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 168 "bison_parser.y" +#line 169 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2831 "bison_parser.cpp" +#line 2834 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2837 "bison_parser.cpp" +#line 2840 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2843 "bison_parser.cpp" +#line 2846 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2849 "bison_parser.cpp" +#line 2852 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2855 "bison_parser.cpp" +#line 2858 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2861 "bison_parser.cpp" +#line 2864 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2867 "bison_parser.cpp" +#line 2870 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2873 "bison_parser.cpp" +#line 2876 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2879 "bison_parser.cpp" +#line 2882 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2885 "bison_parser.cpp" +#line 2888 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2891 "bison_parser.cpp" +#line 2894 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2897 "bison_parser.cpp" +#line 2900 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2903 "bison_parser.cpp" +#line 2906 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2909 "bison_parser.cpp" +#line 2912 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2915 "bison_parser.cpp" +#line 2918 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2921 "bison_parser.cpp" +#line 2924 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2927 "bison_parser.cpp" +#line 2930 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2933 "bison_parser.cpp" +#line 2936 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 172 "bison_parser.y" +#line 173 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2942,7 +2945,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2946 "bison_parser.cpp" +#line 2949 "bison_parser.cpp" break; default: @@ -3050,7 +3053,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3054 "bison_parser.cpp" +#line 3057 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3261,7 +3264,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 319 "bison_parser.y" +#line 321 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3279,236 +3282,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3283 "bison_parser.cpp" +#line 3286 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 338 "bison_parser.y" +#line 340 "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 3294 "bison_parser.cpp" +#line 3297 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 344 "bison_parser.y" +#line 346 "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 3305 "bison_parser.cpp" +#line 3308 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 351 "bison_parser.y" +#line 353 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3314 "bison_parser.cpp" +#line 3317 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 355 "bison_parser.y" +#line 357 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3323 "bison_parser.cpp" +#line 3326 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 359 "bison_parser.y" +#line 361 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3329 "bison_parser.cpp" +#line 3332 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 360 "bison_parser.y" +#line 362 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3335 "bison_parser.cpp" +#line 3338 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 361 "bison_parser.y" +#line 363 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3341 "bison_parser.cpp" +#line 3344 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 363 "bison_parser.y" +#line 365 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3347 "bison_parser.cpp" +#line 3350 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 364 "bison_parser.y" +#line 366 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3353 "bison_parser.cpp" +#line 3356 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 365 "bison_parser.y" +#line 367 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3359 "bison_parser.cpp" +#line 3362 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 366 "bison_parser.y" +#line 368 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3365 "bison_parser.cpp" +#line 3368 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 367 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3371 "bison_parser.cpp" +#line 3374 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 368 "bison_parser.y" +#line 370 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3377 "bison_parser.cpp" +#line 3380 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 369 "bison_parser.y" +#line 371 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3383 "bison_parser.cpp" +#line 3386 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 370 "bison_parser.y" +#line 372 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3389 "bison_parser.cpp" +#line 3392 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 371 "bison_parser.y" +#line 373 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3395 "bison_parser.cpp" +#line 3398 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 372 "bison_parser.y" +#line 374 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3401 "bison_parser.cpp" +#line 3404 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 378 "bison_parser.y" +#line 380 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3407 "bison_parser.cpp" +#line 3410 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 379 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3413 "bison_parser.cpp" +#line 3416 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 381 "bison_parser.y" +#line 383 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3422 "bison_parser.cpp" +#line 3425 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 385 "bison_parser.y" +#line 387 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3431 "bison_parser.cpp" +#line 3434 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 390 "bison_parser.y" +#line 392 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3440 "bison_parser.cpp" +#line 3443 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 394 "bison_parser.y" +#line 396 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3450 "bison_parser.cpp" +#line 3453 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 404 "bison_parser.y" +#line 406 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3456 "bison_parser.cpp" +#line 3459 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 405 "bison_parser.y" +#line 407 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3462 "bison_parser.cpp" +#line 3465 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 406 "bison_parser.y" +#line 408 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3468 "bison_parser.cpp" +#line 3471 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 414 "bison_parser.y" +#line 416 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3478 "bison_parser.cpp" +#line 3481 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 422 "bison_parser.y" +#line 424 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3487 "bison_parser.cpp" +#line 3490 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 426 "bison_parser.y" +#line 428 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3497 "bison_parser.cpp" +#line 3500 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 437 "bison_parser.y" +#line 439 "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 3508 "bison_parser.cpp" +#line 3511 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_file_type opt_where */ -#line 443 "bison_parser.y" +#line 445 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3516,11 +3519,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.import_stmt)->whereClause = (yyvsp[0].expr); } -#line 3520 "bison_parser.cpp" +#line 3523 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 451 "bison_parser.y" +#line 453 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3535,79 +3538,79 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3539 "bison_parser.cpp" +#line 3542 "bison_parser.cpp" break; case 38: /* file_path: string_literal */ -#line 466 "bison_parser.y" +#line 468 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3548 "bison_parser.cpp" +#line 3551 "bison_parser.cpp" break; case 39: /* opt_file_type: WITH FORMAT file_type */ -#line 471 "bison_parser.y" +#line 473 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3554 "bison_parser.cpp" +#line 3557 "bison_parser.cpp" break; case 40: /* opt_file_type: %empty */ -#line 472 "bison_parser.y" +#line 474 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3560 "bison_parser.cpp" +#line 3563 "bison_parser.cpp" break; case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 478 "bison_parser.y" +#line 480 "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 3571 "bison_parser.cpp" +#line 3574 "bison_parser.cpp" break; case 42: /* export_statement: COPY select_with_paren TO file_path opt_file_type */ -#line 484 "bison_parser.y" +#line 486 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->select = (yyvsp[-3].select_stmt); } -#line 3581 "bison_parser.cpp" +#line 3584 "bison_parser.cpp" break; case 43: /* show_statement: SHOW TABLES */ -#line 495 "bison_parser.y" +#line 497 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3587 "bison_parser.cpp" +#line 3590 "bison_parser.cpp" break; case 44: /* show_statement: SHOW COLUMNS table_name */ -#line 496 "bison_parser.y" +#line 498 "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 3597 "bison_parser.cpp" +#line 3600 "bison_parser.cpp" break; case 45: /* show_statement: DESCRIBE table_name */ -#line 501 "bison_parser.y" +#line 503 "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 3607 "bison_parser.cpp" +#line 3610 "bison_parser.cpp" break; case 46: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 512 "bison_parser.y" +#line 514 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3621,11 +3624,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3625 "bison_parser.cpp" +#line 3628 "bison_parser.cpp" break; case 47: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 525 "bison_parser.y" +#line 527 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3638,11 +3641,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3642 "bison_parser.cpp" +#line 3645 "bison_parser.cpp" break; case 48: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 537 "bison_parser.y" +#line 539 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3650,11 +3653,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3654 "bison_parser.cpp" +#line 3657 "bison_parser.cpp" break; case 49: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 544 "bison_parser.y" +#line 546 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3662,11 +3665,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3666 "bison_parser.cpp" +#line 3669 "bison_parser.cpp" break; case 50: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 551 "bison_parser.y" +#line 553 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3675,371 +3678,371 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3679 "bison_parser.cpp" +#line 3682 "bison_parser.cpp" break; case 51: /* opt_not_exists: IF NOT EXISTS */ -#line 560 "bison_parser.y" +#line 562 "bison_parser.y" { (yyval.bval) = true; } -#line 3685 "bison_parser.cpp" +#line 3688 "bison_parser.cpp" break; case 52: /* opt_not_exists: %empty */ -#line 561 "bison_parser.y" +#line 563 "bison_parser.y" { (yyval.bval) = false; } -#line 3691 "bison_parser.cpp" +#line 3694 "bison_parser.cpp" break; case 53: /* table_elem_commalist: table_elem */ -#line 563 "bison_parser.y" +#line 565 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3700 "bison_parser.cpp" +#line 3703 "bison_parser.cpp" break; case 54: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 567 "bison_parser.y" +#line 569 "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 3709 "bison_parser.cpp" +#line 3712 "bison_parser.cpp" break; case 55: /* table_elem: column_def */ -#line 572 "bison_parser.y" +#line 574 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3715 "bison_parser.cpp" +#line 3718 "bison_parser.cpp" break; case 56: /* table_elem: table_constraint */ -#line 573 "bison_parser.y" +#line 575 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3721 "bison_parser.cpp" +#line 3724 "bison_parser.cpp" break; case 57: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 575 "bison_parser.y" +#line 577 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_set)); if (!(yyval.column_t)->trySetNullableExplicit()) { yyerror(&yyloc, result, scanner, ("Conflicting nullability constraints for " + std::string{(yyvsp[-2].sval)}).c_str()); } } -#line 3732 "bison_parser.cpp" +#line 3735 "bison_parser.cpp" break; case 58: /* column_type: BIGINT */ -#line 582 "bison_parser.y" +#line 584 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3738 "bison_parser.cpp" +#line 3741 "bison_parser.cpp" break; case 59: /* column_type: BOOLEAN */ -#line 583 "bison_parser.y" +#line 585 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3744 "bison_parser.cpp" +#line 3747 "bison_parser.cpp" break; case 60: /* column_type: CHAR '(' INTVAL ')' */ -#line 584 "bison_parser.y" +#line 586 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3750 "bison_parser.cpp" +#line 3753 "bison_parser.cpp" break; case 61: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 585 "bison_parser.y" +#line 587 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3756 "bison_parser.cpp" +#line 3759 "bison_parser.cpp" break; case 62: /* column_type: DATE */ -#line 586 "bison_parser.y" +#line 588 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3762 "bison_parser.cpp" +#line 3765 "bison_parser.cpp" break; case 63: /* column_type: DATETIME */ -#line 587 "bison_parser.y" +#line 589 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3768 "bison_parser.cpp" +#line 3771 "bison_parser.cpp" break; case 64: /* column_type: DECIMAL opt_decimal_specification */ -#line 588 "bison_parser.y" +#line 590 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3777 "bison_parser.cpp" +#line 3780 "bison_parser.cpp" break; case 65: /* column_type: DOUBLE */ -#line 592 "bison_parser.y" +#line 594 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3783 "bison_parser.cpp" +#line 3786 "bison_parser.cpp" break; case 66: /* column_type: FLOAT */ -#line 593 "bison_parser.y" +#line 595 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3789 "bison_parser.cpp" +#line 3792 "bison_parser.cpp" break; case 67: /* column_type: INT */ -#line 594 "bison_parser.y" +#line 596 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3795 "bison_parser.cpp" +#line 3798 "bison_parser.cpp" break; case 68: /* column_type: INTEGER */ -#line 595 "bison_parser.y" +#line 597 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3801 "bison_parser.cpp" +#line 3804 "bison_parser.cpp" break; case 69: /* column_type: LONG */ -#line 596 "bison_parser.y" +#line 598 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3807 "bison_parser.cpp" +#line 3810 "bison_parser.cpp" break; case 70: /* column_type: REAL */ -#line 597 "bison_parser.y" +#line 599 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3813 "bison_parser.cpp" +#line 3816 "bison_parser.cpp" break; case 71: /* column_type: SMALLINT */ -#line 598 "bison_parser.y" +#line 600 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3819 "bison_parser.cpp" +#line 3822 "bison_parser.cpp" break; case 72: /* column_type: TEXT */ -#line 599 "bison_parser.y" +#line 601 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3825 "bison_parser.cpp" +#line 3828 "bison_parser.cpp" break; case 73: /* column_type: TIME opt_time_precision */ -#line 600 "bison_parser.y" +#line 602 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3831 "bison_parser.cpp" +#line 3834 "bison_parser.cpp" break; case 74: /* column_type: TIMESTAMP */ -#line 601 "bison_parser.y" +#line 603 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3837 "bison_parser.cpp" +#line 3840 "bison_parser.cpp" break; case 75: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 602 "bison_parser.y" +#line 604 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3843 "bison_parser.cpp" +#line 3846 "bison_parser.cpp" break; case 76: /* opt_time_precision: '(' INTVAL ')' */ -#line 604 "bison_parser.y" +#line 606 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3849 "bison_parser.cpp" +#line 3852 "bison_parser.cpp" break; case 77: /* opt_time_precision: %empty */ -#line 605 "bison_parser.y" +#line 607 "bison_parser.y" { (yyval.ival) = 0; } -#line 3855 "bison_parser.cpp" +#line 3858 "bison_parser.cpp" break; case 78: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 607 "bison_parser.y" +#line 609 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3861 "bison_parser.cpp" +#line 3864 "bison_parser.cpp" break; case 79: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 608 "bison_parser.y" +#line 610 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3867 "bison_parser.cpp" +#line 3870 "bison_parser.cpp" break; case 80: /* opt_decimal_specification: %empty */ -#line 609 "bison_parser.y" +#line 611 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3873 "bison_parser.cpp" +#line 3876 "bison_parser.cpp" break; case 81: /* opt_column_constraints: column_constraint_set */ -#line 611 "bison_parser.y" +#line 613 "bison_parser.y" { (yyval.column_constraint_set) = (yyvsp[0].column_constraint_set); } -#line 3879 "bison_parser.cpp" +#line 3882 "bison_parser.cpp" break; case 82: /* opt_column_constraints: %empty */ -#line 612 "bison_parser.y" +#line 614 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); } -#line 3885 "bison_parser.cpp" +#line 3888 "bison_parser.cpp" break; case 83: /* column_constraint_set: column_constraint */ -#line 614 "bison_parser.y" +#line 616 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); (yyval.column_constraint_set)->insert((yyvsp[0].column_constraint_t)); } -#line 3894 "bison_parser.cpp" +#line 3897 "bison_parser.cpp" break; case 84: /* column_constraint_set: column_constraint_set column_constraint */ -#line 618 "bison_parser.y" +#line 620 "bison_parser.y" { (yyvsp[-1].column_constraint_set)->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraint_set) = (yyvsp[-1].column_constraint_set); } -#line 3903 "bison_parser.cpp" +#line 3906 "bison_parser.cpp" break; case 85: /* column_constraint: PRIMARY KEY */ -#line 623 "bison_parser.y" +#line 625 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 3909 "bison_parser.cpp" +#line 3912 "bison_parser.cpp" break; case 86: /* column_constraint: UNIQUE */ -#line 624 "bison_parser.y" +#line 626 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 3915 "bison_parser.cpp" +#line 3918 "bison_parser.cpp" break; case 87: /* column_constraint: NULL */ -#line 625 "bison_parser.y" +#line 627 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 3921 "bison_parser.cpp" +#line 3924 "bison_parser.cpp" break; case 88: /* column_constraint: NOT NULL */ -#line 626 "bison_parser.y" +#line 628 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 3927 "bison_parser.cpp" +#line 3930 "bison_parser.cpp" break; case 89: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 628 "bison_parser.y" +#line 630 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 3933 "bison_parser.cpp" +#line 3936 "bison_parser.cpp" break; case 90: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 629 "bison_parser.y" +#line 631 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 3939 "bison_parser.cpp" +#line 3942 "bison_parser.cpp" break; case 91: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 637 "bison_parser.y" +#line 639 "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 3950 "bison_parser.cpp" +#line 3953 "bison_parser.cpp" break; case 92: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 643 "bison_parser.y" +#line 645 "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 3961 "bison_parser.cpp" +#line 3964 "bison_parser.cpp" break; case 93: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 649 "bison_parser.y" +#line 651 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3971 "bison_parser.cpp" +#line 3974 "bison_parser.cpp" break; case 94: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 655 "bison_parser.y" +#line 657 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 3981 "bison_parser.cpp" +#line 3984 "bison_parser.cpp" break; case 95: /* opt_exists: IF EXISTS */ -#line 661 "bison_parser.y" +#line 663 "bison_parser.y" { (yyval.bval) = true; } -#line 3987 "bison_parser.cpp" +#line 3990 "bison_parser.cpp" break; case 96: /* opt_exists: %empty */ -#line 662 "bison_parser.y" +#line 664 "bison_parser.y" { (yyval.bval) = false; } -#line 3993 "bison_parser.cpp" +#line 3996 "bison_parser.cpp" break; case 97: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 669 "bison_parser.y" +#line 671 "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 4003 "bison_parser.cpp" +#line 4006 "bison_parser.cpp" break; case 98: /* alter_action: drop_action */ -#line 675 "bison_parser.y" +#line 677 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4009 "bison_parser.cpp" +#line 4012 "bison_parser.cpp" break; case 99: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 677 "bison_parser.y" +#line 679 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4018 "bison_parser.cpp" +#line 4021 "bison_parser.cpp" break; case 100: /* delete_statement: DELETE FROM table_name opt_where */ -#line 687 "bison_parser.y" +#line 689 "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 4029 "bison_parser.cpp" +#line 4032 "bison_parser.cpp" break; case 101: /* truncate_statement: TRUNCATE table_name */ -#line 694 "bison_parser.y" +#line 696 "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 4039 "bison_parser.cpp" +#line 4042 "bison_parser.cpp" break; case 102: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 705 "bison_parser.y" +#line 707 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4047,11 +4050,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4051 "bison_parser.cpp" +#line 4054 "bison_parser.cpp" break; case 103: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 712 "bison_parser.y" +#line 714 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4059,80 +4062,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4063 "bison_parser.cpp" +#line 4066 "bison_parser.cpp" break; case 104: /* opt_column_list: '(' ident_commalist ')' */ -#line 720 "bison_parser.y" +#line 722 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4069 "bison_parser.cpp" +#line 4072 "bison_parser.cpp" break; case 105: /* opt_column_list: %empty */ -#line 721 "bison_parser.y" +#line 723 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4075 "bison_parser.cpp" +#line 4078 "bison_parser.cpp" break; case 106: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 728 "bison_parser.y" +#line 730 "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 4086 "bison_parser.cpp" +#line 4089 "bison_parser.cpp" break; case 107: /* update_clause_commalist: update_clause */ -#line 735 "bison_parser.y" +#line 737 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4095 "bison_parser.cpp" +#line 4098 "bison_parser.cpp" break; case 108: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 739 "bison_parser.y" +#line 741 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4104 "bison_parser.cpp" +#line 4107 "bison_parser.cpp" break; case 109: /* update_clause: IDENTIFIER '=' expr */ -#line 744 "bison_parser.y" +#line 746 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4114 "bison_parser.cpp" +#line 4117 "bison_parser.cpp" break; case 110: /* select_statement: opt_with_clause select_with_paren */ -#line 754 "bison_parser.y" +#line 756 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4123 "bison_parser.cpp" +#line 4126 "bison_parser.cpp" break; case 111: /* select_statement: opt_with_clause select_no_paren */ -#line 758 "bison_parser.y" +#line 760 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4132 "bison_parser.cpp" +#line 4135 "bison_parser.cpp" break; case 112: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 762 "bison_parser.y" +#line 764 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4144,17 +4147,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4148 "bison_parser.cpp" +#line 4151 "bison_parser.cpp" break; case 115: /* select_within_set_operation_no_parentheses: select_clause */ -#line 776 "bison_parser.y" +#line 778 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4154 "bison_parser.cpp" +#line 4157 "bison_parser.cpp" break; case 116: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 777 "bison_parser.y" +#line 779 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4163,23 +4166,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 4167 "bison_parser.cpp" +#line 4170 "bison_parser.cpp" break; case 117: /* select_with_paren: '(' select_no_paren ')' */ -#line 786 "bison_parser.y" +#line 788 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4173 "bison_parser.cpp" +#line 4176 "bison_parser.cpp" break; case 118: /* select_with_paren: '(' select_with_paren ')' */ -#line 787 "bison_parser.y" +#line 789 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4179 "bison_parser.cpp" +#line 4182 "bison_parser.cpp" break; case 119: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 789 "bison_parser.y" +#line 791 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4194,11 +4197,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4198 "bison_parser.cpp" +#line 4201 "bison_parser.cpp" break; case 120: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 803 "bison_parser.y" +#line 805 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4210,59 +4213,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4214 "bison_parser.cpp" +#line 4217 "bison_parser.cpp" break; case 121: /* set_operator: set_type opt_all */ -#line 815 "bison_parser.y" +#line 817 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4223 "bison_parser.cpp" +#line 4226 "bison_parser.cpp" break; case 122: /* set_type: UNION */ -#line 820 "bison_parser.y" +#line 822 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4232 "bison_parser.cpp" +#line 4235 "bison_parser.cpp" break; case 123: /* set_type: INTERSECT */ -#line 824 "bison_parser.y" +#line 826 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4241 "bison_parser.cpp" +#line 4244 "bison_parser.cpp" break; case 124: /* set_type: EXCEPT */ -#line 828 "bison_parser.y" +#line 830 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4250 "bison_parser.cpp" +#line 4253 "bison_parser.cpp" break; case 125: /* opt_all: ALL */ -#line 833 "bison_parser.y" +#line 835 "bison_parser.y" { (yyval.bval) = true; } -#line 4256 "bison_parser.cpp" +#line 4259 "bison_parser.cpp" break; case 126: /* opt_all: %empty */ -#line 834 "bison_parser.y" +#line 836 "bison_parser.y" { (yyval.bval) = false; } -#line 4262 "bison_parser.cpp" +#line 4265 "bison_parser.cpp" break; case 127: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 836 "bison_parser.y" +#line 838 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4272,231 +4275,231 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4276 "bison_parser.cpp" +#line 4279 "bison_parser.cpp" break; case 128: /* opt_distinct: DISTINCT */ -#line 846 "bison_parser.y" +#line 848 "bison_parser.y" { (yyval.bval) = true; } -#line 4282 "bison_parser.cpp" +#line 4285 "bison_parser.cpp" break; case 129: /* opt_distinct: %empty */ -#line 847 "bison_parser.y" +#line 849 "bison_parser.y" { (yyval.bval) = false; } -#line 4288 "bison_parser.cpp" +#line 4291 "bison_parser.cpp" break; case 131: /* opt_from_clause: from_clause */ -#line 851 "bison_parser.y" +#line 853 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4294 "bison_parser.cpp" +#line 4297 "bison_parser.cpp" break; case 132: /* opt_from_clause: %empty */ -#line 852 "bison_parser.y" +#line 854 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4300 "bison_parser.cpp" +#line 4303 "bison_parser.cpp" break; case 133: /* from_clause: FROM table_ref */ -#line 854 "bison_parser.y" +#line 856 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4306 "bison_parser.cpp" +#line 4309 "bison_parser.cpp" break; case 134: /* opt_where: WHERE expr */ -#line 856 "bison_parser.y" +#line 858 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4312 "bison_parser.cpp" +#line 4315 "bison_parser.cpp" break; case 135: /* opt_where: %empty */ -#line 857 "bison_parser.y" +#line 859 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4318 "bison_parser.cpp" +#line 4321 "bison_parser.cpp" break; case 136: /* opt_group: GROUP BY expr_list opt_having */ -#line 859 "bison_parser.y" +#line 861 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4328 "bison_parser.cpp" +#line 4331 "bison_parser.cpp" break; case 137: /* opt_group: %empty */ -#line 864 "bison_parser.y" +#line 866 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4334 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; case 138: /* opt_having: HAVING expr */ -#line 866 "bison_parser.y" +#line 868 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4340 "bison_parser.cpp" +#line 4343 "bison_parser.cpp" break; case 139: /* opt_having: %empty */ -#line 867 "bison_parser.y" +#line 869 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4346 "bison_parser.cpp" +#line 4349 "bison_parser.cpp" break; case 140: /* opt_order: ORDER BY order_list */ -#line 869 "bison_parser.y" +#line 871 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4352 "bison_parser.cpp" +#line 4355 "bison_parser.cpp" break; case 141: /* opt_order: %empty */ -#line 870 "bison_parser.y" +#line 872 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4358 "bison_parser.cpp" +#line 4361 "bison_parser.cpp" break; case 142: /* order_list: order_desc */ -#line 872 "bison_parser.y" +#line 874 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4367 "bison_parser.cpp" +#line 4370 "bison_parser.cpp" break; case 143: /* order_list: order_list ',' order_desc */ -#line 876 "bison_parser.y" +#line 878 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4376 "bison_parser.cpp" +#line 4379 "bison_parser.cpp" break; case 144: /* order_desc: expr opt_order_type */ -#line 881 "bison_parser.y" +#line 883 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4382 "bison_parser.cpp" +#line 4385 "bison_parser.cpp" break; case 145: /* opt_order_type: ASC */ -#line 883 "bison_parser.y" +#line 885 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4388 "bison_parser.cpp" +#line 4391 "bison_parser.cpp" break; case 146: /* opt_order_type: DESC */ -#line 884 "bison_parser.y" +#line 886 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4394 "bison_parser.cpp" +#line 4397 "bison_parser.cpp" break; case 147: /* opt_order_type: %empty */ -#line 885 "bison_parser.y" +#line 887 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4400 "bison_parser.cpp" +#line 4403 "bison_parser.cpp" break; case 148: /* opt_top: TOP int_literal */ -#line 889 "bison_parser.y" +#line 891 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4406 "bison_parser.cpp" +#line 4409 "bison_parser.cpp" break; case 149: /* opt_top: %empty */ -#line 890 "bison_parser.y" +#line 892 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4412 "bison_parser.cpp" +#line 4415 "bison_parser.cpp" break; case 150: /* opt_limit: LIMIT expr */ -#line 892 "bison_parser.y" +#line 894 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4418 "bison_parser.cpp" +#line 4421 "bison_parser.cpp" break; case 151: /* opt_limit: OFFSET expr */ -#line 893 "bison_parser.y" +#line 895 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4424 "bison_parser.cpp" +#line 4427 "bison_parser.cpp" break; case 152: /* opt_limit: LIMIT expr OFFSET expr */ -#line 894 "bison_parser.y" +#line 896 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4430 "bison_parser.cpp" +#line 4433 "bison_parser.cpp" break; case 153: /* opt_limit: LIMIT ALL */ -#line 895 "bison_parser.y" +#line 897 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4436 "bison_parser.cpp" +#line 4439 "bison_parser.cpp" break; case 154: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 896 "bison_parser.y" +#line 898 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4442 "bison_parser.cpp" +#line 4445 "bison_parser.cpp" break; case 155: /* opt_limit: %empty */ -#line 897 "bison_parser.y" +#line 899 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4448 "bison_parser.cpp" +#line 4451 "bison_parser.cpp" break; case 156: /* expr_list: expr_alias */ -#line 902 "bison_parser.y" +#line 904 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4457 "bison_parser.cpp" +#line 4460 "bison_parser.cpp" break; case 157: /* expr_list: expr_list ',' expr_alias */ -#line 906 "bison_parser.y" +#line 908 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4466 "bison_parser.cpp" +#line 4469 "bison_parser.cpp" break; case 158: /* opt_literal_list: literal_list */ -#line 911 "bison_parser.y" +#line 913 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4472 "bison_parser.cpp" +#line 4475 "bison_parser.cpp" break; case 159: /* opt_literal_list: %empty */ -#line 912 "bison_parser.y" +#line 914 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4478 "bison_parser.cpp" +#line 4481 "bison_parser.cpp" break; case 160: /* literal_list: literal */ -#line 914 "bison_parser.y" +#line 916 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4487 "bison_parser.cpp" +#line 4490 "bison_parser.cpp" break; case 161: /* literal_list: literal_list ',' literal */ -#line 918 "bison_parser.y" +#line 920 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4496 "bison_parser.cpp" +#line 4499 "bison_parser.cpp" break; case 162: /* expr_alias: expr opt_alias */ -#line 923 "bison_parser.y" +#line 925 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4504,504 +4507,499 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4508 "bison_parser.cpp" +#line 4511 "bison_parser.cpp" break; case 169: /* operand: '(' expr ')' */ -#line 933 "bison_parser.y" +#line 935 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4514 "bison_parser.cpp" +#line 4517 "bison_parser.cpp" break; case 179: /* operand: '(' select_no_paren ')' */ -#line 935 "bison_parser.y" +#line 937 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4522 "bison_parser.cpp" +#line 4525 "bison_parser.cpp" break; case 182: /* unary_expr: '-' operand */ -#line 941 "bison_parser.y" +#line 943 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4528 "bison_parser.cpp" +#line 4531 "bison_parser.cpp" break; case 183: /* unary_expr: NOT operand */ -#line 942 "bison_parser.y" +#line 944 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4534 "bison_parser.cpp" +#line 4537 "bison_parser.cpp" break; case 184: /* unary_expr: operand ISNULL */ -#line 943 "bison_parser.y" +#line 945 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4540 "bison_parser.cpp" +#line 4543 "bison_parser.cpp" break; case 185: /* unary_expr: operand IS NULL */ -#line 944 "bison_parser.y" +#line 946 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4546 "bison_parser.cpp" +#line 4549 "bison_parser.cpp" break; case 186: /* unary_expr: operand IS NOT NULL */ -#line 945 "bison_parser.y" +#line 947 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4552 "bison_parser.cpp" +#line 4555 "bison_parser.cpp" break; case 188: /* binary_expr: operand '-' operand */ -#line 947 "bison_parser.y" +#line 949 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4558 "bison_parser.cpp" +#line 4561 "bison_parser.cpp" break; case 189: /* binary_expr: operand '+' operand */ -#line 948 "bison_parser.y" +#line 950 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4564 "bison_parser.cpp" +#line 4567 "bison_parser.cpp" break; case 190: /* binary_expr: operand '/' operand */ -#line 949 "bison_parser.y" +#line 951 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4570 "bison_parser.cpp" +#line 4573 "bison_parser.cpp" break; case 191: /* binary_expr: operand '*' operand */ -#line 950 "bison_parser.y" +#line 952 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4576 "bison_parser.cpp" +#line 4579 "bison_parser.cpp" break; case 192: /* binary_expr: operand '%' operand */ -#line 951 "bison_parser.y" +#line 953 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4582 "bison_parser.cpp" +#line 4585 "bison_parser.cpp" break; case 193: /* binary_expr: operand '^' operand */ -#line 952 "bison_parser.y" +#line 954 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4588 "bison_parser.cpp" +#line 4591 "bison_parser.cpp" break; case 194: /* binary_expr: operand LIKE operand */ -#line 953 "bison_parser.y" +#line 955 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4594 "bison_parser.cpp" +#line 4597 "bison_parser.cpp" break; case 195: /* binary_expr: operand NOT LIKE operand */ -#line 954 "bison_parser.y" +#line 956 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4600 "bison_parser.cpp" +#line 4603 "bison_parser.cpp" break; case 196: /* binary_expr: operand ILIKE operand */ -#line 955 "bison_parser.y" +#line 957 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4606 "bison_parser.cpp" +#line 4609 "bison_parser.cpp" break; case 197: /* binary_expr: operand CONCAT operand */ -#line 956 "bison_parser.y" +#line 958 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4612 "bison_parser.cpp" +#line 4615 "bison_parser.cpp" break; case 198: /* logic_expr: expr AND expr */ -#line 958 "bison_parser.y" +#line 960 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4618 "bison_parser.cpp" +#line 4621 "bison_parser.cpp" break; case 199: /* logic_expr: expr OR expr */ -#line 959 "bison_parser.y" +#line 961 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4624 "bison_parser.cpp" +#line 4627 "bison_parser.cpp" break; case 200: /* in_expr: operand IN '(' expr_list ')' */ -#line 961 "bison_parser.y" +#line 963 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4630 "bison_parser.cpp" +#line 4633 "bison_parser.cpp" break; case 201: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 962 "bison_parser.y" +#line 964 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4636 "bison_parser.cpp" +#line 4639 "bison_parser.cpp" break; case 202: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 963 "bison_parser.y" +#line 965 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4642 "bison_parser.cpp" +#line 4645 "bison_parser.cpp" break; case 203: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 964 "bison_parser.y" +#line 966 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4648 "bison_parser.cpp" +#line 4651 "bison_parser.cpp" break; case 204: /* window_expr: operand OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 968 "bison_parser.y" +#line 970 "bison_parser.y" { (yyval.expr) = Expr::makeWindow((yyvsp[-6].expr), (yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 4654 "bison_parser.cpp" +#line 4657 "bison_parser.cpp" break; case 205: /* opt_partition: PARTITION BY expr_list */ -#line 970 "bison_parser.y" +#line 972 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4660 "bison_parser.cpp" +#line 4663 "bison_parser.cpp" break; case 206: /* opt_partition: %empty */ -#line 971 "bison_parser.y" +#line 973 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4666 "bison_parser.cpp" +#line 4669 "bison_parser.cpp" break; case 207: /* opt_frame_clause: frame_type frame_bound */ -#line 973 "bison_parser.y" - { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].sval), nullptr}; } -#line 4672 "bison_parser.cpp" +#line 975 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), nullptr}; } +#line 4675 "bison_parser.cpp" break; case 208: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 974 "bison_parser.y" - { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].sval), (yyvsp[0].sval)}; } -#line 4678 "bison_parser.cpp" +#line 976 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } +#line 4681 "bison_parser.cpp" break; case 209: /* opt_frame_clause: %empty */ -#line 975 "bison_parser.y" +#line 977 "bison_parser.y" { (yyval.frame_description) = nullptr; } -#line 4684 "bison_parser.cpp" +#line 4687 "bison_parser.cpp" break; case 210: /* frame_type: RANGE */ -#line 977 "bison_parser.y" +#line 979 "bison_parser.y" { (yyval.frame_type) = FrameType::kRange; } -#line 4690 "bison_parser.cpp" +#line 4693 "bison_parser.cpp" break; case 211: /* frame_type: ROWS */ -#line 978 "bison_parser.y" +#line 980 "bison_parser.y" { (yyval.frame_type) = FrameType::kRows; } -#line 4696 "bison_parser.cpp" +#line 4699 "bison_parser.cpp" break; case 212: /* frame_type: GROUPS */ -#line 979 "bison_parser.y" +#line 981 "bison_parser.y" { (yyval.frame_type) = FrameType::kGroups; } -#line 4702 "bison_parser.cpp" +#line 4705 "bison_parser.cpp" break; - case 213: /* frame_bound: INTVAL IDENTIFIER */ + case 213: /* frame_bound: UNBOUNDED PRECEDING */ +#line 983 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } +#line 4711 "bison_parser.cpp" + break; + + case 214: /* frame_bound: INTVAL PRECEDING */ +#line 984 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } +#line 4717 "bison_parser.cpp" + break; + + case 215: /* frame_bound: UNBOUNDED FOLLOWING */ #line 985 "bison_parser.y" - { - // This is a rather ugly workaround to get a string out of the INTVAL. We cannot use IDENTIFIER because it must not - // start with a number. STRING is also not possible because it must be in single quotes. - std::stringstream stream; - stream << (yyvsp[-1].ival); - std::string temp_str = stream.str(); - - // The destructor for sval (a.k.a char*) uses free(), so we have to use malloc() rather than new char. +2 for NULL - // terminator and whitespace. - char* char_type = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen((yyvsp[0].sval)) + 2))); - strcpy(char_type, temp_str.c_str()); - strcat(char_type, " "); - strcat(char_type, (yyvsp[0].sval)); - free((yyvsp[0].sval)); - (yyval.sval) = char_type; -} + { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } #line 4723 "bison_parser.cpp" break; - case 214: /* frame_bound: IDENTIFIER IDENTIFIER */ -#line 1001 "bison_parser.y" - { - char* char_type = static_cast(malloc(sizeof(char) * (strlen((yyvsp[-1].sval)) + strlen((yyvsp[0].sval)) + 2))); - strcpy(char_type, (yyvsp[-1].sval)); - strcat(char_type, " "); - strcat(char_type, (yyvsp[0].sval)); - free((yyvsp[-1].sval)); - free((yyvsp[0].sval)); - (yyval.sval) = char_type; -} -#line 4737 "bison_parser.cpp" + case 216: /* frame_bound: INTVAL FOLLOWING */ +#line 986 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } +#line 4729 "bison_parser.cpp" break; - case 215: /* case_expr: CASE expr case_list END */ -#line 1013 "bison_parser.y" + case 217: /* frame_bound: CURRENT_ROW */ +#line 987 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } +#line 4735 "bison_parser.cpp" + break; + + case 218: /* case_expr: CASE expr case_list END */ +#line 992 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4743 "bison_parser.cpp" +#line 4741 "bison_parser.cpp" break; - case 216: /* case_expr: CASE expr case_list ELSE expr END */ -#line 1014 "bison_parser.y" + case 219: /* case_expr: CASE expr case_list ELSE expr END */ +#line 993 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4749 "bison_parser.cpp" +#line 4747 "bison_parser.cpp" break; - case 217: /* case_expr: CASE case_list END */ -#line 1015 "bison_parser.y" + case 220: /* case_expr: CASE case_list END */ +#line 994 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4755 "bison_parser.cpp" +#line 4753 "bison_parser.cpp" break; - case 218: /* case_expr: CASE case_list ELSE expr END */ -#line 1016 "bison_parser.y" + case 221: /* case_expr: CASE case_list ELSE expr END */ +#line 995 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4761 "bison_parser.cpp" +#line 4759 "bison_parser.cpp" break; - case 219: /* case_list: WHEN expr THEN expr */ -#line 1018 "bison_parser.y" + case 222: /* case_list: WHEN expr THEN expr */ +#line 997 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4767 "bison_parser.cpp" +#line 4765 "bison_parser.cpp" break; - case 220: /* case_list: case_list WHEN expr THEN expr */ -#line 1019 "bison_parser.y" + case 223: /* case_list: case_list WHEN expr THEN expr */ +#line 998 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4773 "bison_parser.cpp" +#line 4771 "bison_parser.cpp" break; - case 221: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1021 "bison_parser.y" + case 224: /* exists_expr: EXISTS '(' select_no_paren ')' */ +#line 1000 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4779 "bison_parser.cpp" +#line 4777 "bison_parser.cpp" break; - case 222: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1022 "bison_parser.y" + case 225: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ +#line 1001 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4785 "bison_parser.cpp" +#line 4783 "bison_parser.cpp" break; - case 223: /* comp_expr: operand '=' operand */ -#line 1024 "bison_parser.y" + case 226: /* comp_expr: operand '=' operand */ +#line 1003 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4791 "bison_parser.cpp" +#line 4789 "bison_parser.cpp" break; - case 224: /* comp_expr: operand EQUALS operand */ -#line 1025 "bison_parser.y" + case 227: /* comp_expr: operand EQUALS operand */ +#line 1004 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4797 "bison_parser.cpp" +#line 4795 "bison_parser.cpp" break; - case 225: /* comp_expr: operand NOTEQUALS operand */ -#line 1026 "bison_parser.y" + case 228: /* comp_expr: operand NOTEQUALS operand */ +#line 1005 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4803 "bison_parser.cpp" +#line 4801 "bison_parser.cpp" break; - case 226: /* comp_expr: operand '<' operand */ -#line 1027 "bison_parser.y" + case 229: /* comp_expr: operand '<' operand */ +#line 1006 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4809 "bison_parser.cpp" +#line 4807 "bison_parser.cpp" break; - case 227: /* comp_expr: operand '>' operand */ -#line 1028 "bison_parser.y" + case 230: /* comp_expr: operand '>' operand */ +#line 1007 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4815 "bison_parser.cpp" +#line 4813 "bison_parser.cpp" break; - case 228: /* comp_expr: operand LESSEQ operand */ -#line 1029 "bison_parser.y" + case 231: /* comp_expr: operand LESSEQ operand */ +#line 1008 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4821 "bison_parser.cpp" +#line 4819 "bison_parser.cpp" break; - case 229: /* comp_expr: operand GREATEREQ operand */ -#line 1030 "bison_parser.y" + case 232: /* comp_expr: operand GREATEREQ operand */ +#line 1009 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4827 "bison_parser.cpp" +#line 4825 "bison_parser.cpp" break; - case 230: /* function_expr: IDENTIFIER '(' ')' */ -#line 1032 "bison_parser.y" + case 233: /* function_expr: IDENTIFIER '(' ')' */ +#line 1011 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4833 "bison_parser.cpp" +#line 4831 "bison_parser.cpp" break; - case 231: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 1033 "bison_parser.y" + case 234: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ +#line 1012 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4839 "bison_parser.cpp" +#line 4837 "bison_parser.cpp" break; - case 232: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1035 "bison_parser.y" + case 235: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ +#line 1014 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4845 "bison_parser.cpp" +#line 4843 "bison_parser.cpp" break; - case 233: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1037 "bison_parser.y" + case 236: /* cast_expr: CAST '(' expr AS column_type ')' */ +#line 1016 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4851 "bison_parser.cpp" +#line 4849 "bison_parser.cpp" break; - case 234: /* datetime_field: SECOND */ -#line 1039 "bison_parser.y" + case 237: /* datetime_field: SECOND */ +#line 1018 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4857 "bison_parser.cpp" +#line 4855 "bison_parser.cpp" break; - case 235: /* datetime_field: MINUTE */ -#line 1040 "bison_parser.y" + case 238: /* datetime_field: MINUTE */ +#line 1019 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4863 "bison_parser.cpp" +#line 4861 "bison_parser.cpp" break; - case 236: /* datetime_field: HOUR */ -#line 1041 "bison_parser.y" + case 239: /* datetime_field: HOUR */ +#line 1020 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4869 "bison_parser.cpp" +#line 4867 "bison_parser.cpp" break; - case 237: /* datetime_field: DAY */ -#line 1042 "bison_parser.y" + case 240: /* datetime_field: DAY */ +#line 1021 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4875 "bison_parser.cpp" +#line 4873 "bison_parser.cpp" break; - case 238: /* datetime_field: MONTH */ -#line 1043 "bison_parser.y" + case 241: /* datetime_field: MONTH */ +#line 1022 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4881 "bison_parser.cpp" +#line 4879 "bison_parser.cpp" break; - case 239: /* datetime_field: YEAR */ -#line 1044 "bison_parser.y" + case 242: /* datetime_field: YEAR */ +#line 1023 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4887 "bison_parser.cpp" +#line 4885 "bison_parser.cpp" break; - case 240: /* datetime_field_plural: SECONDS */ -#line 1046 "bison_parser.y" + case 243: /* datetime_field_plural: SECONDS */ +#line 1025 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4893 "bison_parser.cpp" +#line 4891 "bison_parser.cpp" break; - case 241: /* datetime_field_plural: MINUTES */ -#line 1047 "bison_parser.y" + case 244: /* datetime_field_plural: MINUTES */ +#line 1026 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4899 "bison_parser.cpp" +#line 4897 "bison_parser.cpp" break; - case 242: /* datetime_field_plural: HOURS */ -#line 1048 "bison_parser.y" + case 245: /* datetime_field_plural: HOURS */ +#line 1027 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4905 "bison_parser.cpp" +#line 4903 "bison_parser.cpp" break; - case 243: /* datetime_field_plural: DAYS */ -#line 1049 "bison_parser.y" + case 246: /* datetime_field_plural: DAYS */ +#line 1028 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4911 "bison_parser.cpp" +#line 4909 "bison_parser.cpp" break; - case 244: /* datetime_field_plural: MONTHS */ -#line 1050 "bison_parser.y" + case 247: /* datetime_field_plural: MONTHS */ +#line 1029 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4917 "bison_parser.cpp" +#line 4915 "bison_parser.cpp" break; - case 245: /* datetime_field_plural: YEARS */ -#line 1051 "bison_parser.y" + case 248: /* datetime_field_plural: YEARS */ +#line 1030 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4923 "bison_parser.cpp" +#line 4921 "bison_parser.cpp" break; - case 248: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1055 "bison_parser.y" + case 251: /* array_expr: ARRAY '[' expr_list ']' */ +#line 1034 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4929 "bison_parser.cpp" +#line 4927 "bison_parser.cpp" break; - case 249: /* array_index: operand '[' int_literal ']' */ -#line 1057 "bison_parser.y" + case 252: /* array_index: operand '[' int_literal ']' */ +#line 1036 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4935 "bison_parser.cpp" +#line 4933 "bison_parser.cpp" break; - case 250: /* between_expr: operand BETWEEN operand AND operand */ -#line 1059 "bison_parser.y" + case 253: /* between_expr: operand BETWEEN operand AND operand */ +#line 1038 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4941 "bison_parser.cpp" +#line 4939 "bison_parser.cpp" break; - case 251: /* column_name: IDENTIFIER */ -#line 1061 "bison_parser.y" + case 254: /* column_name: IDENTIFIER */ +#line 1040 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4947 "bison_parser.cpp" +#line 4945 "bison_parser.cpp" break; - case 252: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1062 "bison_parser.y" + case 255: /* column_name: IDENTIFIER '.' IDENTIFIER */ +#line 1041 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4953 "bison_parser.cpp" +#line 4951 "bison_parser.cpp" break; - case 253: /* column_name: '*' */ -#line 1063 "bison_parser.y" + case 256: /* column_name: '*' */ +#line 1042 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4959 "bison_parser.cpp" +#line 4957 "bison_parser.cpp" break; - case 254: /* column_name: IDENTIFIER '.' '*' */ -#line 1064 "bison_parser.y" + case 257: /* column_name: IDENTIFIER '.' '*' */ +#line 1043 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4965 "bison_parser.cpp" +#line 4963 "bison_parser.cpp" break; - case 262: /* string_literal: STRING */ -#line 1068 "bison_parser.y" + case 265: /* string_literal: STRING */ +#line 1047 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4971 "bison_parser.cpp" +#line 4969 "bison_parser.cpp" break; - case 263: /* bool_literal: TRUE */ -#line 1070 "bison_parser.y" + case 266: /* bool_literal: TRUE */ +#line 1049 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4977 "bison_parser.cpp" +#line 4975 "bison_parser.cpp" break; - case 264: /* bool_literal: FALSE */ -#line 1071 "bison_parser.y" + case 267: /* bool_literal: FALSE */ +#line 1050 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4983 "bison_parser.cpp" +#line 4981 "bison_parser.cpp" break; - case 265: /* num_literal: FLOATVAL */ -#line 1073 "bison_parser.y" + case 268: /* num_literal: FLOATVAL */ +#line 1052 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4989 "bison_parser.cpp" +#line 4987 "bison_parser.cpp" break; - case 267: /* int_literal: INTVAL */ -#line 1076 "bison_parser.y" + case 270: /* int_literal: INTVAL */ +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4995 "bison_parser.cpp" +#line 4993 "bison_parser.cpp" break; - case 268: /* null_literal: NULL */ -#line 1078 "bison_parser.y" + case 271: /* null_literal: NULL */ +#line 1057 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 5001 "bison_parser.cpp" +#line 4999 "bison_parser.cpp" break; - case 269: /* date_literal: DATE STRING */ -#line 1080 "bison_parser.y" + case 272: /* date_literal: DATE STRING */ +#line 1059 "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 @@ -5012,20 +5010,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5016 "bison_parser.cpp" +#line 5014 "bison_parser.cpp" break; - case 270: /* interval_literal: int_literal duration_field */ -#line 1091 "bison_parser.y" + case 273: /* interval_literal: int_literal duration_field */ +#line 1070 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 5025 "bison_parser.cpp" +#line 5023 "bison_parser.cpp" break; - case 271: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1095 "bison_parser.y" + case 274: /* interval_literal: INTERVAL STRING datetime_field */ +#line 1074 "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 @@ -5037,11 +5035,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5041 "bison_parser.cpp" +#line 5039 "bison_parser.cpp" break; - case 272: /* interval_literal: INTERVAL STRING */ -#line 1106 "bison_parser.y" + case 275: /* interval_literal: INTERVAL STRING */ +#line 1085 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5073,61 +5071,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5077 "bison_parser.cpp" +#line 5075 "bison_parser.cpp" break; - case 273: /* param_expr: '?' */ -#line 1138 "bison_parser.y" + case 276: /* param_expr: '?' */ +#line 1117 "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 5087 "bison_parser.cpp" +#line 5085 "bison_parser.cpp" break; - case 275: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1147 "bison_parser.y" + case 278: /* table_ref: table_ref_commalist ',' table_ref_atomic */ +#line 1126 "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 5098 "bison_parser.cpp" +#line 5096 "bison_parser.cpp" break; - case 279: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1156 "bison_parser.y" + case 282: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ +#line 1135 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5109 "bison_parser.cpp" +#line 5107 "bison_parser.cpp" break; - case 280: /* table_ref_commalist: table_ref_atomic */ -#line 1163 "bison_parser.y" + case 283: /* table_ref_commalist: table_ref_atomic */ +#line 1142 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5118 "bison_parser.cpp" +#line 5116 "bison_parser.cpp" break; - case 281: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1167 "bison_parser.y" + case 284: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ +#line 1146 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5127 "bison_parser.cpp" +#line 5125 "bison_parser.cpp" break; - case 282: /* table_ref_name: table_name opt_table_alias */ -#line 1172 "bison_parser.y" + case 285: /* table_ref_name: table_name opt_table_alias */ +#line 1151 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5135,215 +5133,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5139 "bison_parser.cpp" +#line 5137 "bison_parser.cpp" break; - case 283: /* table_ref_name_no_alias: table_name */ -#line 1180 "bison_parser.y" + case 286: /* table_ref_name_no_alias: table_name */ +#line 1159 "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 5149 "bison_parser.cpp" +#line 5147 "bison_parser.cpp" break; - case 284: /* table_name: IDENTIFIER */ -#line 1186 "bison_parser.y" + case 287: /* table_name: IDENTIFIER */ +#line 1165 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5158 "bison_parser.cpp" +#line 5156 "bison_parser.cpp" break; - case 285: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1190 "bison_parser.y" + case 288: /* table_name: IDENTIFIER '.' IDENTIFIER */ +#line 1169 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5167 "bison_parser.cpp" +#line 5165 "bison_parser.cpp" break; - case 286: /* opt_index_name: IDENTIFIER */ -#line 1195 "bison_parser.y" + case 289: /* opt_index_name: IDENTIFIER */ +#line 1174 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5173 "bison_parser.cpp" +#line 5171 "bison_parser.cpp" break; - case 287: /* opt_index_name: %empty */ -#line 1196 "bison_parser.y" + case 290: /* opt_index_name: %empty */ +#line 1175 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5179 "bison_parser.cpp" +#line 5177 "bison_parser.cpp" break; - case 289: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1198 "bison_parser.y" + case 292: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ +#line 1177 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5185 "bison_parser.cpp" +#line 5183 "bison_parser.cpp" break; - case 291: /* opt_table_alias: %empty */ -#line 1200 "bison_parser.y" + case 294: /* opt_table_alias: %empty */ +#line 1179 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5191 "bison_parser.cpp" +#line 5189 "bison_parser.cpp" break; - case 292: /* alias: AS IDENTIFIER */ -#line 1202 "bison_parser.y" + case 295: /* alias: AS IDENTIFIER */ +#line 1181 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5197 "bison_parser.cpp" +#line 5195 "bison_parser.cpp" break; - case 293: /* alias: IDENTIFIER */ -#line 1203 "bison_parser.y" + case 296: /* alias: IDENTIFIER */ +#line 1182 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5203 "bison_parser.cpp" +#line 5201 "bison_parser.cpp" break; - case 295: /* opt_alias: %empty */ -#line 1205 "bison_parser.y" + case 298: /* opt_alias: %empty */ +#line 1184 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5209 "bison_parser.cpp" +#line 5207 "bison_parser.cpp" break; - case 296: /* opt_locking_clause: opt_locking_clause_list */ -#line 1211 "bison_parser.y" + case 299: /* opt_locking_clause: opt_locking_clause_list */ +#line 1190 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5215 "bison_parser.cpp" +#line 5213 "bison_parser.cpp" break; - case 297: /* opt_locking_clause: %empty */ -#line 1212 "bison_parser.y" + case 300: /* opt_locking_clause: %empty */ +#line 1191 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5221 "bison_parser.cpp" +#line 5219 "bison_parser.cpp" break; - case 298: /* opt_locking_clause_list: locking_clause */ -#line 1214 "bison_parser.y" + case 301: /* opt_locking_clause_list: locking_clause */ +#line 1193 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5230 "bison_parser.cpp" +#line 5228 "bison_parser.cpp" break; - case 299: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1218 "bison_parser.y" + case 302: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ +#line 1197 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5239 "bison_parser.cpp" +#line 5237 "bison_parser.cpp" break; - case 300: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1223 "bison_parser.y" + case 303: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ +#line 1202 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5250 "bison_parser.cpp" +#line 5248 "bison_parser.cpp" break; - case 301: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1229 "bison_parser.y" + case 304: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ +#line 1208 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5261 "bison_parser.cpp" +#line 5259 "bison_parser.cpp" break; - case 302: /* row_lock_mode: UPDATE */ -#line 1236 "bison_parser.y" + case 305: /* row_lock_mode: UPDATE */ +#line 1215 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5267 "bison_parser.cpp" +#line 5265 "bison_parser.cpp" break; - case 303: /* row_lock_mode: NO KEY UPDATE */ -#line 1237 "bison_parser.y" + case 306: /* row_lock_mode: NO KEY UPDATE */ +#line 1216 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5273 "bison_parser.cpp" +#line 5271 "bison_parser.cpp" break; - case 304: /* row_lock_mode: SHARE */ -#line 1238 "bison_parser.y" + case 307: /* row_lock_mode: SHARE */ +#line 1217 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5279 "bison_parser.cpp" +#line 5277 "bison_parser.cpp" break; - case 305: /* row_lock_mode: KEY SHARE */ -#line 1239 "bison_parser.y" + case 308: /* row_lock_mode: KEY SHARE */ +#line 1218 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5285 "bison_parser.cpp" +#line 5283 "bison_parser.cpp" break; - case 306: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1241 "bison_parser.y" + case 309: /* opt_row_lock_policy: SKIP LOCKED */ +#line 1220 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5291 "bison_parser.cpp" +#line 5289 "bison_parser.cpp" break; - case 307: /* opt_row_lock_policy: NOWAIT */ -#line 1242 "bison_parser.y" + case 310: /* opt_row_lock_policy: NOWAIT */ +#line 1221 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5297 "bison_parser.cpp" +#line 5295 "bison_parser.cpp" break; - case 308: /* opt_row_lock_policy: %empty */ -#line 1243 "bison_parser.y" + case 311: /* opt_row_lock_policy: %empty */ +#line 1222 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5303 "bison_parser.cpp" +#line 5301 "bison_parser.cpp" break; - case 310: /* opt_with_clause: %empty */ -#line 1249 "bison_parser.y" + case 313: /* opt_with_clause: %empty */ +#line 1228 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5309 "bison_parser.cpp" +#line 5307 "bison_parser.cpp" break; - case 311: /* with_clause: WITH with_description_list */ -#line 1251 "bison_parser.y" + case 314: /* with_clause: WITH with_description_list */ +#line 1230 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5315 "bison_parser.cpp" +#line 5313 "bison_parser.cpp" break; - case 312: /* with_description_list: with_description */ -#line 1253 "bison_parser.y" + case 315: /* with_description_list: with_description */ +#line 1232 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5324 "bison_parser.cpp" +#line 5322 "bison_parser.cpp" break; - case 313: /* with_description_list: with_description_list ',' with_description */ -#line 1257 "bison_parser.y" + case 316: /* with_description_list: with_description_list ',' with_description */ +#line 1236 "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 5333 "bison_parser.cpp" +#line 5331 "bison_parser.cpp" break; - case 314: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1262 "bison_parser.y" + case 317: /* with_description: IDENTIFIER AS select_with_paren */ +#line 1241 "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 5343 "bison_parser.cpp" +#line 5341 "bison_parser.cpp" break; - case 315: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1272 "bison_parser.y" + case 318: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ +#line 1251 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5351,11 +5349,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5355 "bison_parser.cpp" +#line 5353 "bison_parser.cpp" break; - case 316: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1279 "bison_parser.y" + case 319: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ +#line 1258 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5364,11 +5362,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5368 "bison_parser.cpp" +#line 5366 "bison_parser.cpp" break; - case 317: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1287 "bison_parser.y" + case 320: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ +#line 1266 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5392,89 +5390,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5396 "bison_parser.cpp" +#line 5394 "bison_parser.cpp" break; - case 318: /* opt_join_type: INNER */ -#line 1311 "bison_parser.y" + case 321: /* opt_join_type: INNER */ +#line 1290 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5402 "bison_parser.cpp" +#line 5400 "bison_parser.cpp" break; - case 319: /* opt_join_type: LEFT OUTER */ -#line 1312 "bison_parser.y" + case 322: /* opt_join_type: LEFT OUTER */ +#line 1291 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5408 "bison_parser.cpp" +#line 5406 "bison_parser.cpp" break; - case 320: /* opt_join_type: LEFT */ -#line 1313 "bison_parser.y" + case 323: /* opt_join_type: LEFT */ +#line 1292 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5414 "bison_parser.cpp" +#line 5412 "bison_parser.cpp" break; - case 321: /* opt_join_type: RIGHT OUTER */ -#line 1314 "bison_parser.y" + case 324: /* opt_join_type: RIGHT OUTER */ +#line 1293 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5420 "bison_parser.cpp" +#line 5418 "bison_parser.cpp" break; - case 322: /* opt_join_type: RIGHT */ -#line 1315 "bison_parser.y" + case 325: /* opt_join_type: RIGHT */ +#line 1294 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5426 "bison_parser.cpp" +#line 5424 "bison_parser.cpp" break; - case 323: /* opt_join_type: FULL OUTER */ -#line 1316 "bison_parser.y" + case 326: /* opt_join_type: FULL OUTER */ +#line 1295 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5432 "bison_parser.cpp" +#line 5430 "bison_parser.cpp" break; - case 324: /* opt_join_type: OUTER */ -#line 1317 "bison_parser.y" + case 327: /* opt_join_type: OUTER */ +#line 1296 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5438 "bison_parser.cpp" +#line 5436 "bison_parser.cpp" break; - case 325: /* opt_join_type: FULL */ -#line 1318 "bison_parser.y" + case 328: /* opt_join_type: FULL */ +#line 1297 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5444 "bison_parser.cpp" +#line 5442 "bison_parser.cpp" break; - case 326: /* opt_join_type: CROSS */ -#line 1319 "bison_parser.y" + case 329: /* opt_join_type: CROSS */ +#line 1298 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5450 "bison_parser.cpp" +#line 5448 "bison_parser.cpp" break; - case 327: /* opt_join_type: %empty */ -#line 1320 "bison_parser.y" + case 330: /* opt_join_type: %empty */ +#line 1299 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5456 "bison_parser.cpp" +#line 5454 "bison_parser.cpp" break; - case 331: /* ident_commalist: IDENTIFIER */ -#line 1331 "bison_parser.y" + case 334: /* ident_commalist: IDENTIFIER */ +#line 1310 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5465 "bison_parser.cpp" +#line 5463 "bison_parser.cpp" break; - case 332: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1335 "bison_parser.y" + case 335: /* ident_commalist: ident_commalist ',' IDENTIFIER */ +#line 1314 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5474 "bison_parser.cpp" +#line 5472 "bison_parser.cpp" break; -#line 5478 "bison_parser.cpp" +#line 5476 "bison_parser.cpp" default: break; } @@ -5703,11 +5701,11 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1341 "bison_parser.y" +#line 1320 "bison_parser.y" - // clang-format on - /********************************* +// clang-format on +/********************************* ** Section 4: Additional C code *********************************/ - /* empty */ +/* empty */ diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index a5fb5a6a..90000367 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -36,19 +36,19 @@ private implementation details that can be changed or removed. */ #ifndef YY_HSQL_BISON_PARSER_H_INCLUDED -# define YY_HSQL_BISON_PARSER_H_INCLUDED +#define YY_HSQL_BISON_PARSER_H_INCLUDED /* Debug traces. */ #ifndef HSQL_DEBUG -# if defined YYDEBUG +#if defined YYDEBUG #if YYDEBUG -# define HSQL_DEBUG 1 -# else -# define HSQL_DEBUG 0 -# endif -# else /* ! defined YYDEBUG */ -# define HSQL_DEBUG 0 -# endif /* ! defined YYDEBUG */ -#endif /* ! defined HSQL_DEBUG */ +#define HSQL_DEBUG 1 +#else +#define HSQL_DEBUG 0 +#endif +#else /* ! defined YYDEBUG */ +#define HSQL_DEBUG 0 +#endif /* ! defined YYDEBUG */ +#endif /* ! defined HSQL_DEBUG */ #if HSQL_DEBUG extern int hsql_debug; #endif @@ -80,193 +80,195 @@ extern int hsql_debug; /* Token kinds. */ #ifndef HSQL_TOKENTYPE -# define HSQL_TOKENTYPE - enum hsql_tokentype - { - SQL_HSQL_EMPTY = -2, - SQL_YYEOF = 0, /* "end of file" */ - SQL_HSQL_error = 256, /* error */ - SQL_HSQL_UNDEF = 257, /* "invalid token" */ - SQL_IDENTIFIER = 258, /* IDENTIFIER */ - SQL_STRING = 259, /* STRING */ - SQL_FLOATVAL = 260, /* FLOATVAL */ - SQL_INTVAL = 261, /* INTVAL */ - SQL_DEALLOCATE = 262, /* DEALLOCATE */ - SQL_PARAMETERS = 263, /* PARAMETERS */ - SQL_INTERSECT = 264, /* INTERSECT */ - SQL_TEMPORARY = 265, /* TEMPORARY */ - SQL_TIMESTAMP = 266, /* TIMESTAMP */ - SQL_DISTINCT = 267, /* DISTINCT */ - SQL_NVARCHAR = 268, /* NVARCHAR */ - SQL_RESTRICT = 269, /* RESTRICT */ - SQL_TRUNCATE = 270, /* TRUNCATE */ - SQL_ANALYZE = 271, /* ANALYZE */ - SQL_BETWEEN = 272, /* BETWEEN */ - SQL_CASCADE = 273, /* CASCADE */ - SQL_COLUMNS = 274, /* COLUMNS */ - SQL_CONTROL = 275, /* CONTROL */ - SQL_DEFAULT = 276, /* DEFAULT */ - SQL_EXECUTE = 277, /* EXECUTE */ - SQL_EXPLAIN = 278, /* EXPLAIN */ - SQL_INTEGER = 279, /* INTEGER */ - SQL_NATURAL = 280, /* NATURAL */ - SQL_PREPARE = 281, /* PREPARE */ - SQL_PRIMARY = 282, /* PRIMARY */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ - SQL_REAL = 285, /* REAL */ - SQL_DECIMAL = 286, /* DECIMAL */ - SQL_SMALLINT = 287, /* SMALLINT */ - SQL_BIGINT = 288, /* BIGINT */ - SQL_SPATIAL = 289, /* SPATIAL */ - SQL_VARCHAR = 290, /* VARCHAR */ - SQL_VIRTUAL = 291, /* VIRTUAL */ - SQL_DESCRIBE = 292, /* DESCRIBE */ - SQL_BEFORE = 293, /* BEFORE */ - SQL_COLUMN = 294, /* COLUMN */ - SQL_CREATE = 295, /* CREATE */ - SQL_DELETE = 296, /* DELETE */ - SQL_DIRECT = 297, /* DIRECT */ - SQL_DOUBLE = 298, /* DOUBLE */ - SQL_ESCAPE = 299, /* ESCAPE */ - SQL_EXCEPT = 300, /* EXCEPT */ - SQL_EXISTS = 301, /* EXISTS */ - SQL_EXTRACT = 302, /* EXTRACT */ - SQL_CAST = 303, /* CAST */ - SQL_FORMAT = 304, /* FORMAT */ - SQL_GLOBAL = 305, /* GLOBAL */ - SQL_HAVING = 306, /* HAVING */ - SQL_IMPORT = 307, /* IMPORT */ - SQL_INSERT = 308, /* INSERT */ - SQL_ISNULL = 309, /* ISNULL */ - SQL_OFFSET = 310, /* OFFSET */ - SQL_RENAME = 311, /* RENAME */ - SQL_SCHEMA = 312, /* SCHEMA */ - SQL_SELECT = 313, /* SELECT */ - SQL_SORTED = 314, /* SORTED */ - SQL_TABLES = 315, /* TABLES */ - SQL_UNIQUE = 316, /* UNIQUE */ - SQL_UNLOAD = 317, /* UNLOAD */ - SQL_UPDATE = 318, /* UPDATE */ - SQL_VALUES = 319, /* VALUES */ - SQL_AFTER = 320, /* AFTER */ - SQL_ALTER = 321, /* ALTER */ - SQL_CROSS = 322, /* CROSS */ - SQL_DELTA = 323, /* DELTA */ - SQL_FLOAT = 324, /* FLOAT */ - SQL_GROUP = 325, /* GROUP */ - SQL_GROUPS = 326, /* GROUPS */ - SQL_INDEX = 327, /* INDEX */ - SQL_INNER = 328, /* INNER */ - SQL_LIMIT = 329, /* LIMIT */ - SQL_LOCAL = 330, /* LOCAL */ - SQL_MERGE = 331, /* MERGE */ - SQL_MINUS = 332, /* MINUS */ - SQL_ORDER = 333, /* ORDER */ - SQL_OVER = 334, /* OVER */ - SQL_RANGE = 335, /* RANGE */ - SQL_ROWS = 336, /* ROWS */ - SQL_OUTER = 337, /* OUTER */ - SQL_RIGHT = 338, /* RIGHT */ - SQL_TABLE = 339, /* TABLE */ - SQL_UNION = 340, /* UNION */ - SQL_USING = 341, /* USING */ - SQL_WHERE = 342, /* WHERE */ - SQL_CALL = 343, /* CALL */ - SQL_CASE = 344, /* CASE */ - SQL_CHAR = 345, /* CHAR */ - SQL_COPY = 346, /* COPY */ - SQL_DATE = 347, /* DATE */ - SQL_DATETIME = 348, /* DATETIME */ - SQL_DESC = 349, /* DESC */ - SQL_DROP = 350, /* DROP */ - SQL_ELSE = 351, /* ELSE */ - SQL_FILE = 352, /* FILE */ - SQL_FROM = 353, /* FROM */ - SQL_FULL = 354, /* FULL */ - SQL_HASH = 355, /* HASH */ - SQL_HINT = 356, /* HINT */ - SQL_INTO = 357, /* INTO */ - SQL_JOIN = 358, /* JOIN */ - SQL_LEFT = 359, /* LEFT */ - SQL_LIKE = 360, /* LIKE */ - SQL_LOAD = 361, /* LOAD */ - SQL_LONG = 362, /* LONG */ - SQL_NULL = 363, /* NULL */ - SQL_PARTITION = 364, /* PARTITION */ - SQL_PLAN = 365, /* PLAN */ - SQL_SHOW = 366, /* SHOW */ - SQL_TEXT = 367, /* TEXT */ - SQL_THEN = 368, /* THEN */ - SQL_TIME = 369, /* TIME */ - SQL_VIEW = 370, /* VIEW */ - SQL_WHEN = 371, /* WHEN */ - SQL_WITH = 372, /* WITH */ - SQL_ADD = 373, /* ADD */ - SQL_ALL = 374, /* ALL */ - SQL_AND = 375, /* AND */ - SQL_ASC = 376, /* ASC */ - SQL_END = 377, /* END */ - SQL_FOR = 378, /* FOR */ - SQL_INT = 379, /* INT */ - SQL_KEY = 380, /* KEY */ - SQL_NOT = 381, /* NOT */ - SQL_OFF = 382, /* OFF */ - SQL_SET = 383, /* SET */ - SQL_TOP = 384, /* TOP */ - SQL_AS = 385, /* AS */ - SQL_BY = 386, /* BY */ - SQL_IF = 387, /* IF */ - SQL_IN = 388, /* IN */ - SQL_IS = 389, /* IS */ - SQL_OF = 390, /* OF */ - SQL_ON = 391, /* ON */ - SQL_OR = 392, /* OR */ - SQL_TO = 393, /* TO */ - SQL_NO = 394, /* NO */ - SQL_ARRAY = 395, /* ARRAY */ - SQL_CONCAT = 396, /* CONCAT */ - SQL_ILIKE = 397, /* ILIKE */ - SQL_SECOND = 398, /* SECOND */ - SQL_MINUTE = 399, /* MINUTE */ - SQL_HOUR = 400, /* HOUR */ - SQL_DAY = 401, /* DAY */ - SQL_MONTH = 402, /* MONTH */ - SQL_YEAR = 403, /* YEAR */ - SQL_SECONDS = 404, /* SECONDS */ - SQL_MINUTES = 405, /* MINUTES */ - SQL_HOURS = 406, /* HOURS */ - SQL_DAYS = 407, /* DAYS */ - SQL_MONTHS = 408, /* MONTHS */ - SQL_YEARS = 409, /* YEARS */ - SQL_INTERVAL = 410, /* INTERVAL */ - SQL_TRUE = 411, /* TRUE */ - SQL_FALSE = 412, /* FALSE */ - SQL_BOOLEAN = 413, /* BOOLEAN */ - SQL_TRANSACTION = 414, /* TRANSACTION */ - SQL_BEGIN = 415, /* BEGIN */ - SQL_COMMIT = 416, /* COMMIT */ - SQL_ROLLBACK = 417, /* ROLLBACK */ - SQL_NOWAIT = 418, /* NOWAIT */ - SQL_SKIP = 419, /* SKIP */ - SQL_LOCKED = 420, /* LOCKED */ - SQL_SHARE = 421, /* SHARE */ - SQL_EQUALS = 422, /* EQUALS */ - SQL_NOTEQUALS = 423, /* NOTEQUALS */ - SQL_LESS = 424, /* LESS */ - SQL_GREATER = 425, /* GREATER */ - SQL_LESSEQ = 426, /* LESSEQ */ - SQL_GREATEREQ = 427, /* GREATEREQ */ - SQL_NOTNULL = 428, /* NOTNULL */ - SQL_UMINUS = 429 /* UMINUS */ - }; - typedef enum hsql_tokentype hsql_token_kind_t; +#define HSQL_TOKENTYPE +enum hsql_tokentype { + SQL_HSQL_EMPTY = -2, + SQL_YYEOF = 0, /* "end of file" */ + SQL_HSQL_error = 256, /* error */ + SQL_HSQL_UNDEF = 257, /* "invalid token" */ + SQL_IDENTIFIER = 258, /* IDENTIFIER */ + SQL_STRING = 259, /* STRING */ + SQL_FLOATVAL = 260, /* FLOATVAL */ + SQL_INTVAL = 261, /* INTVAL */ + SQL_DEALLOCATE = 262, /* DEALLOCATE */ + SQL_PARAMETERS = 263, /* PARAMETERS */ + SQL_INTERSECT = 264, /* INTERSECT */ + SQL_TEMPORARY = 265, /* TEMPORARY */ + SQL_TIMESTAMP = 266, /* TIMESTAMP */ + SQL_DISTINCT = 267, /* DISTINCT */ + SQL_NVARCHAR = 268, /* NVARCHAR */ + SQL_RESTRICT = 269, /* RESTRICT */ + SQL_TRUNCATE = 270, /* TRUNCATE */ + SQL_ANALYZE = 271, /* ANALYZE */ + SQL_BETWEEN = 272, /* BETWEEN */ + SQL_CASCADE = 273, /* CASCADE */ + SQL_COLUMNS = 274, /* COLUMNS */ + SQL_CONTROL = 275, /* CONTROL */ + SQL_DEFAULT = 276, /* DEFAULT */ + SQL_EXECUTE = 277, /* EXECUTE */ + SQL_EXPLAIN = 278, /* EXPLAIN */ + SQL_INTEGER = 279, /* INTEGER */ + SQL_NATURAL = 280, /* NATURAL */ + SQL_PREPARE = 281, /* PREPARE */ + SQL_PRIMARY = 282, /* PRIMARY */ + SQL_SCHEMAS = 283, /* SCHEMAS */ + SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ + SQL_REAL = 285, /* REAL */ + SQL_DECIMAL = 286, /* DECIMAL */ + SQL_SMALLINT = 287, /* SMALLINT */ + SQL_BIGINT = 288, /* BIGINT */ + SQL_SPATIAL = 289, /* SPATIAL */ + SQL_VARCHAR = 290, /* VARCHAR */ + SQL_VIRTUAL = 291, /* VIRTUAL */ + SQL_DESCRIBE = 292, /* DESCRIBE */ + SQL_BEFORE = 293, /* BEFORE */ + SQL_COLUMN = 294, /* COLUMN */ + SQL_CREATE = 295, /* CREATE */ + SQL_DELETE = 296, /* DELETE */ + SQL_DIRECT = 297, /* DIRECT */ + SQL_DOUBLE = 298, /* DOUBLE */ + SQL_ESCAPE = 299, /* ESCAPE */ + SQL_EXCEPT = 300, /* EXCEPT */ + SQL_EXISTS = 301, /* EXISTS */ + SQL_EXTRACT = 302, /* EXTRACT */ + SQL_CAST = 303, /* CAST */ + SQL_FORMAT = 304, /* FORMAT */ + SQL_GLOBAL = 305, /* GLOBAL */ + SQL_HAVING = 306, /* HAVING */ + SQL_IMPORT = 307, /* IMPORT */ + SQL_INSERT = 308, /* INSERT */ + SQL_ISNULL = 309, /* ISNULL */ + SQL_OFFSET = 310, /* OFFSET */ + SQL_RENAME = 311, /* RENAME */ + SQL_SCHEMA = 312, /* SCHEMA */ + SQL_SELECT = 313, /* SELECT */ + SQL_SORTED = 314, /* SORTED */ + SQL_TABLES = 315, /* TABLES */ + SQL_UNIQUE = 316, /* UNIQUE */ + SQL_UNLOAD = 317, /* UNLOAD */ + SQL_UPDATE = 318, /* UPDATE */ + SQL_VALUES = 319, /* VALUES */ + SQL_AFTER = 320, /* AFTER */ + SQL_ALTER = 321, /* ALTER */ + SQL_CROSS = 322, /* CROSS */ + SQL_DELTA = 323, /* DELTA */ + SQL_FLOAT = 324, /* FLOAT */ + SQL_GROUP = 325, /* GROUP */ + SQL_INDEX = 326, /* INDEX */ + SQL_INNER = 327, /* INNER */ + SQL_LIMIT = 328, /* LIMIT */ + SQL_LOCAL = 329, /* LOCAL */ + SQL_MERGE = 330, /* MERGE */ + SQL_MINUS = 331, /* MINUS */ + SQL_ORDER = 332, /* ORDER */ + SQL_OVER = 333, /* OVER */ + SQL_OUTER = 334, /* OUTER */ + SQL_RIGHT = 335, /* RIGHT */ + SQL_TABLE = 336, /* TABLE */ + SQL_UNION = 337, /* UNION */ + SQL_USING = 338, /* USING */ + SQL_WHERE = 339, /* WHERE */ + SQL_CALL = 340, /* CALL */ + SQL_CASE = 341, /* CASE */ + SQL_CHAR = 342, /* CHAR */ + SQL_COPY = 343, /* COPY */ + SQL_DATE = 344, /* DATE */ + SQL_DATETIME = 345, /* DATETIME */ + SQL_DESC = 346, /* DESC */ + SQL_DROP = 347, /* DROP */ + SQL_ELSE = 348, /* ELSE */ + SQL_FILE = 349, /* FILE */ + SQL_FROM = 350, /* FROM */ + SQL_FULL = 351, /* FULL */ + SQL_HASH = 352, /* HASH */ + SQL_HINT = 353, /* HINT */ + SQL_INTO = 354, /* INTO */ + SQL_JOIN = 355, /* JOIN */ + SQL_LEFT = 356, /* LEFT */ + SQL_LIKE = 357, /* LIKE */ + SQL_LOAD = 358, /* LOAD */ + SQL_LONG = 359, /* LONG */ + SQL_NULL = 360, /* NULL */ + SQL_PARTITION = 361, /* PARTITION */ + SQL_PLAN = 362, /* PLAN */ + SQL_SHOW = 363, /* SHOW */ + SQL_TEXT = 364, /* TEXT */ + SQL_THEN = 365, /* THEN */ + SQL_TIME = 366, /* TIME */ + SQL_VIEW = 367, /* VIEW */ + SQL_WHEN = 368, /* WHEN */ + SQL_WITH = 369, /* WITH */ + SQL_ADD = 370, /* ADD */ + SQL_ALL = 371, /* ALL */ + SQL_AND = 372, /* AND */ + SQL_ASC = 373, /* ASC */ + SQL_END = 374, /* END */ + SQL_FOR = 375, /* FOR */ + SQL_INT = 376, /* INT */ + SQL_KEY = 377, /* KEY */ + SQL_NOT = 378, /* NOT */ + SQL_OFF = 379, /* OFF */ + SQL_SET = 380, /* SET */ + SQL_TOP = 381, /* TOP */ + SQL_AS = 382, /* AS */ + SQL_BY = 383, /* BY */ + SQL_IF = 384, /* IF */ + SQL_IN = 385, /* IN */ + SQL_IS = 386, /* IS */ + SQL_OF = 387, /* OF */ + SQL_ON = 388, /* ON */ + SQL_OR = 389, /* OR */ + SQL_TO = 390, /* TO */ + SQL_NO = 391, /* NO */ + SQL_ARRAY = 392, /* ARRAY */ + SQL_CONCAT = 393, /* CONCAT */ + SQL_ILIKE = 394, /* ILIKE */ + SQL_SECOND = 395, /* SECOND */ + SQL_MINUTE = 396, /* MINUTE */ + SQL_HOUR = 397, /* HOUR */ + SQL_DAY = 398, /* DAY */ + SQL_MONTH = 399, /* MONTH */ + SQL_YEAR = 400, /* YEAR */ + SQL_SECONDS = 401, /* SECONDS */ + SQL_MINUTES = 402, /* MINUTES */ + SQL_HOURS = 403, /* HOURS */ + SQL_DAYS = 404, /* DAYS */ + SQL_MONTHS = 405, /* MONTHS */ + SQL_YEARS = 406, /* YEARS */ + SQL_INTERVAL = 407, /* INTERVAL */ + SQL_TRUE = 408, /* TRUE */ + SQL_FALSE = 409, /* FALSE */ + SQL_BOOLEAN = 410, /* BOOLEAN */ + SQL_TRANSACTION = 411, /* TRANSACTION */ + SQL_BEGIN = 412, /* BEGIN */ + SQL_COMMIT = 413, /* COMMIT */ + SQL_ROLLBACK = 414, /* ROLLBACK */ + SQL_NOWAIT = 415, /* NOWAIT */ + SQL_SKIP = 416, /* SKIP */ + SQL_LOCKED = 417, /* LOCKED */ + SQL_SHARE = 418, /* SHARE */ + SQL_RANGE = 419, /* RANGE */ + SQL_ROWS = 420, /* ROWS */ + SQL_GROUPS = 421, /* GROUPS */ + SQL_UNBOUNDED = 422, /* UNBOUNDED */ + SQL_FOLLOWING = 423, /* FOLLOWING */ + SQL_PRECEDING = 424, /* PRECEDING */ + SQL_CURRENT_ROW = 425, /* CURRENT_ROW */ + SQL_EQUALS = 426, /* EQUALS */ + SQL_NOTEQUALS = 427, /* NOTEQUALS */ + SQL_LESS = 428, /* LESS */ + SQL_GREATER = 429, /* GREATER */ + SQL_LESSEQ = 430, /* LESSEQ */ + SQL_GREATEREQ = 431, /* GREATEREQ */ + SQL_NOTNULL = 432, /* NOTNULL */ + SQL_UMINUS = 433 /* UMINUS */ +}; +typedef enum hsql_tokentype hsql_token_kind_t; #endif /* Value type. */ -#if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED -union HSQL_STYPE -{ +#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED +union HSQL_STYPE { #line 97 "bison_parser.y" // clang-format on @@ -300,6 +302,7 @@ union HSQL_STYPE hsql::DatetimeField datetime_field; hsql::DropColumnAction* drop_action_t; hsql::Expr* expr; + hsql::FrameBound* frame_bound; hsql::FrameDescription* frame_description; hsql::FrameType frame_type; hsql::GroupByDescription* group_t; @@ -333,32 +336,26 @@ union HSQL_STYPE hsql::RowLockMode lock_mode_t; hsql::RowLockWaitPolicy lock_wait_policy_t; -#line 337 "bison_parser.h" - +#line 342 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; -# define HSQL_STYPE_IS_TRIVIAL 1 -# define HSQL_STYPE_IS_DECLARED 1 +#define HSQL_STYPE_IS_TRIVIAL 1 +#define HSQL_STYPE_IS_DECLARED 1 #endif /* Location type. */ -#if ! defined HSQL_LTYPE && ! defined HSQL_LTYPE_IS_DECLARED +#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED typedef struct HSQL_LTYPE HSQL_LTYPE; -struct HSQL_LTYPE -{ +struct HSQL_LTYPE { int first_line; int first_column; int last_line; int last_column; }; -# define HSQL_LTYPE_IS_DECLARED 1 -# define HSQL_LTYPE_IS_TRIVIAL 1 +#define HSQL_LTYPE_IS_DECLARED 1 +#define HSQL_LTYPE_IS_TRIVIAL 1 #endif - - - -int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); - +int hsql_parse(hsql::SQLParserResult* result, yyscan_t scanner); #endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 979a6c51..82a8ccbd 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -17,8 +17,8 @@ #include "flex_lexer.h" #include -#include #include +#include using namespace hsql; @@ -126,6 +126,7 @@ hsql::DatetimeField datetime_field; hsql::DropColumnAction* drop_action_t; hsql::Expr* expr; + hsql::FrameBound* frame_bound; hsql::FrameDescription* frame_description; hsql::FrameType frame_type; hsql::GroupByDescription* group_t; @@ -205,7 +206,7 @@ %token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT CAST FORMAT GLOBAL HAVING IMPORT %token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED %token TABLES UNIQUE UNLOAD UPDATE VALUES AFTER ALTER CROSS - %token DELTA FLOAT GROUP GROUPS INDEX INNER LIMIT LOCAL MERGE MINUS ORDER OVER RANGE ROWS + %token DELTA FLOAT GROUP INDEX INNER LIMIT LOCAL MERGE MINUS ORDER OVER %token OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR COPY DATE DATETIME %token DESC DROP ELSE FILE FROM FULL HASH HINT INTO JOIN %token LEFT LIKE LOAD LONG NULL PARTITION PLAN SHOW TEXT THEN TIME @@ -216,6 +217,7 @@ %token TRUE FALSE BOOLEAN %token TRANSACTION BEGIN COMMIT ROLLBACK %token NOWAIT SKIP LOCKED SHARE + %token RANGE ROWS GROUPS UNBOUNDED FOLLOWING PRECEDING CURRENT_ROW /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -239,8 +241,8 @@ %type opt_index_name %type file_path prepare_target_query %type opt_frame_clause + %type frame_bound %type frame_type - %type frame_bound %type opt_not_exists opt_exists opt_distinct opt_all %type opt_decimal_specification %type opt_time_precision @@ -978,37 +980,11 @@ frame_type : RANGE { $$ = FrameType::kRange; } | ROWS { $$ = FrameType::kRows; } | GROUPS { $$ = FrameType::kGroups; }; - -// We keep the frame clauses simple by passing string values for the frame bounds. The DBMS has to check if they are -// correct. SQL:2003 allows the following five options, which all consist of two tokens: -// UNBOUNDED PRECEDING | unsigned-integer PRECEDING | CURRENT ROW | unsigned-integer FOLLOWING | UNBOUNDED FOLLOWING -frame_bound : INTVAL IDENTIFIER { - // This is a rather ugly workaround to get a string out of the INTVAL. We cannot use IDENTIFIER because it must not - // start with a number. STRING is also not possible because it must be in single quotes. - std::stringstream stream; - stream << $1; - std::string temp_str = stream.str(); - - // We must allocate a new char* that has enough space for the result. The destructor for sval (a.k.a char*) uses - // free(), so we have to use malloc() rather than new char. +2 for NULL terminator and whitespace. - char* result = static_cast(malloc(sizeof(char) * (temp_str.size() + strlen($2) + 2))); - strcpy(result, temp_str.c_str()); - strcat(result, " "); - strcat(result, $2); - free($2); - $$ = result; -} -| IDENTIFIER IDENTIFIER { - // We must allocate a new char* that has enough space for the result. The destructor for sval (a.k.a char*) uses - // free(), so we have to use malloc() rather than new char. +2 for NULL terminator and whitespace. - char* result = static_cast(malloc(sizeof(char) * (strlen($1) + strlen($2) + 2))); - strcpy(result, $1); - strcat(result, " "); - strcat(result, $2); - free($1); - free($2); - $$ = result; -}; +frame_bound : UNBOUNDED PRECEDING { $$ = new FrameBound{0, kPreceding, true}; } +| INTVAL PRECEDING { $$ = new FrameBound{$1, kPreceding, false}; } +| UNBOUNDED FOLLOWING { $$ = new FrameBound{0, kFollowing, true}; } +| INTVAL FOLLOWING { $$ = new FrameBound{$1, kFollowing, false}; } +| CURRENT_ROW { $$ = new FrameBound{0, kCurrentRow, false}; }; // CASE grammar based on: flex & bison by John Levine // https://www.safaribooksonline.com/library/view/flex-bison/9780596805418/ch04.html#id352665 diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index d6a21f17..c66a1e07 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -2,7 +2,7 @@ #line 3 "flex_lexer.cpp" -#define YY_INT_ALIGNED short int +#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ @@ -251,10 +251,10 @@ /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ -#include -#include #include +#include #include +#include /* end standard C headers. */ @@ -265,7 +265,7 @@ /* C99 systems have . Non-C99 systems may or may not. */ -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -285,41 +285,41 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN -#define INT8_MIN (-128) +#define INT8_MIN (-128) #endif #ifndef INT16_MIN -#define INT16_MIN (-32767-1) +#define INT16_MIN (-32767 - 1) #endif #ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) +#define INT32_MIN (-2147483647 - 1) #endif #ifndef INT8_MAX -#define INT8_MAX (127) +#define INT8_MAX (127) #endif #ifndef INT16_MAX -#define INT16_MAX (32767) +#define INT16_MAX (32767) #endif #ifndef INT32_MAX -#define INT32_MAX (2147483647) +#define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX -#define UINT8_MAX (255U) +#define UINT8_MAX (255U) #endif #ifndef UINT16_MAX -#define UINT16_MAX (65535U) +#define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) +#define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) +#define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ @@ -343,7 +343,7 @@ typedef unsigned int flex_uint32_t; /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((YY_CHAR)(c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -376,7 +376,7 @@ typedef void* yyscan_t; /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin , yyscanner ) +#define YY_NEW_FILE yyrestart(yyin, yyscanner) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -394,11 +394,11 @@ typedef void* yyscan_t; /* The state buf must be large enough to hold one state per character in the main buffer. */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; +typedef struct yy_buffer_state* YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T @@ -409,76 +409,73 @@ typedef size_t yy_size_t; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - + +#define YY_LESS_LINENO(n) +#define YY_LINENO_REWIND_TO(ptr) + /* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) +#define yyless(n) \ + do { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg); \ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } while (0) +#define unput(c) yyunput(c, yyg->yytext_ptr, yyscanner) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; +struct yy_buffer_state { + FILE* yy_input_file; - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ + char* yy_ch_buf; /* input buffer */ + char* yy_buf_pos; /* current position in input buffer */ - /* Size of input buffer in bytes, not including room for EOB + /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + int yy_buf_size; - /* Number of characters read into yy_ch_buf, not including EOB + /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + int yy_n_chars; - /* Whether we "own" the buffer - i.e., we know we created it, + /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ - int yy_is_our_buffer; + int yy_is_our_buffer; - /* Whether this is an "interactive" input source; if so, and + /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ - int yy_is_interactive; + int yy_is_interactive; - /* Whether we're considered to be at the beginning of a line. + /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ - int yy_at_bol; + int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the + /* Whether to try to fill the input buffer when we reach the * end of it. */ - int yy_fill_buffer; + int yy_fill_buffer; - int yy_buffer_status; + int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process + /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of @@ -489,8 +486,7 @@ struct yy_buffer_state * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 - - }; +}; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the @@ -499,59 +495,55 @@ struct yy_buffer_state * * Returns the top of the stack, or NULL. */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) +#define YY_CURRENT_BUFFER (yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] -void yyrestart ( FILE *input_file , yyscan_t yyscanner ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); -void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -void yypop_buffer_state ( yyscan_t yyscanner ); +void yyrestart(FILE* input_file, yyscan_t yyscanner); +void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner); +void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); +void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); +void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void yypop_buffer_state(yyscan_t yyscanner); -static void yyensure_buffer_stack ( yyscan_t yyscanner ); -static void yy_load_buffer_state ( yyscan_t yyscanner ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) +static void yyensure_buffer_stack(yyscan_t yyscanner); +static void yy_load_buffer_state(yyscan_t yyscanner); +static void yy_init_buffer(YY_BUFFER_STATE b, FILE* file, yyscan_t yyscanner); +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER, yyscanner) -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_string(const char* yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_bytes(const char* bytes, int len, yyscan_t yyscanner); -void *yyalloc ( yy_size_t , yyscan_t yyscanner ); -void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); -void yyfree ( void * , yyscan_t yyscanner ); +void* yyalloc(yy_size_t, yyscan_t yyscanner); +void* yyrealloc(void*, yy_size_t, yyscan_t yyscanner); +void yyfree(void*, yyscan_t yyscanner); #define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } +#define yy_set_interactive(is_interactive) \ + { \ + if (!YY_CURRENT_BUFFER) { \ + yyensure_buffer_stack(yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if (!YY_CURRENT_BUFFER) { \ + yyensure_buffer_stack(yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) +#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; @@ -559,2360 +551,1559 @@ typedef int yy_state_type; #define yytext_ptr yytext_r -static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); -static int yy_get_next_buffer ( yyscan_t yyscanner ); -static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); +static yy_state_type yy_get_previous_state(yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans(yy_state_type current_state, yyscan_t yyscanner); +static int yy_get_next_buffer(yyscan_t yyscanner); +static void yynoreturn yy_fatal_error(const char* msg, yyscan_t yyscanner); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 182 -#define YY_END_OF_BUFFER 183 +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (int)(yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; +#define YY_NUM_RULES 186 +#define YY_END_OF_BUFFER 187 /* This struct is not used in this scanner, but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[1272] = - { 0, - 0, 0, 179, 179, 2, 2, 183, 181, 4, 4, - 181, 181, 170, 177, 170, 170, 174, 170, 170, 170, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 170, 179, 180, 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, 165, 0, 1, 0, - 172, 171, 174, 167, 166, 164, 168, 176, 176, 176, - - 176, 176, 176, 12, 176, 176, 176, 19, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 70, 176, 176, 73, 82, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 100, 176, 176, 105, - 108, 109, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 144, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 169, 179, 178, 2, 2, 2, 2, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 175, 0, 171, 5, 176, 7, - 176, 176, 10, 176, 13, 176, 176, 176, 176, 176, - - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 34, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 48, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 58, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 77, 176, 176, 85, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 101, - 176, 176, 176, 106, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 130, 176, 176, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 145, 176, 176, 176, 176, 176, 176, - - 176, 176, 176, 176, 176, 176, 176, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 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, 176, 176, 176, 176, 176, 176, 176, 176, 176, - 20, 176, 22, 23, 24, 176, 176, 176, 29, 176, - 176, 32, 35, 176, 176, 176, 176, 176, 41, 176, - 176, 176, 46, 47, 176, 176, 176, 176, 176, 176, - 176, 56, 176, 176, 60, 61, 176, 176, 65, 176, - 67, 68, 176, 176, 176, 176, 176, 176, 81, 176, - 84, 86, 87, 176, 89, 176, 176, 92, 176, 176, - - 176, 176, 176, 103, 176, 176, 176, 176, 112, 176, - 176, 115, 176, 176, 176, 119, 176, 176, 176, 176, - 124, 176, 176, 176, 176, 132, 133, 176, 176, 176, - 176, 176, 140, 141, 142, 176, 147, 176, 176, 176, - 176, 176, 176, 176, 176, 156, 176, 158, 176, 160, - 161, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 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, 6, 8, 176, 11, 176, 15, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 31, 176, - 176, 176, 176, 176, 40, 176, 176, 176, 176, 176, - - 176, 176, 176, 176, 176, 55, 57, 176, 176, 63, - 176, 69, 71, 176, 74, 75, 176, 176, 176, 176, - 88, 90, 176, 93, 94, 176, 97, 176, 176, 176, - 176, 110, 111, 176, 176, 176, 176, 118, 176, 176, - 122, 176, 176, 176, 176, 131, 176, 176, 176, 137, - 176, 176, 176, 176, 149, 176, 176, 176, 153, 176, - 176, 176, 159, 162, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 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, 176, 14, 176, - 17, 176, 176, 176, 25, 27, 176, 30, 176, 176, - 176, 176, 39, 176, 43, 176, 45, 49, 50, 176, - 52, 176, 176, 59, 62, 64, 66, 72, 76, 176, - 176, 176, 83, 91, 95, 98, 176, 102, 176, 107, - - 176, 176, 176, 176, 120, 176, 176, 125, 127, 129, - 176, 135, 176, 138, 176, 176, 176, 176, 150, 151, - 152, 154, 176, 176, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 9, 16, 18, 21, 176, 26, 28, - - 176, 176, 37, 38, 176, 176, 51, 53, 54, 78, - 176, 176, 96, 99, 176, 176, 176, 116, 117, 176, - 176, 126, 128, 176, 136, 176, 176, 176, 176, 155, - 157, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 176, 33, 176, 42, 44, 176, 80, 104, 176, - 176, 121, 123, 134, 176, 176, 176, 148, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 0, 176, 176, 79, - 176, 114, 139, 143, 176, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 0, 0, 36, 113, 176, 2, - 2, 2, 2, 2, 0, 0, 146, 2, 2, 2, - 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, - 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, - 0, 163, 2, 2, 0, 2, 0, 2, 173, 2, - 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, - 6, 6, 6, 6, 8, 9, 6, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 6, 6, 20, - 21, 22, 6, 1, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 6, 1, 6, 6, 49, 1, 50, 51, 52, 53, - - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 6, 76, 6, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[77] = - { 0, - 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, - 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 1 - } ; - -static const flex_int16_t yy_base[1279] = - { 0, - 0, 0, 653, 632, 76, 0, 610, 8316, 151, 153, - 584, 0, 8316, 8316, 149, 148, 160, 159, 583, 582, - 156, 156, 165, 181, 192, 243, 173, 220, 253, 152, - 171, 215, 245, 248, 289, 288, 0, 300, 340, 383, - 298, 322, 206, 173, 510, 0, 541, 0, 183, 247, - 526, 535, 0, 0, 239, 371, 442, 240, 513, 512, - 461, 537, 591, 643, 691, 743, 375, 449, 790, 457, - 523, 524, 525, 841, 888, 939, 539, 593, 988, 1040, - 591, 645, 657, 642, 456, 265, 8316, 525, 8316, 515, - 953, 980, 1106, 8316, 8316, 8316, 8316, 0, 249, 255, - - 334, 348, 280, 305, 450, 306, 305, 0, 378, 368, - 531, 380, 443, 701, 468, 356, 371, 381, 438, 446, - 754, 439, 459, 489, 509, 526, 572, 571, 572, 582, - 579, 574, 0, 588, 596, 731, 635, 644, 631, 653, - 701, 753, 645, 650, 684, 681, 699, 699, 725, 754, - 0, 761, 746, 768, 762, 788, 801, 784, 798, 798, - 799, 800, 831, 812, 809, 819, 803, 827, 850, 840, - 852, 845, 843, 867, 862, 856, 856, 885, 920, 867, - 861, 895, 8316, 0, 8316, 0, 293, 0, 520, 0, - 506, 1116, 1126, 1137, 0, 0, 0, 0, 983, 1002, - - 1027, 1123, 1174, 1126, 1170, 1220, 1173, 1213, 1226, 1258, - 1262, 1302, 1270, 1314, 1366, 1313, 1362, 1406, 1363, 1415, - 1421, 1470, 1457, 1468, 1411, 1479, 1511, 1511, 1523, 1524, - 1555, 1559, 1568, 1599, 1612, 1617, 1666, 1617, 1652, 1657, - 1686, 1734, 1786, 1684, 1712, 1778, 1787, 1827, 1830, 1851, - 1874, 1843, 1887, 1910, 1739, 1922, 1954, 1752, 1929, 1959, - 1985, 1989, 2003, 2052, 2042, 2043, 2072, 2087, 2106, 2111, - 2132, 2145, 2171, 2183, 2235, 2170, 2185, 2209, 2234, 2263, - 2234, 2287, 2288, 0, 8316, 498, 1163, 0, 899, 0, - 900, 916, 0, 934, 0, 939, 947, 936, 951, 970, - - 977, 1176, 976, 974, 989, 990, 987, 1042, 1027, 1045, - 1032, 1041, 1047, 1056, 1163, 1057, 1056, 1042, 1062, 1120, - 1134, 0, 1148, 1185, 1200, 1210, 1221, 1219, 1223, 1241, - 1256, 1267, 1270, 1281, 1309, 1296, 1316, 1319, 1310, 1315, - 1324, 1321, 1360, 1363, 1365, 1417, 1350, 1359, 0, 1359, - 1386, 1414, 1421, 1463, 1421, 1423, 1420, 1458, 1462, 0, - 1517, 1515, 1516, 1518, 1536, 1553, 1552, 1592, 1558, 1565, - 1575, 1596, 1612, 1624, 1608, 1638, 1635, 1660, 1678, 1672, - 1695, 0, 1697, 1710, 1725, 1734, 1732, 1735, 1744, 1753, - 1765, 1779, 1790, 0, 1789, 1804, 1841, 1793, 1812, 1807, - - 1839, 1893, 1882, 1888, 1948, 1901, 1894, 0, 465, 2353, - 2285, 2346, 2347, 2348, 2346, 2362, 2390, 2393, 2401, 2410, - 2415, 2445, 2444, 2447, 2496, 2495, 2487, 2509, 2537, 2545, - 2563, 2582, 2550, 2595, 2598, 2615, 2647, 2645, 2671, 2673, - 2697, 2709, 2711, 2737, 2750, 2755, 2763, 2791, 2789, 2798, - 2833, 2817, 2845, 2860, 2885, 2886, 2895, 2921, 2930, 2944, - 2950, 2979, 2982, 3008, 3007, 3020, 3032, 3033, 3046, 3058, - 3077, 3083, 3101, 3094, 3126, 3128, 3180, 3158, 3192, 3204, - 3218, 3226, 3244, 3262, 3269, 3283, 3297, 3308, 3322, 3337, - 3389, 3337, 3356, 3372, 3396, 3410, 3426, 3450, 3468, 3454, - - 3492, 3493, 3512, 3515, 3517, 3547, 3561, 3566, 3522, 3576, - 3600, 3614, 3618, 3654, 3658, 3666, 3671, 3698, 3714, 3715, - 3716, 3761, 3759, 3760, 3804, 3803, 3800, 3844, 3852, 3855, - 462, 1899, 1901, 1920, 1925, 1973, 1980, 1997, 1993, 2009, - 0, 2022, 0, 0, 2031, 2020, 2044, 2038, 0, 2041, - 2043, 2043, 0, 2089, 2093, 2089, 2102, 2124, 2112, 2132, - 2132, 2152, 0, 0, 2150, 2158, 2183, 2185, 2219, 2227, - 2225, 0, 2218, 2241, 0, 0, 2263, 2258, 0, 2268, - 0, 2265, 2293, 2286, 2282, 2314, 2348, 2499, 0, 2355, - 0, 0, 0, 2348, 0, 2357, 2416, 0, 2417, 2612, - - 2420, 2427, 2455, 0, 2473, 2475, 2464, 2518, 0, 2540, - 2547, 0, 2557, 2565, 2566, 0, 2563, 2582, 2588, 2609, - 0, 2603, 2604, 2623, 2637, 0, 0, 2651, 2659, 2657, - 2663, 2658, 0, 0, 2675, 2685, 0, 2705, 2696, 2709, - 2739, 2730, 2751, 2761, 2763, 0, 2763, 0, 2814, 0, - 2807, 461, 3890, 3893, 3915, 3918, 3937, 3944, 3956, 3972, - 3992, 3994, 4020, 3995, 4007, 4049, 4048, 4061, 4074, 4089, - 4102, 4116, 4139, 4152, 4158, 4182, 4193, 4196, 4212, 4236, - 4254, 4247, 4278, 4282, 4296, 4320, 4329, 4343, 4373, 4376, - 4397, 4398, 4424, 4426, 4452, 4450, 4474, 4486, 4504, 4512, - - 4484, 4531, 4539, 4556, 4578, 4583, 4587, 4623, 4668, 4632, - 4665, 4676, 4679, 4709, 4712, 4723, 4742, 4762, 4767, 4770, - 4777, 4813, 4817, 4825, 4840, 4866, 4865, 4894, 4895, 4919, - 4920, 4933, 4948, 4973, 4978, 4987, 5002, 5027, 5028, 5036, - 5072, 5077, 5080, 5109, 5122, 5122, 5134, 5160, 5165, 5173, - 5178, 5192, 5214, 5217, 5222, 5221, 5224, 5259, 5265, 5268, - 5301, 5317, 5314, 5350, 5361, 5370, 5362, 5402, 5410, 5411, - 5424, 5445, 432, 0, 0, 2806, 0, 2850, 0, 2857, - 2846, 2875, 2882, 2901, 2891, 2896, 2905, 2925, 0, 2930, - 2938, 2973, 2981, 2998, 0, 3000, 3033, 3040, 3061, 3072, - - 3067, 3091, 3093, 3108, 3124, 0, 0, 3125, 3137, 3131, - 3148, 0, 0, 3137, 0, 0, 3141, 3161, 3226, 3157, - 0, 0, 3167, 0, 0, 3170, 3160, 3186, 3183, 3207, - 3217, 0, 0, 3234, 3235, 3239, 3255, 0, 3274, 3276, - 0, 3290, 3291, 3295, 3283, 0, 3296, 3335, 3364, 3382, - 3387, 3386, 3415, 3418, 0, 3421, 3440, 3443, 0, 3433, - 3456, 3457, 0, 0, 419, 5453, 5456, 5459, 5489, 5506, - 5509, 5511, 5524, 5563, 5550, 5564, 5589, 5598, 5616, 5618, - 5642, 5650, 5664, 5676, 5691, 5702, 5704, 5716, 5730, 5745, - 5738, 5756, 5774, 5792, 5781, 5804, 5828, 5836, 5850, 5864, - - 5811, 5871, 5901, 5885, 5909, 5925, 5939, 5955, 5963, 5983, - 5981, 5999, 6012, 6025, 6043, 6056, 6067, 6068, 6097, 6100, - 6103, 6121, 6145, 6149, 6163, 6174, 6188, 6213, 6214, 6212, - 6238, 6252, 6264, 6267, 6282, 6308, 6306, 6320, 6332, 6350, - 6362, 6364, 6377, 6405, 6419, 6447, 6443, 6472, 6486, 6487, - 6500, 6521, 6529, 6557, 6565, 6576, 414, 3454, 0, 3449, - 0, 3469, 3483, 3492, 3504, 0, 3516, 0, 3545, 3557, - 3562, 3557, 0, 3576, 0, 3577, 0, 0, 0, 3589, - 0, 3602, 3605, 0, 0, 0, 0, 0, 0, 3611, - 3626, 3634, 0, 0, 3617, 0, 3628, 0, 3678, 0, - - 3664, 3678, 3683, 3664, 0, 3724, 3726, 3715, 3717, 0, - 3728, 0, 3738, 0, 3763, 3774, 3779, 3774, 0, 0, - 0, 0, 3786, 3813, 413, 6577, 6582, 6609, 6618, 6627, - 6638, 6647, 6663, 6672, 6681, 6705, 6721, 6735, 6729, 6759, - 6770, 6783, 6789, 6824, 6825, 6833, 6866, 6656, 6868, 6875, - 6889, 6910, 6913, 6919, 6943, 6954, 6957, 6973, 7001, 7006, - 7020, 7035, 7008, 7027, 7051, 7062, 7081, 7092, 7105, 7125, - 7130, 7144, 7149, 7184, 7185, 7183, 7194, 7227, 7230, 7236, - 7260, 7271, 7279, 7307, 7320, 7343, 7356, 7362, 7386, 7392, - 7400, 7416, 417, 0, 0, 0, 0, 3825, 0, 0, - - 3827, 3837, 0, 0, 3843, 3841, 0, 0, 0, 0, - 3867, 3860, 0, 0, 3868, 3887, 3895, 0, 0, 3898, - 3910, 0, 0, 3902, 0, 3908, 3953, 3955, 3973, 0, - 0, 416, 7430, 7444, 7458, 7472, 7483, 7497, 7505, 7519, - 7531, 7533, 7545, 7557, 7559, 7571, 7583, 7585, 7607, 7615, - 7614, 7617, 7650, 7658, 7670, 7675, 7683, 7705, 7719, 7727, - 7745, 7753, 7771, 7779, 7801, 7815, 7829, 7820, 7854, 7855, - 417, 3969, 0, 3986, 0, 0, 3995, 0, 0, 4020, - 4026, 0, 0, 0, 4016, 4035, 4046, 0, 415, 7880, - 7868, 7894, 7906, 7908, 7934, 7942, 7947, 7982, 7984, 7992, - - 7998, 8028, 8036, 8041, 8050, 8055, 411, 303, 4055, 0, - 4050, 0, 0, 0, 4060, 383, 8109, 8090, 8091, 8089, - 8125, 8134, 8138, 8163, 377, 4143, 0, 0, 4091, 363, - 4162, 8177, 8178, 8182, 333, 4108, 0, 330, 4111, 8212, - 331, 4100, 328, 4102, 327, 4104, 326, 4108, 309, 4137, - 283, 4139, 273, 4138, 242, 4147, 241, 4193, 239, 4195, - 226, 8316, 223, 0, 196, 191, 181, 176, 8316, 0, - 8316, 8285, 8290, 186, 8295, 8300, 8305, 8310 - } ; - -static const flex_int16_t yy_def[1279] = - { 0, - 1271, 1, 1272, 1272, 1271, 5, 1271, 1271, 1271, 1271, - 1271, 1273, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1271, 1275, 1271, 1276, 1276, 1271, - 1276, 1277, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1278, 1278, 62, 62, 62, 62, 65, 62, 65, 62, - 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, - 65, 62, 62, 62, 1276, 1271, 1271, 1273, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1271, 1275, 1271, 1276, 1276, 1276, 1277, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 62, 62, - - 62, 65, 65, 65, 65, 65, 65, 62, 62, 65, - 65, 65, 62, 62, 65, 65, 65, 62, 65, 65, - 65, 62, 65, 65, 62, 62, 62, 65, 62, 62, - 65, 65, 65, 65, 62, 62, 65, 65, 62, 62, - 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, - 65, 62, 62, 62, 62, 62, 62, 62, 65, 62, - 62, 62, 62, 1276, 1271, 1271, 1271, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 1276, 1276, - 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, - 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, - 62, 65, 62, 65, 65, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, - 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 65, 65, 65, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, - - 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, - 65, 65, 65, 65, 65, 62, 62, 65, 65, 62, - 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1276, 65, 65, 62, 62, 62, 65, 62, 65, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, - - 65, 65, 65, 62, 62, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, - 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 65, 65, 62, 62, 62, 65, 62, - 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, - 62, 65, 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1276, 65, 65, 65, 65, 62, - 62, 62, 62, 62, 62, 62, 65, 65, 62, 62, - 62, 62, 62, 62, 65, 62, 62, 62, 62, 65, - 62, 62, 62, 62, 65, 62, 62, 62, 62, 62, - - 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, - 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, - 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 65, 62, 62, 62, - 62, 65, 65, 65, 65, 65, 1271, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1276, 62, 62, 65, 65, 65, - 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, - 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, - 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1276, 65, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 1271, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1276, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, - - 65, 65, 62, 62, 62, 62, 1271, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1276, 62, 62, 62, 65, - 65, 65, 65, 62, 1271, 1271, 1274, 1274, 1274, 1276, - 1276, 62, 62, 65, 1271, 1271, 1274, 1276, 1276, 65, - 1271, 1271, 1276, 1276, 1271, 1271, 1276, 1276, 1271, 1271, - 1276, 1276, 1271, 1271, 1276, 1276, 1271, 1271, 1276, 1276, - 1271, 1271, 1276, 1276, 1271, 1276, 1271, 1276, 1271, 1276, - 0, 1271, 1271, 1271, 1271, 1271, 1271, 1271 - } ; - -static const flex_int16_t yy_nxt[8393] = - { 0, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, - - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, - 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, - 95, 99, 105, 100, 187, 86, 106, 109, 138, 101, - 98, 102, 107, 1270, 110, 103, 104, 139, 1269, 182, - - 1268, 111, 108, 113, 112, 1267, 128, 114, 99, 105, - 100, 115, 129, 106, 109, 138, 101, 116, 102, 107, - 117, 110, 103, 104, 139, 118, 182, 119, 111, 108, - 113, 112, 120, 128, 114, 180, 181, 121, 115, 129, - 1266, 140, 130, 1265, 116, 141, 190, 117, 86, 86, - 131, 142, 118, 1263, 119, 1261, 132, 191, 1259, 120, - 195, 196, 180, 181, 121, 122, 86, 86, 140, 130, - 146, 143, 141, 123, 288, 144, 124, 131, 142, 125, - 133, 145, 126, 132, 147, 127, 134, 135, 136, 1257, - 148, 149, 122, 137, 187, 86, 289, 146, 143, 1255, - - 123, 288, 144, 124, 1226, 1226, 125, 133, 145, 126, - 155, 147, 127, 134, 135, 136, 150, 148, 149, 294, - 137, 156, 158, 289, 151, 1253, 159, 157, 152, 295, - 160, 153, 154, 175, 299, 176, 161, 155, 177, 1251, - 1249, 300, 1247, 150, 178, 1245, 294, 1243, 156, 158, - 1241, 151, 179, 159, 157, 152, 295, 160, 153, 154, - 175, 299, 176, 161, 162, 177, 163, 290, 300, 164, - 292, 178, 165, 293, 166, 291, 167, 168, 1238, 179, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 303, 162, 1235, 163, 290, 1230, 164, 292, 319, 165, - - 293, 166, 291, 167, 168, 169, 308, 320, 229, 170, - 199, 301, 171, 172, 230, 199, 309, 303, 302, 173, - 199, 321, 174, 1225, 1216, 319, 1207, 1189, 1171, 1132, - 1093, 1025, 169, 308, 320, 229, 170, 199, 301, 171, - 172, 230, 199, 309, 957, 302, 173, 199, 321, 174, - 193, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 186, 186, 322, 186, 186, 186, 186, 186, 186, - 323, 231, 329, 865, 773, 199, 652, 296, 297, 232, - 186, 186, 186, 199, 310, 233, 200, 199, 201, 311, - 322, 298, 330, 239, 202, 199, 203, 323, 231, 329, - - 204, 205, 199, 199, 296, 297, 232, 317, 318, 531, - 199, 310, 233, 200, 199, 201, 311, 409, 298, 330, - 239, 202, 199, 203, 408, 331, 286, 204, 205, 285, - 199, 284, 198, 197, 317, 318, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 188, 185, 332, 240, - 241, 244, 331, 199, 242, 245, 186, 186, 186, 199, - 243, 246, 333, 206, 304, 305, 306, 207, 307, 199, - 199, 199, 199, 208, 199, 332, 240, 241, 244, 199, - 199, 242, 245, 209, 199, 183, 199, 243, 246, 333, - 206, 304, 305, 306, 207, 307, 199, 199, 199, 199, - - 208, 199, 97, 96, 87, 334, 199, 335, 336, 1271, - 209, 199, 186, 210, 339, 259, 340, 199, 341, 260, - 211, 199, 337, 261, 199, 338, 276, 212, 277, 262, - 213, 278, 334, 342, 335, 336, 199, 199, 47, 199, - 210, 339, 259, 340, 199, 341, 260, 211, 199, 337, - 261, 199, 338, 276, 212, 277, 262, 213, 278, 47, - 342, 1271, 1271, 199, 199, 214, 199, 279, 283, 215, - 347, 199, 199, 216, 348, 280, 1271, 349, 199, 217, - 350, 199, 218, 199, 356, 357, 281, 282, 199, 199, - 1271, 199, 214, 199, 279, 283, 215, 347, 199, 199, - - 216, 348, 280, 199, 349, 199, 217, 350, 199, 218, - 199, 356, 357, 281, 282, 199, 199, 199, 199, 358, - 199, 199, 359, 312, 219, 313, 220, 199, 314, 1271, - 199, 221, 362, 351, 315, 352, 222, 199, 1271, 1271, - 360, 316, 1271, 361, 199, 1271, 358, 363, 199, 359, - 312, 219, 313, 220, 199, 314, 343, 1271, 221, 362, - 351, 315, 352, 222, 199, 223, 344, 360, 316, 199, - 361, 345, 346, 224, 363, 353, 225, 354, 324, 226, - 325, 364, 227, 343, 326, 228, 365, 366, 355, 199, - 1271, 327, 223, 344, 367, 328, 199, 1271, 345, 346, - - 224, 368, 353, 225, 354, 324, 226, 325, 364, 227, - 369, 326, 228, 365, 366, 355, 199, 234, 327, 372, - 373, 367, 328, 235, 236, 237, 376, 370, 368, 379, - 238, 371, 377, 374, 383, 199, 1271, 369, 375, 385, - 1271, 386, 387, 378, 234, 1271, 372, 373, 384, 388, - 235, 236, 237, 376, 370, 380, 379, 238, 371, 377, - 374, 383, 199, 247, 381, 375, 385, 199, 386, 387, - 378, 199, 382, 389, 390, 384, 388, 248, 392, 393, - 394, 399, 380, 249, 250, 391, 400, 199, 1271, 395, - 247, 381, 397, 405, 199, 398, 1271, 1271, 199, 382, - - 389, 390, 406, 1271, 248, 392, 393, 394, 399, 396, - 249, 250, 391, 400, 199, 251, 395, 407, 401, 397, - 405, 199, 398, 252, 402, 532, 533, 253, 199, 406, - 254, 255, 1271, 199, 1271, 1271, 396, 1271, 1271, 1271, - 1271, 1271, 251, 1271, 407, 401, 403, 1271, 199, 534, - 252, 402, 532, 533, 253, 199, 535, 254, 255, 404, - 199, 256, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 257, 403, 199, 536, 534, 537, 258, 199, - 538, 539, 1271, 535, 199, 1271, 404, 1271, 256, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 257, - - 1271, 199, 536, 540, 537, 258, 199, 538, 539, 199, - 541, 199, 263, 199, 264, 545, 546, 265, 199, 199, - 266, 1271, 267, 547, 268, 269, 1271, 411, 199, 199, - 540, 548, 199, 549, 199, 1271, 199, 541, 199, 263, - 199, 264, 545, 546, 265, 199, 199, 266, 199, 267, - 547, 268, 269, 199, 411, 199, 199, 199, 548, 199, - 549, 199, 270, 199, 550, 199, 271, 551, 412, 272, - 273, 552, 553, 199, 554, 199, 274, 555, 556, 275, - 199, 559, 560, 561, 199, 562, 199, 1271, 1271, 270, - 199, 550, 1271, 271, 551, 412, 272, 273, 552, 553, - - 199, 554, 1271, 274, 555, 556, 275, 1271, 559, 560, - 561, 1271, 562, 199, 92, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 193, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 413, 563, 199, 199, - 564, 199, 1271, 199, 414, 417, 199, 1271, 199, 1271, - 565, 199, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 1271, 413, 563, 199, 199, 564, 199, 557, - 199, 414, 417, 199, 418, 199, 415, 565, 199, 416, - - 542, 422, 543, 199, 558, 199, 199, 199, 199, 199, - 199, 566, 1271, 199, 199, 199, 557, 544, 199, 199, - 1271, 418, 1271, 415, 567, 1271, 416, 542, 422, 543, - 199, 558, 199, 199, 199, 199, 199, 199, 566, 199, - 199, 199, 199, 199, 544, 199, 199, 419, 420, 423, - 568, 567, 199, 199, 569, 199, 199, 1271, 570, 199, - 199, 421, 199, 571, 1271, 199, 199, 572, 1271, 1271, - 199, 1271, 199, 1271, 419, 420, 423, 568, 573, 199, - 199, 569, 199, 199, 426, 570, 199, 199, 421, 199, - 571, 424, 199, 199, 572, 199, 431, 199, 425, 199, - - 199, 574, 199, 199, 575, 573, 432, 199, 1271, 1271, - 1271, 426, 1271, 1271, 576, 1271, 199, 1271, 424, 1271, - 199, 1271, 199, 431, 199, 425, 1271, 199, 574, 199, - 199, 575, 577, 432, 199, 427, 428, 429, 578, 430, - 199, 576, 199, 199, 199, 579, 199, 199, 199, 580, - 199, 581, 440, 441, 582, 433, 583, 584, 199, 577, - 434, 1271, 427, 428, 429, 578, 430, 199, 1271, 199, - 1271, 199, 579, 199, 199, 199, 580, 199, 581, 440, - 441, 582, 433, 583, 584, 199, 585, 434, 435, 586, - 436, 587, 590, 437, 591, 199, 199, 199, 199, 438, - - 592, 199, 199, 444, 442, 1271, 439, 199, 199, 1271, - 1271, 199, 593, 585, 1271, 435, 586, 436, 587, 590, - 437, 591, 199, 199, 199, 199, 438, 592, 199, 199, - 444, 442, 199, 439, 199, 199, 199, 199, 199, 593, - 445, 199, 443, 588, 594, 446, 595, 454, 199, 598, - 199, 599, 199, 589, 199, 199, 199, 199, 1271, 199, - 199, 199, 600, 199, 199, 1271, 199, 445, 199, 443, - 588, 594, 446, 595, 454, 199, 598, 199, 599, 199, - 589, 199, 199, 199, 199, 596, 1271, 199, 199, 600, - 452, 1271, 199, 199, 447, 597, 448, 199, 1271, 601, - - 449, 453, 199, 199, 602, 199, 199, 450, 199, 199, - 1271, 451, 596, 199, 1271, 199, 199, 452, 455, 199, - 1271, 447, 597, 448, 199, 199, 601, 449, 453, 199, - 199, 602, 199, 199, 450, 199, 199, 199, 451, 603, - 199, 199, 199, 199, 457, 455, 199, 456, 604, 199, - 199, 199, 199, 199, 199, 605, 199, 199, 606, 458, - 459, 1271, 607, 1271, 199, 1271, 603, 1271, 199, 199, - 199, 457, 1271, 199, 456, 604, 199, 199, 199, 608, - 199, 199, 605, 199, 199, 606, 458, 459, 199, 607, - 199, 609, 199, 612, 462, 460, 199, 199, 461, 199, - - 199, 199, 613, 199, 199, 1271, 608, 1271, 199, 614, - 463, 1271, 1271, 199, 610, 199, 1271, 199, 609, 199, - 612, 462, 460, 1271, 615, 461, 199, 199, 199, 613, - 199, 199, 199, 611, 199, 199, 614, 463, 199, 199, - 199, 610, 464, 199, 199, 616, 617, 199, 199, 618, - 199, 615, 470, 199, 465, 1271, 1271, 199, 199, 199, - 611, 199, 199, 199, 1271, 199, 199, 619, 620, 464, - 199, 199, 616, 617, 199, 199, 618, 199, 199, 470, - 199, 465, 471, 199, 199, 199, 1271, 199, 199, 199, - 199, 466, 1271, 199, 619, 620, 1271, 1271, 199, 199, - - 621, 467, 1271, 472, 622, 199, 468, 469, 623, 471, - 199, 199, 199, 473, 199, 199, 199, 199, 466, 199, - 199, 624, 199, 479, 199, 199, 199, 621, 467, 199, - 472, 622, 199, 468, 469, 623, 625, 1271, 199, 199, - 473, 1271, 1271, 199, 199, 199, 199, 480, 624, 199, - 479, 199, 199, 1271, 626, 1271, 199, 199, 1271, 199, - 199, 1271, 627, 625, 199, 490, 474, 628, 475, 199, - 199, 1271, 199, 629, 480, 199, 630, 631, 493, 199, - 199, 626, 494, 1271, 199, 199, 1271, 199, 199, 627, - 632, 199, 490, 474, 628, 475, 199, 199, 199, 1271, - - 629, 1271, 199, 630, 631, 493, 633, 199, 476, 494, - 477, 199, 199, 481, 634, 199, 635, 632, 199, 199, - 199, 478, 199, 199, 636, 199, 199, 199, 482, 641, - 637, 199, 199, 633, 642, 476, 1271, 477, 199, 638, - 481, 634, 643, 635, 1271, 199, 199, 199, 478, 199, - 199, 636, 1271, 199, 199, 482, 641, 637, 199, 199, - 199, 642, 199, 485, 1271, 199, 638, 199, 483, 643, - 199, 484, 199, 486, 1271, 199, 199, 639, 199, 640, - 1271, 644, 1271, 199, 199, 1271, 199, 199, 199, 199, - 485, 199, 199, 1271, 199, 483, 199, 199, 484, 199, - - 486, 487, 199, 199, 639, 199, 640, 199, 644, 199, - 199, 199, 488, 199, 199, 199, 1271, 645, 199, 199, - 199, 1271, 199, 199, 1271, 1271, 646, 199, 487, 647, - 650, 1271, 199, 651, 199, 1271, 199, 1271, 774, 488, - 775, 199, 1271, 199, 645, 199, 199, 199, 199, 199, - 199, 489, 199, 646, 199, 199, 647, 650, 199, 199, - 651, 491, 199, 1271, 495, 774, 776, 775, 199, 199, - 199, 777, 199, 1271, 199, 199, 492, 199, 489, 199, - 199, 496, 199, 648, 199, 199, 1271, 649, 491, 199, - 199, 495, 199, 776, 497, 199, 199, 1271, 777, 498, - - 199, 199, 1271, 492, 199, 1271, 1271, 199, 496, 1271, - 648, 199, 778, 499, 649, 779, 1271, 199, 199, 199, - 199, 497, 500, 780, 199, 199, 498, 199, 781, 199, - 199, 199, 502, 501, 199, 782, 199, 1271, 199, 778, - 499, 1271, 779, 199, 783, 199, 1271, 199, 199, 500, - 780, 199, 199, 784, 785, 781, 199, 199, 1271, 502, - 501, 199, 782, 199, 506, 199, 1271, 1271, 199, 199, - 199, 783, 199, 508, 786, 199, 503, 787, 507, 199, - 784, 785, 788, 789, 790, 504, 1271, 199, 199, 199, - 1271, 506, 199, 505, 509, 199, 199, 199, 199, 199, - - 508, 786, 199, 503, 787, 507, 199, 1271, 199, 788, - 789, 790, 504, 199, 199, 199, 199, 199, 199, 199, - 505, 509, 791, 199, 199, 199, 510, 792, 511, 199, - 1271, 793, 199, 199, 512, 199, 199, 199, 1271, 1271, - 199, 199, 199, 794, 199, 199, 795, 199, 1271, 791, - 199, 796, 199, 510, 792, 511, 797, 199, 793, 199, - 199, 512, 798, 199, 199, 199, 513, 199, 199, 199, - 794, 515, 199, 795, 199, 199, 1271, 514, 796, 199, - 1271, 199, 1271, 797, 199, 799, 1271, 800, 1271, 798, - 1271, 199, 199, 513, 199, 801, 199, 199, 515, 199, - - 520, 199, 199, 521, 514, 516, 199, 199, 199, 199, - 522, 199, 799, 199, 800, 199, 199, 199, 199, 199, - 517, 199, 801, 199, 199, 802, 803, 520, 199, 199, - 521, 199, 516, 199, 199, 199, 199, 522, 199, 523, - 199, 804, 199, 199, 199, 199, 199, 517, 199, 805, - 1271, 806, 802, 803, 1271, 199, 199, 518, 199, 807, - 528, 199, 199, 808, 199, 199, 523, 524, 804, 199, - 199, 199, 199, 525, 199, 1271, 805, 519, 806, 199, - 199, 199, 199, 1271, 518, 809, 807, 528, 199, 526, - 808, 199, 199, 199, 524, 810, 199, 199, 199, 199, - - 525, 199, 527, 811, 519, 812, 199, 199, 199, 199, - 530, 199, 809, 199, 199, 199, 526, 199, 199, 813, - 199, 199, 810, 199, 199, 814, 199, 815, 529, 527, - 811, 199, 812, 199, 199, 1271, 199, 530, 199, 1271, - 199, 199, 199, 1271, 199, 199, 813, 1271, 199, 1271, - 199, 199, 814, 816, 815, 529, 1271, 1271, 199, 1271, - 199, 199, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 653, 199, 654, 1271, 199, 199, 199, 655, - 816, 199, 199, 199, 199, 1271, 199, 817, 820, 821, - 822, 199, 199, 199, 199, 199, 1271, 199, 1271, 653, - - 199, 654, 199, 199, 199, 199, 655, 199, 199, 199, - 199, 199, 656, 199, 817, 820, 821, 822, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 1271, 199, 199, 199, 199, 657, 199, 656, - 658, 199, 823, 824, 1271, 199, 199, 199, 1271, 827, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 659, - 199, 199, 199, 199, 657, 199, 828, 658, 199, 823, - 824, 199, 199, 199, 199, 660, 827, 661, 199, 199, - 662, 199, 199, 199, 199, 829, 659, 199, 199, 199, - 1271, 199, 199, 828, 1271, 1271, 1271, 830, 199, 1271, - - 1271, 831, 660, 832, 661, 1271, 199, 662, 199, 199, - 1271, 199, 829, 199, 199, 1271, 199, 199, 199, 199, - 663, 199, 664, 199, 830, 199, 199, 818, 831, 667, - 832, 199, 199, 199, 666, 199, 1271, 665, 819, 199, - 199, 199, 199, 668, 199, 199, 1271, 663, 199, 664, - 199, 1271, 199, 199, 818, 199, 667, 833, 199, 199, - 199, 666, 199, 199, 665, 819, 199, 199, 199, 199, - 668, 199, 199, 199, 834, 199, 673, 835, 669, 836, - 199, 199, 199, 199, 833, 671, 199, 837, 1271, 199, - 199, 670, 838, 199, 199, 1271, 199, 839, 199, 199, - - 199, 834, 199, 673, 835, 669, 836, 199, 199, 199, - 199, 1271, 671, 199, 837, 199, 199, 199, 670, 838, - 199, 840, 672, 199, 839, 1271, 199, 199, 199, 841, - 199, 675, 842, 199, 1271, 674, 199, 843, 199, 844, - 199, 199, 199, 199, 199, 676, 1271, 845, 840, 672, - 1271, 199, 825, 826, 199, 199, 841, 199, 675, 842, - 199, 199, 674, 846, 843, 199, 844, 199, 199, 677, - 199, 678, 676, 199, 845, 199, 1271, 199, 199, 825, - 826, 199, 1271, 199, 847, 848, 679, 849, 199, 850, - 846, 199, 1271, 199, 851, 680, 677, 199, 678, 681, - - 199, 199, 199, 199, 199, 1271, 1271, 199, 199, 199, - 199, 847, 848, 679, 849, 852, 850, 199, 199, 199, - 199, 851, 680, 199, 199, 853, 681, 199, 199, 854, - 199, 855, 683, 199, 199, 199, 199, 199, 682, 199, - 1271, 199, 852, 199, 199, 199, 199, 199, 684, 1271, - 199, 856, 853, 1271, 199, 199, 854, 199, 855, 683, - 199, 857, 199, 685, 199, 682, 199, 199, 199, 1271, - 199, 858, 199, 199, 199, 684, 199, 686, 856, 859, - 199, 199, 199, 199, 199, 199, 199, 860, 857, 687, - 685, 199, 861, 199, 199, 1271, 199, 1271, 858, 199, - - 199, 199, 1271, 199, 686, 862, 859, 199, 199, 199, - 199, 1271, 199, 199, 860, 688, 687, 199, 199, 861, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 689, - 1271, 690, 862, 199, 199, 1271, 199, 199, 199, 1271, - 863, 1271, 688, 199, 199, 1271, 1271, 864, 199, 199, - 199, 199, 199, 958, 199, 1271, 689, 692, 690, 1271, - 199, 199, 199, 1271, 199, 199, 199, 863, 199, 1271, - 199, 693, 691, 199, 864, 199, 959, 199, 199, 199, - 958, 199, 694, 960, 692, 1271, 199, 961, 1271, 199, - 199, 199, 1271, 199, 1271, 199, 199, 962, 693, 691, - - 199, 1271, 199, 959, 1271, 199, 199, 963, 199, 694, - 960, 199, 199, 199, 961, 199, 199, 199, 199, 695, - 696, 199, 199, 199, 962, 964, 965, 1271, 697, 1271, - 199, 199, 199, 199, 963, 199, 1271, 966, 199, 199, - 199, 967, 199, 199, 698, 1271, 695, 696, 199, 199, - 1271, 968, 964, 965, 199, 697, 199, 199, 199, 199, - 969, 199, 199, 199, 966, 199, 199, 199, 967, 1271, - 199, 698, 699, 700, 970, 199, 199, 199, 968, 199, - 701, 199, 1271, 199, 199, 1271, 199, 969, 199, 199, - 199, 1271, 199, 199, 1271, 971, 199, 199, 1271, 699, - - 700, 970, 199, 199, 199, 199, 199, 701, 199, 199, - 1271, 199, 199, 199, 972, 199, 199, 1271, 199, 1271, - 702, 703, 971, 199, 973, 199, 1271, 1271, 199, 1271, - 974, 1271, 199, 199, 199, 199, 199, 199, 199, 199, - 704, 972, 199, 705, 199, 199, 706, 702, 703, 1271, - 199, 973, 199, 199, 199, 199, 199, 974, 707, 708, - 199, 199, 199, 199, 199, 199, 199, 704, 199, 199, - 705, 199, 709, 706, 975, 976, 199, 199, 199, 199, - 199, 199, 710, 199, 199, 707, 708, 977, 199, 199, - 199, 1271, 199, 199, 199, 199, 199, 1271, 978, 709, - - 711, 975, 976, 199, 199, 199, 199, 1271, 979, 710, - 199, 199, 712, 1271, 977, 199, 199, 199, 199, 199, - 714, 199, 199, 199, 199, 978, 1271, 711, 199, 1271, - 199, 199, 980, 981, 199, 979, 199, 199, 982, 712, - 199, 199, 713, 199, 199, 199, 199, 714, 983, 199, - 199, 199, 199, 716, 199, 199, 715, 199, 199, 980, - 981, 199, 199, 199, 199, 982, 984, 199, 199, 713, - 985, 986, 199, 199, 199, 983, 987, 1271, 988, 199, - 716, 199, 989, 715, 199, 199, 719, 990, 199, 199, - 993, 199, 994, 984, 199, 1271, 995, 985, 986, 199, - - 996, 199, 717, 987, 199, 988, 199, 1271, 997, 989, - 199, 199, 718, 719, 990, 199, 199, 993, 199, 994, - 720, 199, 199, 995, 998, 1271, 199, 996, 199, 717, - 199, 199, 1271, 199, 199, 997, 999, 199, 199, 718, - 199, 1271, 1271, 199, 199, 199, 721, 720, 199, 199, - 199, 998, 199, 199, 199, 199, 199, 199, 1000, 722, - 1001, 199, 199, 999, 199, 199, 991, 199, 723, 992, - 199, 199, 199, 721, 199, 199, 1002, 199, 1003, 199, - 199, 199, 1271, 199, 724, 1000, 722, 1001, 199, 199, - 199, 199, 199, 991, 1004, 723, 992, 199, 199, 199, - - 1005, 199, 725, 1002, 199, 1003, 1006, 199, 199, 199, - 1271, 724, 1007, 1008, 199, 199, 199, 199, 199, 199, - 1009, 1004, 726, 199, 1010, 199, 1011, 1005, 199, 725, - 199, 199, 199, 1006, 728, 199, 199, 727, 199, 1007, - 1008, 199, 199, 199, 199, 199, 1271, 1009, 729, 726, - 199, 1010, 199, 1011, 199, 199, 1271, 199, 199, 199, - 1012, 728, 1271, 199, 727, 199, 1271, 199, 199, 199, - 199, 199, 733, 199, 1271, 729, 730, 199, 1271, 199, - 1271, 199, 199, 199, 1271, 199, 1013, 1012, 1271, 199, - 199, 199, 1271, 734, 199, 199, 199, 199, 1271, 733, - - 199, 199, 1271, 730, 199, 199, 735, 199, 1271, 199, - 199, 731, 199, 1013, 1271, 199, 199, 199, 199, 199, - 734, 1271, 1014, 199, 736, 199, 1015, 1016, 199, 199, - 732, 199, 199, 735, 199, 199, 199, 1017, 731, 199, - 1018, 199, 199, 737, 199, 199, 199, 1019, 738, 1014, - 199, 736, 199, 1015, 1016, 199, 199, 732, 199, 199, - 1271, 199, 199, 199, 1017, 1020, 199, 1018, 199, 1021, - 737, 199, 199, 1022, 1019, 738, 1271, 199, 1023, 1024, - 1094, 1271, 199, 199, 1095, 199, 199, 741, 199, 199, - 199, 739, 1020, 199, 199, 199, 1021, 740, 199, 199, - - 1022, 199, 1271, 199, 1096, 1023, 1024, 1094, 199, 1097, - 199, 1095, 199, 199, 741, 1271, 199, 199, 739, 743, - 1271, 199, 199, 199, 740, 199, 199, 199, 199, 199, - 199, 1096, 742, 1098, 1271, 199, 1097, 199, 199, 199, - 199, 745, 199, 199, 1099, 199, 743, 199, 744, 1100, - 199, 199, 199, 199, 199, 749, 199, 199, 199, 742, - 1098, 199, 199, 199, 199, 199, 199, 199, 745, 199, - 199, 1099, 199, 199, 199, 744, 1100, 199, 199, 1101, - 199, 1102, 749, 199, 199, 199, 746, 199, 199, 199, - 199, 199, 199, 199, 199, 1103, 199, 199, 1104, 1105, - - 199, 1106, 199, 748, 199, 747, 1101, 199, 1102, 199, - 199, 199, 199, 746, 199, 1107, 199, 750, 199, 199, - 199, 199, 1103, 199, 199, 1104, 1105, 1271, 1106, 199, - 748, 1271, 747, 199, 199, 199, 199, 1108, 199, 199, - 199, 751, 1107, 199, 750, 199, 1109, 752, 199, 199, - 1110, 199, 1111, 199, 199, 753, 1112, 1113, 199, 199, - 199, 1114, 199, 199, 1108, 1271, 1271, 199, 751, 1271, - 1271, 1271, 199, 1109, 752, 1271, 199, 1110, 199, 1111, - 199, 199, 753, 1112, 1113, 199, 199, 199, 1114, 199, - 199, 199, 756, 755, 199, 754, 199, 199, 199, 199, - - 1115, 199, 199, 199, 1271, 1116, 1271, 199, 1117, 1118, - 1119, 1271, 199, 1271, 199, 1271, 199, 199, 199, 756, - 755, 199, 754, 199, 199, 199, 199, 1115, 199, 199, - 199, 199, 1116, 757, 199, 1117, 1118, 1119, 199, 199, - 758, 199, 199, 199, 199, 199, 199, 199, 1120, 759, - 1121, 760, 762, 761, 199, 1122, 1271, 1123, 199, 199, - 757, 199, 199, 1124, 1271, 199, 1271, 758, 199, 199, - 199, 1125, 199, 199, 199, 1120, 759, 1121, 760, 762, - 761, 199, 1122, 763, 1123, 1126, 199, 199, 199, 199, - 1124, 199, 199, 199, 764, 199, 1127, 199, 1125, 199, - - 199, 1271, 765, 1128, 199, 199, 1271, 199, 1271, 1271, - 763, 1271, 1126, 1271, 199, 1129, 1271, 1271, 199, 199, - 199, 764, 199, 1127, 199, 1130, 199, 199, 766, 765, - 1128, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 768, 1129, 199, 199, 199, 1131, 767, 199, 199, - 1271, 1172, 1130, 1173, 1271, 766, 1271, 1271, 1271, 1174, - 199, 1271, 199, 199, 199, 199, 199, 199, 768, 1175, - 199, 199, 199, 1131, 767, 199, 199, 199, 1172, 769, - 1173, 771, 1176, 770, 199, 199, 1174, 199, 199, 199, - 199, 1177, 199, 1178, 772, 199, 1175, 199, 1271, 1271, - - 199, 1271, 1271, 1271, 199, 1271, 769, 1179, 771, 1176, - 770, 199, 199, 1180, 199, 199, 199, 199, 1177, 199, - 1178, 772, 199, 199, 199, 199, 199, 199, 199, 866, - 199, 1181, 867, 199, 1179, 199, 1271, 1271, 199, 1182, - 1180, 199, 1183, 1184, 199, 199, 1271, 1185, 199, 1271, - 199, 199, 199, 199, 199, 199, 866, 199, 1181, 867, - 199, 868, 199, 199, 869, 199, 1182, 199, 199, 1183, - 1184, 199, 199, 199, 1185, 199, 870, 199, 199, 871, - 1271, 199, 872, 199, 199, 1271, 199, 1186, 868, 199, - 199, 869, 199, 1271, 199, 1271, 1187, 1271, 1271, 1188, - - 199, 1271, 199, 870, 199, 199, 871, 873, 1208, 872, - 199, 199, 199, 199, 1186, 1271, 199, 199, 874, 199, - 199, 199, 199, 1187, 199, 199, 1188, 1209, 199, 199, - 199, 199, 199, 199, 873, 1208, 1210, 199, 199, 199, - 199, 199, 875, 199, 199, 874, 199, 199, 199, 199, - 199, 199, 199, 199, 1209, 199, 199, 199, 199, 1211, - 199, 1212, 1213, 1210, 199, 199, 199, 199, 199, 875, - 199, 876, 1214, 199, 199, 199, 1215, 199, 199, 199, - 199, 1227, 877, 199, 199, 199, 1211, 199, 1212, 1213, - 1228, 878, 1271, 199, 199, 199, 1229, 199, 876, 1214, - - 199, 199, 199, 1215, 199, 199, 199, 199, 1227, 877, - 199, 199, 199, 879, 199, 199, 1271, 1228, 878, 199, - 199, 199, 199, 1229, 199, 199, 1237, 199, 199, 1271, - 1242, 199, 199, 1244, 199, 199, 1271, 199, 199, 1246, - 879, 1248, 199, 880, 1226, 1226, 199, 199, 199, 199, - 1250, 199, 199, 1237, 1252, 199, 881, 1242, 1271, 199, - 1244, 199, 199, 1231, 1226, 199, 1246, 1254, 1248, 1256, - 880, 1271, 199, 1258, 199, 199, 199, 1250, 199, 199, - 882, 1252, 1260, 881, 199, 199, 1236, 199, 199, 1271, - 1271, 883, 199, 199, 1254, 1271, 1256, 199, 199, 199, - - 1258, 199, 1271, 199, 1271, 1239, 199, 882, 1271, 1260, - 1271, 199, 199, 1236, 199, 199, 884, 199, 883, 199, - 199, 1262, 199, 1264, 199, 199, 199, 199, 199, 199, - 199, 199, 1239, 199, 887, 885, 199, 886, 199, 1271, - 1271, 199, 199, 884, 199, 199, 1271, 199, 1262, 199, - 1264, 1271, 199, 199, 199, 199, 199, 199, 199, 1271, - 199, 887, 885, 199, 886, 199, 1271, 1271, 199, 199, - 1271, 199, 199, 199, 199, 888, 199, 890, 889, 199, - 1271, 199, 1271, 199, 199, 1271, 1271, 199, 1271, 199, - 1271, 1271, 1271, 199, 199, 1271, 199, 1271, 199, 199, - - 199, 1271, 888, 199, 890, 889, 1271, 1271, 199, 1271, - 199, 891, 1271, 199, 199, 199, 199, 199, 199, 1271, - 199, 199, 199, 199, 1271, 1271, 199, 199, 1271, 199, - 1271, 199, 1271, 1271, 1271, 1271, 199, 1271, 891, 1271, - 199, 199, 199, 1271, 199, 199, 1271, 1271, 1271, 199, - 199, 1271, 1271, 199, 199, 199, 199, 892, 199, 1271, - 199, 1271, 199, 199, 199, 199, 893, 1271, 199, 199, - 1271, 1271, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, - 199, 1271, 199, 199, 892, 894, 1271, 199, 199, 199, - 1271, 199, 199, 893, 1271, 1271, 199, 1271, 896, 1271, - - 1271, 199, 1271, 199, 1271, 199, 199, 1271, 199, 199, - 199, 199, 894, 199, 895, 199, 199, 1271, 199, 897, - 1271, 199, 1271, 1271, 898, 896, 1271, 1271, 199, 1271, - 199, 1271, 199, 199, 199, 199, 199, 199, 199, 1271, - 199, 895, 199, 199, 199, 199, 897, 1271, 199, 1271, - 199, 898, 199, 1271, 199, 199, 199, 199, 1271, 199, - 199, 199, 199, 1271, 199, 1271, 1271, 899, 1271, 199, - 199, 199, 199, 1271, 900, 1271, 199, 199, 199, 199, - 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, - 1271, 1271, 1271, 1271, 899, 1271, 199, 199, 199, 199, - - 199, 900, 1271, 199, 199, 199, 1271, 199, 901, 199, - 199, 1271, 199, 199, 1271, 199, 199, 199, 1271, 903, - 199, 1271, 199, 199, 199, 199, 1271, 199, 1271, 199, - 199, 199, 199, 1271, 199, 901, 1271, 199, 199, 199, - 199, 902, 199, 199, 199, 1271, 903, 199, 199, 199, - 199, 199, 1271, 1271, 1271, 1271, 199, 199, 199, 199, - 1271, 199, 1271, 1271, 199, 199, 199, 199, 902, 199, - 1271, 199, 199, 1271, 199, 199, 199, 199, 1271, 904, - 1271, 1271, 905, 1271, 199, 199, 199, 1271, 1271, 1271, - 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, - - 1271, 199, 199, 199, 199, 1271, 904, 1271, 199, 905, - 1271, 199, 1271, 199, 199, 1271, 199, 906, 199, 199, - 199, 1271, 199, 199, 199, 1271, 908, 199, 907, 199, - 1271, 199, 199, 1271, 1271, 199, 1271, 1271, 1271, 1271, - 1271, 199, 1271, 199, 906, 199, 1271, 199, 1271, 199, - 199, 199, 1271, 908, 199, 907, 199, 1271, 199, 199, - 1271, 1271, 909, 199, 1271, 199, 1271, 199, 199, 1271, - 1271, 1271, 199, 1271, 1271, 1271, 1271, 199, 1271, 1271, - 1271, 1271, 1271, 199, 1271, 199, 1271, 1271, 1271, 909, - 199, 1271, 199, 1271, 199, 199, 910, 1271, 912, 199, - - 199, 199, 1271, 199, 199, 199, 1271, 911, 199, 199, - 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, 199, - 1271, 199, 1271, 910, 199, 912, 1271, 199, 199, 1271, - 199, 1271, 199, 1271, 911, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 1271, 199, 199, 913, 199, 1271, 199, 199, 199, 1271, - 1271, 1271, 1271, 199, 1271, 1271, 1271, 1271, 199, 199, - 1271, 199, 199, 1271, 199, 914, 199, 199, 1271, 199, - 913, 199, 199, 199, 199, 199, 1271, 199, 915, 1271, - 199, 1271, 199, 199, 1271, 199, 916, 199, 199, 1271, - - 199, 1271, 914, 199, 199, 1271, 199, 1271, 199, 199, - 199, 1271, 199, 199, 199, 915, 199, 917, 918, 199, - 199, 1271, 199, 916, 199, 199, 1271, 199, 1271, 1271, - 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, 199, - 199, 1271, 919, 199, 917, 918, 199, 1271, 199, 199, - 199, 199, 199, 199, 1271, 921, 920, 199, 199, 1271, - 1271, 199, 199, 1271, 1271, 1271, 199, 1271, 1271, 919, - 199, 199, 1271, 199, 1271, 199, 199, 199, 199, 199, - 199, 1271, 921, 920, 199, 199, 199, 1271, 199, 199, - 922, 923, 199, 199, 1271, 199, 199, 199, 199, 1271, - - 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 199, 199, 199, 1271, 1271, 1271, 922, 923, 199, - 199, 199, 199, 199, 199, 199, 1271, 1271, 199, 199, - 199, 199, 1271, 924, 925, 1271, 1271, 1271, 199, 199, - 199, 199, 1271, 1271, 1271, 199, 199, 199, 199, 199, - 199, 199, 199, 1271, 926, 199, 199, 199, 199, 199, - 924, 925, 1271, 927, 1271, 199, 199, 199, 199, 199, - 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, 199, - 1271, 926, 199, 199, 199, 1271, 199, 1271, 1271, 1271, - 927, 1271, 199, 199, 199, 928, 199, 1271, 1271, 199, - - 929, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, - 1271, 199, 1271, 930, 199, 1271, 1271, 199, 1271, 199, - 1271, 199, 928, 199, 199, 1271, 199, 929, 199, 1271, - 199, 199, 199, 199, 1271, 199, 199, 1271, 199, 1271, - 930, 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, - 199, 199, 1271, 199, 199, 199, 1271, 199, 199, 199, - 199, 931, 199, 199, 199, 199, 199, 932, 1271, 1271, - 1271, 1271, 199, 199, 199, 199, 1271, 933, 1271, 1271, - 199, 199, 199, 1271, 199, 199, 1271, 1271, 931, 199, - 199, 199, 1271, 199, 932, 934, 1271, 1271, 199, 199, - - 199, 199, 199, 199, 933, 1271, 199, 199, 199, 199, - 199, 1271, 1271, 199, 935, 1271, 199, 1271, 199, 1271, - 1271, 1271, 934, 199, 1271, 199, 199, 1271, 1271, 199, - 199, 1271, 1271, 199, 199, 199, 1271, 199, 1271, 1271, - 199, 935, 199, 199, 936, 199, 937, 1271, 938, 199, - 199, 1271, 199, 199, 199, 199, 1271, 199, 199, 1271, - 199, 1271, 199, 1271, 199, 1271, 1271, 199, 199, 199, - 199, 936, 1271, 937, 1271, 938, 199, 1271, 1271, 199, - 199, 199, 199, 1271, 199, 199, 199, 199, 1271, 199, - 199, 199, 1271, 1271, 199, 199, 199, 199, 939, 940, - - 199, 1271, 1271, 199, 199, 199, 199, 199, 941, 199, - 199, 1271, 1271, 199, 199, 1271, 1271, 199, 942, 199, - 1271, 1271, 199, 199, 199, 939, 940, 199, 199, 1271, - 199, 199, 199, 199, 1271, 941, 199, 199, 199, 1271, - 199, 199, 1271, 199, 199, 942, 199, 199, 199, 199, - 943, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 944, 1271, 199, 945, 199, 199, 199, 199, 199, - 199, 199, 1271, 1271, 199, 199, 1271, 943, 1271, 199, - 199, 199, 1271, 199, 199, 199, 199, 199, 944, 946, - 199, 945, 199, 199, 199, 199, 199, 1271, 199, 199, - - 199, 199, 1271, 947, 199, 199, 1271, 1271, 199, 1271, - 199, 1271, 1271, 199, 1271, 1271, 946, 1271, 1271, 199, - 1271, 199, 1271, 1271, 1271, 199, 199, 199, 199, 1271, - 947, 199, 199, 1271, 199, 199, 199, 199, 1271, 949, - 199, 199, 1271, 948, 1271, 1271, 199, 199, 1271, 199, - 199, 1271, 199, 1271, 199, 950, 1271, 199, 1271, 199, - 1271, 199, 199, 199, 1271, 1271, 949, 1271, 199, 1271, - 948, 1271, 1271, 199, 199, 1271, 199, 199, 951, 199, - 1271, 199, 950, 199, 199, 199, 199, 952, 199, 199, - 199, 199, 199, 1271, 1271, 199, 199, 199, 199, 953, - - 199, 1271, 1271, 1271, 1271, 951, 199, 199, 199, 1271, - 199, 1271, 199, 1271, 952, 199, 199, 199, 199, 199, - 1271, 1271, 199, 199, 199, 199, 953, 199, 199, 1271, - 1271, 1271, 199, 199, 199, 199, 199, 955, 199, 1271, - 199, 199, 1271, 199, 954, 1271, 199, 199, 199, 1271, - 199, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 199, - 199, 1271, 1271, 199, 955, 199, 1271, 199, 199, 1271, - 199, 954, 1271, 199, 199, 199, 1271, 199, 199, 1271, - 199, 199, 1271, 199, 199, 956, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, - - 1271, 199, 1271, 1271, 199, 199, 1026, 199, 1271, 1271, - 1271, 1271, 956, 199, 1271, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1271, 199, 199, - 1271, 199, 1027, 1026, 199, 199, 199, 1028, 1271, 199, - 1271, 199, 199, 1271, 1271, 199, 1271, 199, 1271, 199, - 199, 199, 199, 1271, 199, 199, 199, 199, 1271, 1027, - 199, 199, 199, 199, 1028, 1029, 199, 1271, 199, 199, - 199, 1271, 199, 1271, 199, 1031, 199, 199, 1271, 199, - 199, 199, 199, 1271, 199, 1030, 199, 199, 1032, 199, - 199, 1271, 1029, 199, 199, 1271, 199, 199, 1271, 199, - - 199, 1271, 1031, 199, 1271, 1271, 1271, 199, 1271, 199, - 199, 1271, 1030, 199, 1271, 1032, 199, 199, 1271, 1271, - 199, 199, 199, 199, 1033, 1271, 199, 199, 1271, 199, - 1271, 199, 1271, 199, 199, 1271, 199, 199, 199, 1034, - 1271, 1271, 199, 199, 1036, 1271, 199, 1271, 199, 199, - 1271, 1033, 1035, 1271, 199, 1271, 199, 1271, 199, 1271, - 199, 199, 199, 1271, 199, 199, 1034, 1271, 199, 199, - 199, 1036, 199, 199, 1271, 199, 199, 1271, 199, 1035, - 1037, 199, 1271, 1271, 1271, 1271, 199, 1271, 199, 199, - 199, 199, 1271, 1271, 199, 199, 199, 1271, 1039, 199, - - 1038, 1271, 199, 199, 1271, 199, 199, 1037, 1271, 1271, - 199, 1271, 199, 199, 1271, 199, 1271, 199, 1271, 1271, - 1271, 199, 199, 199, 1040, 1039, 199, 1038, 1041, 199, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, - 199, 1271, 199, 1271, 1271, 1271, 1042, 1271, 199, 199, - 199, 1040, 199, 199, 1271, 1041, 199, 199, 199, 199, - 199, 199, 199, 199, 1045, 199, 199, 199, 199, 199, - 1271, 1043, 1271, 1042, 199, 199, 199, 199, 199, 199, - 1044, 1271, 1046, 199, 199, 199, 199, 199, 1271, 199, - 199, 1045, 199, 199, 1271, 199, 1271, 1271, 1043, 1271, - - 199, 199, 199, 199, 199, 199, 1271, 1044, 1271, 1046, - 199, 199, 199, 199, 199, 1047, 199, 199, 199, 199, - 199, 1049, 199, 1271, 1271, 1271, 199, 199, 199, 199, - 199, 199, 1271, 1048, 1050, 1271, 1271, 199, 199, 1271, - 199, 199, 1047, 199, 1053, 199, 199, 199, 1049, 199, - 199, 199, 1051, 199, 199, 199, 199, 199, 199, 1271, - 1048, 1050, 199, 1271, 199, 199, 199, 199, 1271, 1271, - 1271, 1053, 199, 199, 199, 1271, 199, 199, 199, 1051, - 199, 199, 199, 199, 1271, 199, 199, 1271, 1271, 199, - 199, 199, 1271, 199, 199, 1271, 199, 1271, 1271, 199, - - 199, 199, 1271, 199, 199, 1052, 199, 199, 1271, 199, - 199, 1054, 1271, 199, 1271, 1271, 199, 199, 199, 1271, - 199, 199, 1271, 199, 1271, 199, 1271, 199, 1271, 1055, - 199, 199, 1052, 199, 199, 1271, 199, 199, 1054, 1271, - 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, - 1271, 1271, 199, 1271, 199, 1271, 1055, 199, 199, 1271, - 199, 199, 1271, 199, 1271, 199, 1056, 1271, 199, 199, - 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, 199, - 1271, 199, 1271, 1271, 199, 199, 1271, 199, 199, 1271, - 199, 1271, 199, 1056, 1271, 199, 199, 199, 199, 199, - - 199, 199, 1271, 199, 1057, 1271, 199, 1271, 199, 1058, - 1271, 199, 1271, 199, 199, 199, 199, 199, 1271, 199, - 1271, 1059, 199, 199, 1060, 199, 199, 199, 1271, 199, - 199, 1057, 1061, 1271, 199, 199, 1058, 1271, 1271, 199, - 199, 199, 1271, 199, 199, 199, 199, 199, 1059, 1271, - 1271, 1060, 199, 199, 1271, 1271, 199, 199, 199, 1061, - 199, 199, 1271, 1271, 1271, 199, 199, 1271, 1062, 1271, - 199, 199, 199, 1271, 199, 1271, 199, 1271, 199, 199, - 1271, 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, - 1271, 199, 199, 1271, 1063, 1062, 199, 199, 199, 1271, - - 199, 199, 199, 199, 199, 199, 1271, 199, 1271, 1271, - 199, 1271, 199, 1271, 199, 199, 199, 1271, 199, 1271, - 1271, 1063, 1065, 199, 1271, 199, 1271, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1064, 199, 199, - 199, 199, 199, 199, 1066, 199, 1271, 1271, 199, 1065, - 1067, 1271, 1271, 1271, 199, 1271, 199, 199, 1271, 199, - 199, 199, 199, 199, 1064, 199, 199, 199, 1271, 199, - 199, 1066, 199, 1271, 1271, 199, 1271, 1067, 199, 1271, - 199, 199, 199, 199, 199, 199, 1068, 1271, 199, 199, - 199, 1271, 1271, 199, 199, 1271, 199, 1271, 199, 1271, - - 1069, 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, - 199, 199, 199, 1068, 199, 1271, 199, 199, 199, 1271, - 199, 199, 1271, 199, 199, 199, 1271, 1069, 1271, 1070, - 199, 199, 1271, 1271, 199, 199, 1271, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 1271, 199, 199, 199, - 199, 199, 1071, 1072, 1271, 1271, 1070, 1271, 199, 199, - 199, 199, 1271, 1271, 1073, 199, 199, 199, 199, 199, - 199, 199, 1271, 1271, 199, 199, 199, 199, 199, 1071, - 1072, 1271, 1074, 1271, 199, 199, 199, 199, 199, 1075, - 199, 1073, 1271, 199, 199, 199, 1271, 199, 199, 1271, - - 199, 199, 1271, 199, 1076, 199, 1271, 1271, 199, 1074, - 199, 199, 199, 199, 1271, 199, 1075, 199, 199, 1271, - 199, 199, 1271, 1271, 199, 199, 1271, 199, 199, 1271, - 199, 1076, 199, 1077, 199, 199, 199, 199, 199, 199, - 199, 1271, 199, 1271, 199, 199, 199, 1078, 1271, 1271, - 199, 1271, 199, 1271, 199, 199, 199, 1271, 199, 199, - 1077, 199, 1079, 199, 1271, 199, 199, 1271, 199, 199, - 1271, 199, 1271, 199, 1078, 1080, 199, 199, 199, 199, - 199, 199, 1271, 199, 1081, 199, 199, 1271, 199, 1079, - 1271, 1271, 199, 199, 1271, 199, 199, 199, 199, 199, - - 1271, 1271, 1080, 199, 1082, 199, 1271, 199, 199, 199, - 199, 1081, 199, 199, 1271, 199, 1083, 199, 1271, 199, - 1271, 1271, 199, 199, 199, 199, 199, 1271, 1271, 1271, - 1271, 1082, 1271, 1271, 1271, 199, 199, 199, 199, 199, - 199, 1085, 1271, 1083, 199, 199, 1084, 1271, 1271, 199, - 199, 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 199, - 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 1085, 1086, - 1271, 1271, 199, 1084, 1271, 1271, 199, 199, 199, 199, - 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 1271, - 1271, 199, 199, 1271, 1271, 1271, 1086, 1271, 1087, 1271, - - 1271, 1271, 199, 199, 1271, 199, 1271, 199, 199, 199, - 199, 1088, 199, 1089, 199, 199, 199, 199, 199, 199, - 1271, 1271, 199, 199, 1271, 1087, 199, 1271, 1271, 199, - 199, 1271, 199, 199, 1271, 199, 199, 1271, 1088, 199, - 1089, 1271, 1271, 199, 199, 199, 199, 1271, 1271, 199, - 199, 1091, 1271, 199, 199, 1271, 199, 199, 1271, 199, - 199, 1090, 199, 199, 199, 1271, 199, 1271, 1271, 199, - 1271, 1271, 1271, 199, 199, 1271, 1271, 1271, 1091, 1092, - 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 1090, 199, - 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 1271, - - 199, 199, 199, 1133, 1271, 199, 1092, 199, 199, 199, - 199, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, - 1271, 199, 1271, 199, 199, 199, 1271, 199, 199, 199, - 1133, 1271, 199, 1271, 199, 199, 199, 199, 199, 199, - 199, 1271, 199, 199, 1134, 199, 1271, 1271, 199, 199, - 199, 199, 1271, 199, 199, 199, 1271, 1271, 199, 1271, - 199, 1271, 1135, 199, 1136, 1271, 1271, 199, 199, 199, - 1271, 1134, 199, 199, 199, 1271, 199, 199, 199, 1271, - 199, 199, 1146, 199, 199, 199, 199, 199, 1137, 1135, - 199, 1136, 199, 199, 199, 199, 199, 1271, 199, 199, - - 199, 199, 199, 1138, 199, 199, 1271, 199, 199, 1146, - 199, 199, 199, 199, 1139, 1137, 199, 199, 1271, 199, - 199, 199, 1271, 199, 1271, 199, 199, 1271, 1271, 199, - 1138, 1271, 199, 1271, 199, 199, 1271, 1271, 199, 199, - 199, 1139, 1271, 199, 199, 199, 1271, 1271, 199, 1271, - 199, 1271, 1271, 199, 199, 1140, 199, 1271, 1271, 1141, - 1271, 199, 1142, 1271, 199, 199, 199, 199, 199, 199, - 199, 1271, 199, 1271, 199, 199, 1271, 199, 1271, 1271, - 199, 199, 1140, 199, 1271, 1271, 1141, 1271, 199, 1142, - 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, - - 1143, 199, 199, 199, 199, 199, 1144, 199, 1271, 1271, - 199, 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 199, - 1271, 199, 199, 199, 199, 1271, 199, 1143, 199, 199, - 199, 199, 199, 1144, 199, 1271, 1271, 199, 1271, 1271, - 1271, 1271, 199, 199, 1271, 199, 1271, 1271, 1145, 199, - 199, 199, 1271, 1271, 1271, 199, 199, 199, 199, 199, - 199, 199, 1271, 1271, 199, 199, 199, 1271, 199, 199, - 199, 1271, 1271, 199, 1271, 1145, 1271, 1271, 199, 1271, - 1271, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 1271, - 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 1271, 1271, 199, 199, 199, 1271, 199, 1271, - 1147, 199, 1271, 1271, 199, 199, 1271, 1271, 1271, 1271, - 199, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, - 1148, 199, 1271, 199, 199, 199, 1271, 1147, 199, 1271, - 1271, 199, 199, 199, 1271, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1148, 199, 199, - 1271, 199, 1271, 1271, 199, 1271, 1271, 1271, 1271, 1271, - 199, 1271, 199, 199, 1271, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 1271, 199, 199, 199, 199, 199, - 199, 199, 199, 1271, 199, 1271, 1271, 199, 1271, 199, - - 1271, 1271, 199, 199, 1271, 199, 199, 1271, 199, 1271, - 199, 1271, 1149, 199, 199, 199, 199, 199, 199, 199, - 1271, 199, 1271, 1271, 199, 1271, 199, 1150, 1151, 199, - 1271, 199, 199, 199, 1271, 199, 199, 199, 1271, 1149, - 199, 199, 199, 199, 1271, 199, 199, 199, 1152, 1271, - 199, 1271, 199, 199, 1150, 1151, 199, 1271, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 1152, 1271, 199, 1271, 199, - 199, 199, 1271, 199, 1153, 1271, 199, 199, 199, 199, - 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, - - 1271, 1271, 199, 1154, 1271, 1271, 1271, 199, 199, 1271, - 1271, 1153, 1271, 199, 199, 1271, 199, 1271, 199, 1271, - 1271, 199, 199, 199, 199, 199, 199, 199, 1271, 199, - 1154, 1271, 199, 1271, 199, 1271, 1271, 199, 199, 1271, - 199, 199, 1271, 199, 1271, 199, 1155, 1271, 199, 1271, - 199, 199, 199, 199, 199, 1156, 1157, 1271, 1271, 199, - 199, 199, 1271, 1271, 199, 199, 199, 199, 1271, 1271, - 199, 199, 199, 1155, 199, 199, 199, 199, 199, 199, - 199, 1271, 1156, 1157, 1271, 199, 1271, 199, 199, 1271, - 1158, 1271, 1271, 199, 1271, 199, 1271, 199, 199, 1271, - - 1271, 199, 199, 199, 1271, 1271, 199, 199, 1159, 1160, - 199, 199, 199, 1271, 199, 199, 199, 1158, 199, 1271, - 199, 199, 199, 1161, 1271, 1271, 1271, 199, 199, 199, - 199, 199, 1271, 1271, 1162, 1159, 1160, 199, 199, 199, - 1271, 199, 199, 199, 1271, 199, 1271, 199, 199, 1271, - 1161, 1271, 1271, 1271, 199, 199, 199, 199, 199, 1271, - 199, 1162, 199, 199, 1271, 1163, 199, 199, 1271, 199, - 199, 199, 199, 1271, 1271, 199, 199, 1271, 1271, 1271, - 1271, 199, 1271, 1271, 1271, 1271, 1271, 199, 1271, 199, - 199, 1271, 1163, 1164, 199, 199, 199, 199, 199, 199, - - 199, 1165, 199, 199, 199, 199, 199, 1271, 199, 1271, - 1271, 199, 199, 1271, 199, 1271, 199, 1271, 1271, 199, - 1164, 1271, 199, 1271, 199, 1271, 1271, 199, 1165, 1166, - 1271, 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, - 199, 199, 199, 199, 1167, 1271, 199, 199, 1271, 1271, - 1271, 199, 199, 199, 1271, 199, 1166, 1271, 1271, 1271, - 199, 1271, 1271, 1271, 1271, 199, 1271, 199, 1271, 199, - 1271, 1167, 1271, 1271, 199, 1271, 199, 1271, 199, 199, - 199, 1271, 199, 199, 1168, 1271, 1271, 199, 199, 199, - 1271, 199, 199, 1271, 1271, 199, 199, 199, 1271, 1271, - - 1271, 199, 199, 199, 1271, 199, 1271, 199, 1271, 1271, - 199, 1168, 1271, 1271, 1271, 199, 199, 1271, 199, 199, - 1271, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 1271, 199, 199, 199, 199, 199, 1271, 199, 1271, 1169, - 199, 1271, 1271, 1271, 1271, 199, 199, 1271, 199, 1170, - 1271, 199, 199, 199, 199, 1271, 199, 1271, 199, 199, - 199, 199, 199, 199, 199, 199, 1169, 199, 1271, 1271, - 199, 1271, 199, 1271, 1271, 199, 1170, 199, 199, 199, - 1271, 1271, 1271, 199, 199, 1271, 1271, 1271, 199, 199, - 199, 199, 199, 199, 1271, 1271, 1271, 199, 199, 1271, - - 1271, 1271, 199, 199, 199, 199, 199, 199, 1271, 1190, - 1271, 199, 199, 199, 1271, 1271, 199, 199, 199, 199, - 199, 1271, 1271, 199, 1271, 199, 1271, 199, 1271, 199, - 199, 199, 199, 199, 199, 199, 1190, 1271, 1271, 199, - 199, 199, 1271, 199, 199, 1191, 199, 1271, 1271, 199, - 199, 199, 1271, 1192, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 1271, 199, 1271, 199, 199, 199, - 199, 199, 1191, 1271, 1271, 199, 199, 199, 199, 199, - 1192, 199, 199, 1193, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 1271, - - 1194, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 1193, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1271, 199, 1271, 1271, 1194, 199, 199, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 1195, - 199, 199, 199, 199, 199, 199, 199, 1196, 199, 199, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 199, - 199, 199, 199, 1271, 199, 1271, 1195, 1271, 199, 1271, - 199, 1271, 199, 1271, 1196, 1271, 199, 199, 199, 199, - 199, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, - 199, 199, 1271, 199, 1271, 199, 1198, 1197, 199, 1271, - - 199, 199, 1271, 199, 1271, 199, 199, 1271, 1271, 199, - 199, 1199, 199, 199, 1271, 1271, 199, 199, 199, 199, - 199, 199, 199, 1198, 1197, 199, 1271, 199, 199, 199, - 199, 199, 199, 199, 1271, 199, 199, 1271, 1199, 1271, - 199, 199, 1271, 199, 1271, 199, 199, 1271, 199, 199, - 1271, 199, 1271, 199, 1271, 199, 199, 199, 199, 1201, - 1200, 1271, 199, 199, 1271, 199, 1271, 1271, 199, 1271, - 1271, 199, 199, 199, 1271, 199, 199, 1271, 199, 199, - 199, 199, 199, 199, 199, 1271, 1201, 1200, 1271, 199, - 199, 199, 199, 1271, 1271, 1271, 1271, 199, 199, 199, - - 199, 199, 199, 1271, 1271, 199, 199, 199, 199, 199, - 199, 1271, 1202, 1271, 1271, 199, 199, 199, 199, 1271, - 1271, 1271, 1271, 1271, 199, 199, 199, 199, 199, 1271, - 1271, 199, 199, 1271, 199, 1271, 199, 199, 1271, 1202, - 1203, 199, 199, 1271, 199, 199, 1206, 199, 1271, 1204, - 199, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, - 1271, 199, 1271, 1271, 199, 199, 199, 1203, 199, 1271, - 1205, 1271, 199, 1206, 199, 199, 1204, 199, 199, 1271, - 199, 199, 199, 199, 199, 199, 199, 1271, 199, 1271, - 199, 199, 199, 199, 199, 1271, 1271, 1205, 199, 1271, - - 199, 199, 199, 1271, 199, 1271, 199, 199, 199, 1271, - 199, 199, 199, 1271, 199, 1271, 199, 199, 199, 1217, - 199, 199, 1271, 1271, 199, 199, 199, 199, 199, 1271, - 199, 199, 199, 199, 199, 1218, 199, 199, 199, 1271, - 199, 199, 199, 199, 199, 1271, 1217, 199, 1271, 1271, - 1271, 199, 199, 199, 199, 1271, 1271, 199, 1271, 199, - 199, 199, 1218, 199, 199, 199, 1271, 199, 199, 199, - 199, 199, 199, 199, 1271, 1219, 1271, 199, 199, 199, - 199, 199, 1271, 199, 1271, 1271, 1271, 199, 199, 1271, - 1271, 199, 1271, 199, 1271, 199, 1271, 199, 1271, 199, - - 199, 1271, 1219, 1271, 199, 199, 1271, 199, 199, 1271, - 199, 1271, 199, 1271, 1271, 199, 1271, 199, 199, 1221, - 199, 1220, 1271, 1271, 199, 199, 1271, 199, 199, 199, - 1271, 199, 199, 199, 1271, 199, 1271, 199, 199, 199, - 1271, 1271, 1271, 199, 199, 199, 1221, 1271, 1220, 1271, - 1271, 199, 199, 1271, 199, 199, 199, 1271, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 1271, - 199, 199, 199, 199, 1271, 1271, 199, 199, 1223, 1271, - 1224, 199, 1222, 1271, 1271, 199, 199, 199, 199, 199, - 199, 199, 1271, 199, 199, 199, 199, 1271, 199, 199, - - 199, 199, 1271, 199, 199, 1223, 1271, 1224, 199, 1222, - 1231, 1226, 199, 199, 199, 1271, 1232, 199, 199, 1271, - 199, 199, 199, 199, 199, 1271, 199, 199, 199, 1233, - 1271, 1271, 1271, 1271, 199, 199, 199, 199, 1271, 199, - 1271, 1271, 1271, 1232, 199, 199, 1271, 199, 199, 199, - 1271, 199, 1271, 199, 199, 199, 1233, 1271, 199, 1271, - 199, 199, 199, 199, 199, 199, 199, 199, 1271, 199, - 199, 199, 199, 199, 199, 1271, 1271, 1271, 199, 199, - 1271, 1271, 199, 199, 1271, 199, 1271, 199, 1271, 199, - 1271, 1271, 199, 199, 199, 1271, 199, 199, 199, 1234, - - 199, 199, 1271, 199, 199, 199, 199, 199, 199, 199, - 199, 1271, 1271, 199, 199, 199, 199, 1240, 1271, 1271, - 199, 1271, 199, 199, 199, 1271, 1234, 199, 1271, 1271, - 199, 199, 1271, 1271, 199, 199, 199, 1271, 1271, 1271, - 199, 199, 199, 1271, 1240, 199, 1271, 199, 1271, 199, - 199, 199, 199, 1271, 199, 1271, 1271, 199, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 199, 1271, 199, 1271, 1271, 1271, 1271, 199, - 1271, 1271, 1271, 1271, 199, 46, 46, 46, 46, 46, - 88, 1271, 1271, 88, 88, 184, 184, 184, 1271, 184, - - 186, 1271, 186, 186, 186, 189, 1271, 189, 189, 189, - 199, 1271, 199, 199, 199, 7, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271 - - } ; - -static const flex_int16_t yy_chk[8393] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 9, 9, 10, 10, 15, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, - 18, 21, 22, 21, 49, 49, 22, 23, 30, 21, - 1274, 21, 22, 1268, 23, 21, 21, 31, 1267, 44, - - 1266, 23, 22, 24, 23, 1265, 27, 24, 21, 22, - 21, 24, 27, 22, 23, 30, 21, 24, 21, 22, - 24, 23, 21, 21, 31, 25, 44, 25, 23, 22, - 24, 23, 25, 27, 24, 43, 43, 25, 24, 27, - 1263, 32, 28, 1261, 24, 32, 55, 24, 50, 50, - 28, 32, 25, 1259, 25, 1257, 28, 55, 1255, 25, - 58, 58, 43, 43, 25, 26, 86, 86, 32, 28, - 34, 33, 32, 26, 99, 33, 26, 28, 32, 26, - 29, 33, 26, 28, 34, 26, 29, 29, 29, 1253, - 34, 34, 26, 29, 187, 187, 100, 34, 33, 1251, - - 26, 99, 33, 26, 1208, 1208, 26, 29, 33, 26, - 36, 34, 26, 29, 29, 29, 35, 34, 34, 103, - 29, 36, 38, 100, 35, 1249, 38, 36, 35, 104, - 38, 35, 35, 41, 106, 41, 38, 36, 41, 1247, - 1245, 107, 1243, 35, 42, 1241, 103, 1238, 36, 38, - 1235, 35, 42, 38, 36, 35, 104, 38, 35, 35, - 41, 106, 41, 38, 39, 41, 39, 101, 107, 39, - 102, 42, 39, 102, 39, 101, 39, 39, 1230, 42, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 110, 39, 1225, 39, 101, 1216, 39, 102, 116, 39, - - 102, 39, 101, 39, 39, 40, 112, 117, 67, 40, - 67, 109, 40, 40, 67, 67, 112, 110, 109, 40, - 67, 118, 40, 1207, 1189, 116, 1171, 1132, 1093, 1025, - 957, 865, 40, 112, 117, 67, 40, 67, 109, 40, - 40, 67, 67, 112, 773, 109, 40, 67, 118, 40, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 61, 61, 119, 61, 61, 61, 61, 61, 61, - 120, 68, 122, 652, 531, 68, 409, 105, 105, 68, - 61, 61, 61, 70, 113, 68, 61, 70, 61, 113, - 119, 105, 123, 70, 61, 68, 61, 120, 68, 122, - - 61, 61, 68, 70, 105, 105, 68, 115, 115, 286, - 70, 113, 68, 61, 70, 61, 113, 191, 105, 123, - 70, 61, 68, 61, 189, 124, 90, 61, 61, 88, - 70, 85, 60, 59, 115, 115, 61, 62, 62, 52, - 62, 62, 62, 62, 62, 62, 51, 47, 125, 71, - 72, 73, 124, 71, 72, 73, 62, 62, 62, 71, - 72, 73, 126, 62, 111, 111, 111, 62, 111, 71, - 72, 73, 77, 62, 77, 125, 71, 72, 73, 77, - 71, 72, 73, 62, 77, 45, 71, 72, 73, 126, - 62, 111, 111, 111, 62, 111, 71, 72, 73, 77, - - 62, 77, 20, 19, 11, 127, 77, 128, 129, 7, - 62, 77, 62, 63, 131, 78, 132, 63, 134, 78, - 63, 63, 130, 78, 81, 130, 81, 63, 81, 78, - 63, 81, 127, 135, 128, 129, 81, 63, 4, 78, - 63, 131, 78, 132, 63, 134, 78, 63, 63, 130, - 78, 81, 130, 81, 63, 81, 78, 63, 81, 3, - 135, 0, 0, 81, 63, 64, 78, 82, 84, 64, - 137, 82, 84, 64, 138, 82, 0, 139, 84, 64, - 140, 82, 64, 83, 143, 144, 83, 83, 84, 64, - 0, 82, 64, 83, 82, 84, 64, 137, 82, 84, - - 64, 138, 82, 83, 139, 84, 64, 140, 82, 64, - 83, 143, 144, 83, 83, 84, 64, 65, 82, 145, - 83, 65, 146, 114, 65, 114, 65, 65, 114, 0, - 83, 65, 148, 141, 114, 141, 65, 65, 0, 0, - 147, 114, 0, 147, 65, 0, 145, 149, 65, 146, - 114, 65, 114, 65, 65, 114, 136, 0, 65, 148, - 141, 114, 141, 65, 65, 66, 136, 147, 114, 66, - 147, 136, 136, 66, 149, 142, 66, 142, 121, 66, - 121, 150, 66, 136, 121, 66, 152, 153, 142, 66, - 0, 121, 66, 136, 154, 121, 66, 0, 136, 136, - - 66, 155, 142, 66, 142, 121, 66, 121, 150, 66, - 156, 121, 66, 152, 153, 142, 66, 69, 121, 158, - 159, 154, 121, 69, 69, 69, 160, 157, 155, 162, - 69, 157, 161, 159, 164, 69, 0, 156, 159, 165, - 0, 166, 167, 161, 69, 0, 158, 159, 164, 168, - 69, 69, 69, 160, 157, 163, 162, 69, 157, 161, - 159, 164, 69, 74, 163, 159, 165, 74, 166, 167, - 161, 74, 163, 169, 170, 164, 168, 74, 171, 172, - 173, 176, 163, 74, 74, 170, 177, 74, 0, 174, - 74, 163, 175, 180, 74, 175, 0, 0, 74, 163, - - 169, 170, 181, 0, 74, 171, 172, 173, 176, 174, - 74, 74, 170, 177, 74, 75, 174, 182, 178, 175, - 180, 75, 175, 75, 178, 289, 291, 75, 75, 181, - 75, 75, 0, 75, 0, 0, 174, 0, 0, 0, - 0, 0, 75, 0, 182, 178, 179, 0, 75, 292, - 75, 178, 289, 291, 75, 75, 294, 75, 75, 179, - 75, 76, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 76, 179, 76, 296, 292, 297, 76, 76, - 298, 299, 0, 294, 76, 0, 179, 0, 76, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 76, - - 0, 76, 296, 300, 297, 76, 76, 298, 299, 199, - 301, 76, 79, 199, 79, 303, 304, 79, 79, 199, - 79, 0, 79, 305, 79, 79, 0, 200, 200, 199, - 300, 306, 200, 307, 79, 0, 199, 301, 200, 79, - 199, 79, 303, 304, 79, 79, 199, 79, 200, 79, - 305, 79, 79, 201, 200, 200, 199, 201, 306, 200, - 307, 79, 80, 201, 308, 200, 80, 309, 201, 80, - 80, 310, 311, 201, 312, 200, 80, 313, 314, 80, - 201, 316, 317, 318, 201, 319, 80, 0, 0, 80, - 201, 308, 0, 80, 309, 201, 80, 80, 310, 311, - - 201, 312, 0, 80, 313, 314, 80, 0, 316, 317, - 318, 0, 319, 80, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 193, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 202, 320, 202, 204, - 321, 204, 0, 202, 202, 204, 204, 0, 202, 0, - 323, 204, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 0, 202, 320, 202, 204, 321, 204, 315, - 202, 202, 204, 204, 205, 202, 203, 323, 204, 203, - - 302, 207, 302, 205, 315, 205, 207, 203, 207, 203, - 205, 324, 0, 207, 203, 205, 315, 302, 207, 203, - 0, 205, 0, 203, 325, 0, 203, 302, 207, 302, - 205, 315, 205, 207, 203, 207, 203, 205, 324, 208, - 207, 203, 205, 208, 302, 207, 203, 206, 206, 208, - 326, 325, 209, 206, 327, 206, 209, 0, 328, 208, - 206, 206, 209, 329, 0, 206, 208, 330, 0, 0, - 208, 0, 209, 0, 206, 206, 208, 326, 331, 209, - 206, 327, 206, 209, 211, 328, 208, 206, 206, 209, - 329, 210, 206, 210, 330, 211, 213, 211, 210, 209, - - 213, 332, 211, 210, 333, 331, 213, 211, 0, 0, - 0, 211, 0, 0, 334, 0, 213, 0, 210, 0, - 210, 0, 211, 213, 211, 210, 0, 213, 332, 211, - 210, 333, 335, 213, 211, 212, 212, 212, 336, 212, - 214, 334, 212, 213, 214, 337, 216, 212, 216, 338, - 214, 339, 216, 216, 340, 214, 341, 342, 216, 335, - 214, 0, 212, 212, 212, 336, 212, 214, 0, 212, - 0, 214, 337, 216, 212, 216, 338, 214, 339, 216, - 216, 340, 214, 341, 342, 216, 343, 214, 215, 344, - 215, 345, 347, 215, 348, 217, 219, 217, 219, 215, - - 350, 215, 217, 219, 217, 0, 215, 217, 219, 0, - 0, 215, 351, 343, 0, 215, 344, 215, 345, 347, - 215, 348, 217, 219, 217, 219, 215, 350, 215, 217, - 219, 217, 218, 215, 217, 219, 218, 225, 215, 351, - 220, 225, 218, 346, 352, 221, 353, 225, 220, 355, - 220, 356, 218, 346, 221, 220, 221, 225, 0, 218, - 220, 221, 357, 218, 225, 0, 221, 220, 225, 218, - 346, 352, 221, 353, 225, 220, 355, 220, 356, 218, - 346, 221, 220, 221, 225, 354, 0, 220, 221, 357, - 223, 0, 223, 221, 222, 354, 222, 223, 0, 358, - - 222, 224, 223, 224, 359, 226, 222, 222, 224, 226, - 0, 222, 354, 224, 0, 226, 222, 223, 226, 223, - 0, 222, 354, 222, 223, 226, 358, 222, 224, 223, - 224, 359, 226, 222, 222, 224, 226, 227, 222, 361, - 224, 227, 226, 222, 228, 226, 228, 227, 362, 229, - 230, 228, 226, 229, 230, 363, 228, 227, 364, 229, - 230, 0, 365, 0, 227, 0, 361, 0, 227, 229, - 230, 228, 0, 228, 227, 362, 229, 230, 228, 366, - 229, 230, 363, 228, 227, 364, 229, 230, 231, 365, - 231, 367, 232, 369, 232, 231, 229, 230, 231, 232, - - 231, 233, 370, 233, 232, 0, 366, 0, 233, 371, - 233, 0, 0, 233, 368, 231, 0, 231, 367, 232, - 369, 232, 231, 0, 372, 231, 232, 231, 233, 370, - 233, 232, 234, 368, 234, 233, 371, 233, 235, 234, - 233, 368, 235, 236, 234, 373, 374, 236, 235, 375, - 238, 372, 238, 236, 236, 0, 0, 238, 235, 234, - 368, 234, 238, 236, 0, 235, 234, 376, 377, 235, - 236, 234, 373, 374, 236, 235, 375, 238, 239, 238, - 236, 236, 239, 240, 238, 235, 0, 240, 239, 238, - 236, 237, 0, 240, 376, 377, 0, 0, 239, 237, - - 378, 237, 0, 240, 379, 239, 237, 237, 380, 239, - 240, 237, 241, 241, 240, 239, 241, 244, 237, 244, - 240, 381, 241, 244, 244, 239, 237, 378, 237, 244, - 240, 379, 241, 237, 237, 380, 383, 0, 237, 241, - 241, 0, 0, 241, 244, 245, 244, 245, 381, 241, - 244, 244, 245, 0, 384, 0, 244, 245, 0, 241, - 242, 0, 385, 383, 242, 255, 242, 386, 242, 255, - 242, 0, 245, 387, 245, 255, 388, 389, 258, 245, - 242, 384, 258, 0, 245, 255, 0, 242, 258, 385, - 390, 242, 255, 242, 386, 242, 255, 242, 258, 0, - - 387, 0, 255, 388, 389, 258, 391, 242, 243, 258, - 243, 246, 255, 246, 392, 258, 393, 390, 246, 243, - 247, 243, 247, 246, 395, 258, 243, 247, 247, 398, - 396, 243, 247, 391, 399, 243, 0, 243, 246, 396, - 246, 392, 400, 393, 0, 246, 243, 247, 243, 247, - 246, 395, 0, 243, 247, 247, 398, 396, 243, 247, - 248, 399, 248, 249, 0, 249, 396, 248, 248, 400, - 249, 248, 248, 250, 0, 249, 252, 397, 252, 397, - 0, 401, 0, 252, 250, 0, 250, 248, 252, 248, - 249, 250, 249, 0, 248, 248, 250, 249, 248, 248, - - 250, 251, 249, 252, 397, 252, 397, 251, 401, 251, - 252, 250, 253, 250, 251, 252, 0, 402, 250, 251, - 253, 0, 253, 250, 0, 0, 403, 253, 251, 404, - 406, 0, 253, 407, 251, 0, 251, 0, 532, 253, - 533, 251, 0, 254, 402, 254, 251, 253, 256, 253, - 254, 254, 256, 403, 253, 254, 404, 406, 256, 253, - 407, 256, 259, 0, 259, 532, 534, 533, 256, 259, - 254, 535, 254, 0, 259, 256, 257, 254, 254, 256, - 257, 260, 254, 405, 257, 256, 0, 405, 256, 259, - 257, 259, 260, 534, 260, 256, 259, 0, 535, 260, - - 257, 259, 0, 257, 260, 0, 0, 257, 260, 0, - 405, 257, 536, 261, 405, 537, 0, 257, 261, 260, - 261, 260, 262, 538, 262, 261, 260, 257, 539, 262, - 261, 260, 263, 262, 262, 540, 263, 0, 263, 536, - 261, 0, 537, 263, 542, 261, 0, 261, 263, 262, - 538, 262, 261, 545, 546, 539, 262, 261, 0, 263, - 262, 262, 540, 263, 265, 263, 0, 0, 265, 266, - 263, 542, 265, 266, 547, 263, 264, 548, 265, 266, - 545, 546, 550, 551, 552, 264, 0, 264, 265, 266, - 0, 265, 264, 264, 267, 265, 266, 264, 267, 265, - - 266, 547, 267, 264, 548, 265, 266, 0, 267, 550, - 551, 552, 264, 268, 264, 265, 266, 268, 267, 264, - 264, 267, 554, 268, 264, 267, 268, 555, 269, 267, - 0, 556, 269, 268, 270, 267, 269, 270, 0, 0, - 268, 270, 269, 557, 268, 267, 558, 270, 0, 554, - 268, 559, 269, 268, 555, 269, 560, 270, 556, 269, - 268, 270, 561, 269, 270, 271, 271, 271, 270, 269, - 557, 272, 271, 558, 270, 272, 0, 271, 559, 269, - 0, 272, 0, 560, 270, 562, 0, 565, 0, 561, - 0, 272, 271, 271, 271, 566, 276, 273, 272, 271, - - 276, 273, 272, 276, 271, 273, 276, 273, 272, 274, - 277, 277, 562, 274, 565, 277, 276, 273, 272, 274, - 274, 277, 566, 276, 273, 567, 568, 276, 273, 274, - 276, 277, 273, 276, 273, 278, 274, 277, 277, 278, - 274, 569, 277, 276, 273, 278, 274, 274, 277, 570, - 0, 571, 567, 568, 0, 278, 274, 275, 277, 573, - 281, 275, 278, 574, 281, 275, 278, 279, 569, 279, - 281, 275, 278, 279, 279, 0, 570, 275, 571, 279, - 281, 275, 278, 0, 275, 577, 573, 281, 275, 280, - 574, 281, 275, 280, 279, 578, 279, 281, 275, 280, - - 279, 279, 280, 580, 275, 582, 279, 281, 275, 280, - 283, 411, 577, 282, 283, 411, 280, 282, 283, 583, - 280, 411, 578, 282, 283, 584, 280, 585, 282, 280, - 580, 411, 582, 282, 283, 0, 280, 283, 411, 0, - 282, 283, 411, 0, 282, 283, 583, 0, 411, 0, - 282, 283, 584, 586, 585, 282, 0, 0, 411, 0, - 282, 283, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 412, 413, 414, 0, 412, 413, 414, 415, - 586, 415, 412, 413, 414, 0, 415, 587, 590, 594, - 596, 415, 412, 413, 414, 416, 0, 416, 0, 412, - - 413, 414, 416, 412, 413, 414, 415, 416, 415, 412, - 413, 414, 417, 415, 587, 590, 594, 596, 415, 412, - 413, 414, 416, 417, 416, 417, 418, 419, 418, 416, - 417, 419, 0, 418, 416, 417, 420, 419, 418, 417, - 420, 421, 597, 599, 0, 421, 420, 419, 0, 601, - 417, 421, 417, 418, 419, 418, 420, 417, 419, 421, - 418, 421, 417, 420, 419, 418, 602, 420, 421, 597, - 599, 422, 421, 420, 419, 422, 601, 423, 421, 423, - 424, 422, 424, 420, 423, 603, 421, 424, 421, 423, - 0, 422, 424, 602, 0, 0, 0, 605, 422, 0, - - 0, 606, 422, 607, 423, 0, 423, 424, 422, 424, - 0, 423, 603, 427, 424, 0, 423, 427, 422, 424, - 425, 426, 425, 427, 605, 426, 425, 588, 606, 427, - 607, 426, 425, 427, 426, 428, 0, 425, 588, 428, - 427, 426, 425, 428, 427, 428, 0, 425, 426, 425, - 427, 0, 426, 425, 588, 428, 427, 608, 426, 425, - 427, 426, 428, 429, 425, 588, 428, 429, 426, 425, - 428, 430, 428, 429, 610, 430, 433, 611, 429, 613, - 433, 430, 428, 429, 608, 431, 433, 614, 0, 431, - 429, 430, 615, 431, 429, 0, 433, 617, 430, 431, - - 429, 610, 430, 433, 611, 429, 613, 433, 430, 431, - 429, 0, 431, 433, 614, 432, 431, 432, 430, 615, - 431, 618, 432, 433, 617, 0, 431, 432, 434, 619, - 434, 435, 620, 435, 0, 434, 431, 622, 435, 623, - 434, 436, 432, 435, 432, 436, 0, 624, 618, 432, - 0, 436, 600, 600, 432, 434, 619, 434, 435, 620, - 435, 436, 434, 625, 622, 435, 623, 434, 436, 437, - 435, 438, 436, 437, 624, 438, 0, 437, 436, 600, - 600, 438, 0, 437, 628, 629, 438, 630, 436, 631, - 625, 438, 0, 437, 632, 439, 437, 439, 438, 440, - - 437, 439, 438, 440, 437, 0, 0, 439, 438, 440, - 437, 628, 629, 438, 630, 635, 631, 439, 438, 440, - 437, 632, 439, 441, 439, 636, 440, 441, 439, 638, - 440, 639, 442, 441, 439, 442, 440, 443, 441, 442, - 0, 443, 635, 441, 439, 442, 440, 443, 443, 0, - 441, 640, 636, 0, 441, 442, 638, 443, 639, 442, - 441, 641, 442, 444, 443, 441, 442, 444, 443, 0, - 441, 642, 442, 444, 443, 443, 445, 446, 640, 643, - 445, 446, 442, 444, 443, 446, 445, 644, 641, 447, - 444, 446, 645, 447, 444, 0, 445, 0, 642, 447, - - 444, 446, 0, 445, 446, 647, 643, 445, 446, 447, - 444, 0, 446, 445, 644, 448, 447, 448, 446, 645, - 447, 448, 449, 445, 449, 0, 447, 448, 446, 449, - 0, 450, 647, 450, 449, 0, 447, 448, 450, 0, - 649, 0, 448, 450, 448, 0, 0, 651, 448, 449, - 452, 449, 452, 776, 448, 0, 449, 452, 450, 0, - 450, 449, 452, 0, 448, 450, 451, 649, 451, 0, - 450, 453, 451, 451, 651, 453, 778, 452, 451, 452, - 776, 453, 454, 780, 452, 0, 454, 781, 0, 452, - 454, 453, 0, 451, 0, 451, 454, 782, 453, 451, - - 451, 0, 453, 778, 0, 451, 454, 783, 453, 454, - 780, 455, 456, 454, 781, 455, 456, 454, 453, 455, - 456, 455, 456, 454, 782, 784, 785, 0, 457, 0, - 457, 455, 456, 454, 783, 457, 0, 786, 455, 456, - 457, 787, 455, 456, 458, 0, 455, 456, 455, 456, - 0, 788, 784, 785, 458, 457, 458, 457, 455, 456, - 790, 458, 457, 459, 786, 459, 458, 457, 787, 0, - 459, 458, 459, 460, 791, 459, 461, 460, 788, 460, - 461, 458, 0, 458, 460, 0, 461, 790, 458, 460, - 459, 0, 459, 458, 0, 792, 461, 459, 0, 459, - - 460, 791, 459, 461, 460, 462, 460, 461, 463, 462, - 0, 460, 463, 461, 793, 462, 460, 0, 463, 0, - 462, 463, 792, 461, 794, 462, 0, 0, 463, 0, - 796, 0, 462, 465, 464, 463, 462, 465, 464, 463, - 464, 793, 462, 465, 464, 463, 466, 462, 463, 0, - 466, 794, 462, 465, 464, 463, 466, 796, 467, 468, - 465, 464, 467, 468, 465, 464, 466, 464, 467, 468, - 465, 464, 469, 466, 797, 798, 469, 466, 467, 468, - 465, 464, 469, 466, 470, 467, 468, 799, 470, 467, - 468, 0, 469, 466, 470, 467, 468, 0, 800, 469, - - 470, 797, 798, 469, 470, 467, 468, 0, 801, 469, - 471, 470, 471, 0, 799, 470, 472, 471, 472, 469, - 474, 470, 471, 472, 474, 800, 0, 470, 472, 0, - 474, 470, 802, 803, 473, 801, 473, 471, 804, 471, - 474, 473, 473, 472, 471, 472, 473, 474, 805, 471, - 472, 474, 475, 476, 476, 472, 475, 474, 476, 802, - 803, 473, 475, 473, 476, 804, 808, 474, 473, 473, - 809, 810, 475, 473, 476, 805, 811, 0, 814, 475, - 476, 476, 817, 475, 478, 476, 478, 818, 478, 475, - 820, 476, 823, 808, 478, 0, 826, 809, 810, 475, - - 827, 476, 477, 811, 478, 814, 477, 0, 828, 817, - 477, 478, 477, 478, 818, 478, 477, 820, 479, 823, - 479, 478, 479, 826, 829, 0, 477, 827, 479, 477, - 480, 478, 0, 477, 480, 828, 830, 477, 479, 477, - 480, 0, 0, 477, 481, 479, 480, 479, 481, 479, - 480, 829, 482, 477, 481, 479, 482, 480, 831, 481, - 834, 480, 482, 830, 481, 479, 819, 480, 482, 819, - 483, 481, 482, 480, 483, 481, 835, 480, 836, 482, - 483, 481, 0, 482, 484, 831, 481, 834, 484, 482, - 483, 481, 484, 819, 837, 482, 819, 483, 484, 482, - - 839, 483, 485, 835, 485, 836, 840, 483, 484, 485, - 0, 484, 842, 843, 485, 484, 486, 483, 486, 484, - 844, 837, 486, 486, 845, 484, 847, 839, 486, 485, - 487, 485, 487, 840, 488, 484, 485, 487, 488, 842, - 843, 485, 487, 486, 488, 486, 0, 844, 489, 486, - 486, 845, 489, 847, 488, 486, 0, 487, 489, 487, - 848, 488, 0, 490, 487, 488, 0, 490, 489, 487, - 492, 488, 492, 490, 0, 489, 490, 492, 0, 489, - 0, 488, 492, 490, 0, 489, 849, 848, 0, 493, - 490, 493, 0, 493, 490, 489, 493, 492, 0, 492, - - 490, 493, 0, 490, 492, 494, 494, 494, 0, 492, - 490, 491, 494, 849, 0, 491, 493, 494, 493, 491, - 493, 0, 850, 493, 495, 491, 851, 852, 493, 495, - 491, 495, 494, 494, 494, 491, 495, 853, 491, 494, - 854, 495, 491, 496, 494, 496, 491, 856, 497, 850, - 496, 495, 491, 851, 852, 496, 495, 491, 495, 497, - 0, 497, 491, 495, 853, 857, 497, 854, 495, 858, - 496, 497, 496, 860, 856, 497, 0, 496, 861, 862, - 958, 0, 496, 498, 960, 498, 497, 500, 497, 500, - 498, 498, 857, 497, 500, 498, 858, 499, 497, 500, - - 860, 499, 0, 499, 962, 861, 862, 958, 499, 963, - 498, 960, 498, 499, 500, 0, 500, 498, 498, 502, - 0, 500, 498, 502, 499, 501, 500, 501, 499, 502, - 499, 962, 501, 964, 0, 499, 963, 501, 503, 502, - 499, 504, 503, 505, 965, 504, 502, 505, 503, 967, - 502, 504, 501, 505, 501, 509, 502, 509, 503, 501, - 964, 504, 509, 505, 501, 503, 502, 509, 504, 503, - 505, 965, 504, 506, 505, 503, 967, 506, 504, 969, - 505, 970, 509, 506, 509, 503, 506, 507, 504, 509, - 505, 507, 508, 506, 509, 971, 508, 507, 972, 974, - - 506, 976, 508, 508, 506, 507, 969, 507, 970, 510, - 506, 510, 508, 506, 507, 980, 510, 510, 507, 508, - 506, 510, 971, 508, 507, 972, 974, 0, 976, 508, - 508, 0, 507, 511, 507, 511, 510, 982, 510, 508, - 511, 511, 980, 510, 510, 511, 983, 512, 510, 512, - 990, 513, 991, 513, 512, 513, 992, 995, 513, 512, - 511, 997, 511, 513, 982, 0, 0, 511, 511, 0, - 0, 0, 511, 983, 512, 0, 512, 990, 513, 991, - 513, 512, 513, 992, 995, 513, 512, 514, 997, 514, - 513, 515, 516, 515, 514, 514, 516, 517, 515, 514, - - 999, 517, 516, 515, 0, 1001, 0, 517, 1002, 1003, - 1004, 0, 516, 0, 514, 0, 514, 517, 515, 516, - 515, 514, 514, 516, 517, 515, 514, 999, 517, 516, - 515, 518, 1001, 518, 517, 1002, 1003, 1004, 518, 516, - 519, 520, 521, 518, 517, 520, 521, 519, 1006, 519, - 1007, 520, 521, 520, 519, 1008, 0, 1009, 518, 519, - 518, 520, 521, 1011, 0, 518, 0, 519, 520, 521, - 518, 1013, 520, 521, 519, 1006, 519, 1007, 520, 521, - 520, 519, 1008, 522, 1009, 1015, 519, 522, 520, 521, - 1011, 522, 523, 524, 523, 524, 1016, 522, 1013, 523, - - 524, 0, 524, 1017, 523, 524, 0, 522, 0, 0, - 522, 0, 1015, 0, 522, 1018, 0, 0, 522, 523, - 524, 523, 524, 1016, 522, 1023, 523, 524, 525, 524, - 1017, 523, 524, 527, 522, 527, 526, 525, 526, 525, - 527, 527, 1018, 526, 525, 527, 1024, 526, 526, 525, - 0, 1098, 1023, 1101, 0, 525, 0, 0, 0, 1102, - 527, 0, 527, 526, 525, 526, 525, 527, 527, 1105, - 526, 525, 527, 1024, 526, 526, 525, 528, 1098, 528, - 1101, 529, 1106, 528, 528, 529, 1102, 529, 530, 528, - 530, 1111, 529, 1112, 530, 530, 1105, 529, 0, 0, - - 530, 0, 0, 0, 528, 0, 528, 1115, 529, 1106, - 528, 528, 529, 1116, 529, 530, 528, 530, 1111, 529, - 1112, 530, 530, 653, 529, 653, 654, 530, 654, 653, - 653, 1117, 654, 654, 1115, 653, 0, 0, 654, 1120, - 1116, 655, 1121, 1124, 656, 655, 0, 1126, 656, 0, - 653, 655, 653, 654, 656, 654, 653, 653, 1117, 654, - 654, 655, 653, 657, 656, 654, 1120, 657, 655, 1121, - 1124, 656, 655, 657, 1126, 656, 657, 658, 655, 658, - 0, 656, 659, 657, 658, 0, 659, 1127, 655, 658, - 657, 656, 659, 0, 657, 0, 1128, 0, 0, 1129, - - 657, 0, 659, 657, 658, 660, 658, 660, 1172, 659, - 657, 658, 660, 659, 1127, 0, 658, 660, 661, 659, - 662, 664, 661, 1128, 662, 664, 1129, 1174, 661, 659, - 662, 664, 660, 665, 660, 1172, 1177, 665, 661, 660, - 662, 664, 663, 665, 660, 661, 663, 662, 664, 661, - 663, 662, 664, 665, 1174, 661, 663, 662, 664, 1180, - 665, 1181, 1185, 1177, 665, 661, 663, 662, 664, 663, - 665, 666, 1186, 663, 667, 666, 1187, 663, 667, 666, - 665, 1209, 667, 663, 667, 666, 1180, 668, 1181, 1185, - 1211, 668, 0, 663, 667, 666, 1215, 668, 666, 1186, - - 669, 667, 666, 1187, 669, 667, 666, 668, 1209, 667, - 669, 667, 666, 669, 668, 670, 0, 1211, 668, 670, - 669, 667, 666, 1215, 668, 670, 1229, 669, 671, 0, - 1236, 669, 671, 1239, 668, 670, 0, 669, 671, 1242, - 669, 1244, 670, 671, 1226, 1226, 670, 669, 671, 672, - 1246, 672, 670, 1229, 1248, 671, 672, 1236, 0, 671, - 1239, 672, 670, 1231, 1231, 671, 1242, 1250, 1244, 1252, - 671, 0, 673, 1254, 673, 671, 672, 1246, 672, 673, - 673, 1248, 1256, 672, 673, 674, 1226, 674, 672, 0, - 0, 675, 674, 675, 1250, 0, 1252, 674, 675, 673, - - 1254, 673, 0, 675, 0, 1231, 673, 673, 0, 1256, - 0, 673, 674, 1226, 674, 676, 676, 676, 675, 674, - 675, 1258, 676, 1260, 674, 675, 677, 676, 677, 678, - 675, 678, 1231, 677, 679, 677, 678, 678, 677, 0, - 0, 678, 676, 676, 676, 679, 0, 679, 1258, 676, - 1260, 0, 679, 677, 676, 677, 678, 679, 678, 0, - 677, 679, 677, 678, 678, 677, 0, 0, 678, 680, - 0, 680, 679, 682, 679, 680, 680, 682, 681, 679, - 0, 680, 0, 682, 679, 0, 0, 681, 0, 681, - 0, 0, 0, 682, 681, 0, 680, 0, 680, 681, - - 682, 0, 680, 680, 682, 681, 0, 0, 680, 0, - 682, 683, 0, 683, 681, 684, 681, 684, 683, 0, - 682, 681, 684, 683, 0, 0, 681, 684, 0, 685, - 0, 685, 0, 0, 0, 0, 685, 0, 683, 0, - 683, 685, 684, 0, 684, 683, 0, 0, 0, 684, - 683, 0, 0, 686, 684, 686, 685, 686, 685, 0, - 686, 0, 687, 685, 687, 686, 687, 0, 685, 687, - 0, 0, 0, 0, 687, 0, 688, 0, 688, 0, - 686, 0, 686, 688, 686, 688, 0, 686, 688, 687, - 0, 687, 686, 687, 0, 0, 687, 0, 690, 0, - - 0, 687, 0, 688, 0, 688, 689, 0, 689, 690, - 688, 690, 688, 689, 689, 688, 690, 0, 689, 691, - 0, 690, 0, 0, 692, 690, 0, 0, 692, 0, - 691, 0, 691, 689, 692, 689, 690, 691, 690, 0, - 689, 689, 691, 690, 692, 689, 691, 0, 690, 0, - 693, 692, 694, 0, 693, 692, 694, 691, 0, 691, - 693, 692, 694, 0, 691, 0, 0, 694, 0, 691, - 693, 692, 694, 0, 695, 0, 696, 693, 695, 694, - 696, 693, 695, 694, 0, 0, 696, 693, 695, 694, - 0, 0, 0, 0, 694, 0, 696, 693, 695, 694, - - 697, 695, 0, 696, 697, 695, 0, 696, 698, 695, - 697, 0, 698, 696, 0, 695, 698, 701, 0, 701, - 697, 0, 698, 696, 701, 695, 0, 697, 0, 701, - 699, 697, 698, 0, 699, 698, 0, 697, 700, 698, - 699, 699, 700, 698, 701, 0, 701, 697, 700, 698, - 699, 701, 0, 0, 0, 0, 701, 699, 700, 698, - 0, 699, 0, 0, 702, 700, 702, 699, 699, 700, - 0, 702, 703, 0, 703, 700, 702, 699, 0, 703, - 0, 0, 704, 0, 703, 700, 704, 0, 0, 0, - 0, 702, 704, 702, 0, 0, 0, 0, 702, 703, - - 0, 703, 704, 702, 705, 0, 703, 0, 705, 704, - 0, 703, 0, 704, 705, 0, 706, 705, 706, 704, - 707, 0, 707, 706, 705, 0, 707, 707, 706, 704, - 0, 705, 707, 0, 0, 705, 0, 0, 0, 0, - 0, 705, 0, 706, 705, 706, 0, 707, 0, 707, - 706, 705, 0, 707, 707, 706, 708, 0, 708, 707, - 0, 0, 708, 708, 0, 710, 0, 710, 708, 0, - 0, 0, 710, 0, 0, 0, 0, 710, 0, 0, - 0, 0, 0, 708, 0, 708, 0, 0, 0, 708, - 708, 0, 710, 0, 710, 708, 709, 0, 711, 710, - - 711, 709, 0, 709, 710, 711, 0, 709, 709, 712, - 711, 712, 713, 709, 713, 0, 712, 0, 0, 713, - 0, 712, 0, 709, 713, 711, 0, 711, 709, 0, - 709, 0, 711, 0, 709, 709, 712, 711, 712, 713, - 709, 713, 714, 712, 714, 715, 713, 715, 712, 714, - 0, 713, 715, 715, 714, 0, 716, 715, 716, 0, - 0, 0, 0, 716, 0, 0, 0, 0, 716, 714, - 0, 714, 715, 0, 715, 717, 714, 717, 0, 715, - 715, 714, 717, 716, 715, 716, 0, 717, 718, 0, - 716, 0, 718, 719, 0, 716, 720, 719, 718, 0, - - 720, 0, 717, 719, 717, 0, 720, 0, 718, 717, - 721, 0, 721, 719, 717, 718, 720, 721, 721, 718, - 719, 0, 721, 720, 719, 718, 0, 720, 0, 0, - 719, 0, 0, 720, 0, 718, 0, 721, 0, 721, - 719, 0, 722, 720, 721, 721, 722, 0, 722, 721, - 723, 724, 723, 722, 0, 724, 723, 723, 722, 0, - 0, 724, 723, 0, 0, 0, 725, 0, 0, 722, - 725, 724, 0, 722, 0, 722, 725, 723, 724, 723, - 722, 0, 724, 723, 723, 722, 725, 0, 724, 723, - 726, 727, 726, 725, 0, 727, 726, 725, 724, 0, - - 0, 727, 726, 725, 0, 0, 0, 0, 0, 0, - 0, 727, 726, 725, 0, 0, 0, 726, 727, 726, - 728, 729, 727, 726, 728, 729, 0, 0, 727, 726, - 728, 729, 0, 728, 729, 0, 0, 0, 727, 726, - 728, 729, 0, 0, 0, 730, 731, 728, 729, 730, - 731, 728, 729, 0, 731, 730, 731, 728, 729, 732, - 728, 729, 0, 732, 0, 730, 731, 728, 729, 732, - 0, 0, 730, 731, 733, 0, 730, 731, 733, 732, - 0, 731, 730, 731, 733, 0, 732, 0, 0, 0, - 732, 0, 730, 731, 733, 734, 732, 0, 0, 734, - - 735, 733, 0, 734, 735, 733, 732, 0, 735, 734, - 0, 733, 0, 736, 735, 0, 0, 736, 0, 734, - 0, 733, 734, 736, 735, 0, 734, 735, 737, 0, - 734, 735, 737, 736, 0, 735, 734, 0, 737, 0, - 736, 735, 0, 0, 736, 0, 734, 0, 737, 0, - 736, 735, 0, 738, 739, 737, 0, 738, 739, 737, - 736, 738, 740, 738, 739, 737, 740, 739, 0, 0, - 0, 0, 740, 738, 739, 737, 0, 740, 0, 0, - 738, 739, 740, 0, 738, 739, 0, 0, 738, 740, - 738, 739, 0, 740, 739, 741, 0, 0, 741, 740, - - 738, 739, 741, 742, 740, 0, 743, 742, 741, 740, - 743, 0, 0, 742, 743, 0, 743, 0, 741, 0, - 0, 0, 741, 742, 0, 741, 743, 0, 0, 741, - 742, 0, 0, 743, 742, 741, 0, 743, 0, 0, - 742, 743, 744, 743, 744, 741, 745, 0, 746, 744, - 742, 0, 746, 743, 744, 745, 0, 745, 746, 0, - 747, 0, 745, 0, 747, 0, 0, 745, 746, 744, - 747, 744, 0, 745, 0, 746, 744, 0, 0, 746, - 747, 744, 745, 0, 745, 746, 748, 747, 0, 745, - 748, 747, 0, 0, 745, 746, 748, 747, 749, 750, - - 749, 0, 0, 750, 751, 749, 748, 747, 751, 750, - 749, 0, 0, 748, 751, 0, 0, 748, 752, 750, - 0, 0, 752, 748, 751, 749, 750, 749, 752, 0, - 750, 751, 749, 748, 0, 751, 750, 749, 752, 0, - 753, 751, 0, 754, 753, 752, 750, 754, 755, 752, - 753, 751, 755, 754, 756, 752, 756, 757, 755, 757, - 753, 756, 0, 754, 757, 752, 756, 753, 755, 757, - 754, 753, 0, 0, 754, 755, 0, 753, 0, 755, - 754, 756, 0, 756, 757, 755, 757, 753, 756, 759, - 754, 757, 758, 756, 758, 755, 757, 0, 759, 758, - - 759, 760, 0, 760, 758, 759, 0, 0, 760, 0, - 759, 0, 0, 760, 0, 0, 759, 0, 0, 758, - 0, 758, 0, 0, 0, 759, 758, 759, 760, 0, - 760, 758, 759, 0, 761, 760, 761, 759, 0, 762, - 760, 761, 0, 761, 0, 0, 761, 763, 0, 763, - 762, 0, 762, 0, 763, 763, 0, 762, 0, 763, - 0, 761, 762, 761, 0, 0, 762, 0, 761, 0, - 761, 0, 0, 761, 763, 0, 763, 762, 764, 762, - 0, 763, 763, 764, 762, 764, 763, 765, 767, 762, - 764, 765, 767, 0, 0, 764, 766, 765, 767, 766, - - 766, 0, 0, 0, 0, 764, 766, 765, 767, 0, - 764, 0, 764, 0, 765, 767, 766, 764, 765, 767, - 0, 0, 764, 766, 765, 767, 766, 766, 768, 0, - 0, 0, 768, 766, 765, 767, 769, 770, 768, 0, - 769, 770, 0, 766, 768, 0, 769, 770, 768, 0, - 771, 0, 0, 0, 771, 768, 769, 770, 0, 768, - 771, 0, 0, 769, 770, 768, 0, 769, 770, 0, - 771, 768, 0, 769, 770, 768, 0, 771, 772, 0, - 772, 771, 0, 769, 770, 772, 866, 771, 866, 867, - 772, 867, 868, 866, 868, 0, 867, 771, 866, 868, - - 0, 867, 0, 0, 868, 772, 868, 772, 0, 0, - 0, 0, 772, 866, 0, 866, 867, 772, 867, 868, - 866, 868, 869, 867, 869, 866, 868, 0, 867, 869, - 0, 868, 870, 868, 869, 871, 870, 872, 0, 871, - 0, 872, 870, 0, 0, 871, 0, 872, 0, 869, - 873, 869, 870, 0, 873, 871, 869, 872, 0, 870, - 873, 869, 871, 870, 872, 873, 871, 0, 872, 870, - 873, 0, 871, 0, 872, 875, 875, 873, 0, 870, - 875, 873, 871, 0, 872, 874, 875, 873, 876, 874, - 876, 0, 873, 874, 876, 0, 875, 873, 0, 874, - - 876, 0, 875, 875, 0, 0, 0, 875, 0, 874, - 876, 0, 874, 875, 0, 876, 874, 876, 0, 0, - 874, 876, 877, 875, 877, 0, 874, 876, 0, 877, - 0, 878, 0, 878, 877, 0, 874, 876, 878, 878, - 0, 0, 879, 878, 880, 0, 879, 0, 880, 877, - 0, 877, 879, 0, 880, 0, 877, 0, 878, 0, - 878, 877, 879, 0, 880, 878, 878, 0, 881, 879, - 878, 880, 881, 879, 0, 880, 882, 0, 881, 879, - 882, 880, 0, 0, 0, 0, 882, 0, 881, 879, - 883, 880, 0, 0, 883, 881, 882, 0, 884, 881, - - 883, 0, 884, 882, 0, 881, 884, 882, 0, 0, - 883, 0, 884, 882, 0, 881, 0, 883, 0, 0, - 0, 883, 884, 882, 885, 884, 885, 883, 886, 884, - 887, 885, 886, 884, 887, 0, 885, 883, 886, 884, - 887, 0, 888, 0, 0, 0, 888, 0, 886, 884, - 887, 885, 888, 885, 0, 886, 889, 887, 885, 886, - 889, 887, 888, 885, 891, 886, 889, 887, 891, 888, - 0, 889, 0, 888, 891, 886, 889, 887, 890, 888, - 890, 0, 892, 889, 891, 890, 892, 889, 0, 888, - 890, 891, 892, 889, 0, 891, 0, 0, 889, 0, - - 893, 891, 892, 889, 893, 890, 0, 890, 0, 892, - 893, 891, 890, 892, 895, 893, 895, 890, 894, 892, - 893, 895, 894, 0, 0, 0, 895, 893, 894, 892, - 896, 893, 0, 894, 896, 0, 0, 893, 894, 0, - 896, 895, 893, 895, 901, 894, 901, 893, 895, 894, - 896, 901, 897, 895, 897, 894, 901, 896, 897, 0, - 894, 896, 898, 0, 897, 894, 898, 896, 0, 0, - 0, 901, 898, 901, 897, 0, 899, 896, 901, 897, - 899, 897, 898, 901, 0, 897, 899, 0, 0, 898, - 900, 897, 0, 898, 900, 0, 899, 0, 0, 898, - - 900, 897, 0, 899, 902, 900, 902, 899, 0, 898, - 900, 902, 0, 899, 0, 0, 902, 900, 904, 0, - 904, 900, 0, 899, 0, 904, 0, 900, 0, 903, - 904, 902, 900, 902, 903, 0, 903, 900, 902, 0, - 0, 903, 905, 902, 905, 904, 903, 904, 0, 905, - 0, 0, 904, 0, 905, 0, 903, 904, 906, 0, - 906, 903, 0, 903, 0, 906, 906, 0, 903, 905, - 906, 905, 907, 903, 907, 0, 905, 0, 0, 907, - 0, 905, 0, 0, 907, 906, 0, 906, 908, 0, - 908, 0, 906, 906, 0, 908, 909, 906, 909, 907, - - 908, 907, 0, 909, 909, 0, 907, 0, 909, 910, - 0, 907, 0, 910, 911, 908, 911, 908, 0, 910, - 0, 911, 908, 909, 911, 909, 911, 908, 0, 910, - 909, 909, 912, 0, 912, 909, 910, 0, 0, 912, - 910, 911, 0, 911, 912, 913, 910, 913, 911, 0, - 0, 911, 913, 911, 0, 0, 910, 913, 914, 912, - 914, 912, 0, 0, 0, 914, 912, 0, 915, 0, - 914, 912, 913, 0, 913, 0, 915, 0, 915, 913, - 0, 0, 0, 915, 913, 914, 0, 914, 915, 916, - 0, 916, 914, 0, 918, 915, 916, 914, 918, 0, - - 917, 916, 917, 915, 918, 915, 0, 917, 0, 0, - 915, 0, 917, 0, 918, 915, 916, 0, 916, 0, - 0, 918, 920, 916, 0, 918, 0, 917, 916, 917, - 919, 918, 919, 920, 917, 920, 921, 919, 921, 917, - 920, 918, 919, 921, 921, 920, 0, 0, 921, 920, - 922, 0, 0, 0, 922, 0, 922, 919, 0, 919, - 920, 922, 920, 921, 919, 921, 922, 920, 0, 919, - 921, 921, 920, 0, 0, 921, 0, 922, 923, 0, - 923, 922, 924, 922, 924, 923, 923, 0, 922, 924, - 923, 0, 0, 922, 924, 0, 925, 0, 925, 0, - - 926, 0, 0, 925, 926, 923, 0, 923, 925, 924, - 926, 924, 923, 923, 927, 0, 924, 923, 927, 0, - 926, 924, 0, 925, 927, 925, 0, 926, 0, 927, - 925, 926, 0, 0, 927, 925, 0, 926, 930, 928, - 929, 927, 930, 928, 929, 927, 0, 926, 930, 928, - 929, 927, 928, 929, 0, 0, 927, 0, 930, 928, - 929, 927, 0, 0, 931, 930, 928, 929, 931, 930, - 928, 929, 0, 0, 931, 930, 928, 929, 932, 928, - 929, 0, 932, 0, 931, 930, 928, 929, 932, 934, - 933, 931, 0, 934, 933, 931, 0, 934, 932, 0, - - 933, 931, 0, 934, 935, 932, 0, 0, 935, 932, - 933, 931, 935, 934, 0, 932, 934, 933, 935, 0, - 934, 933, 0, 0, 934, 932, 0, 933, 935, 0, - 934, 935, 937, 936, 936, 935, 937, 933, 936, 935, - 934, 0, 937, 0, 936, 935, 938, 937, 0, 0, - 938, 0, 937, 0, 936, 935, 938, 0, 939, 937, - 936, 936, 939, 937, 0, 936, 938, 0, 939, 937, - 0, 936, 0, 938, 937, 940, 940, 938, 939, 937, - 940, 936, 0, 938, 941, 939, 940, 0, 941, 939, - 0, 0, 941, 938, 0, 939, 940, 942, 941, 942, - - 0, 0, 940, 940, 942, 939, 0, 940, 941, 942, - 943, 941, 943, 940, 0, 941, 943, 943, 0, 941, - 0, 0, 943, 940, 942, 941, 942, 0, 0, 0, - 0, 942, 0, 0, 0, 941, 942, 943, 944, 943, - 944, 945, 0, 943, 943, 944, 944, 0, 0, 943, - 944, 0, 945, 0, 945, 0, 0, 0, 0, 945, - 0, 0, 0, 0, 945, 944, 0, 944, 945, 946, - 0, 0, 944, 944, 0, 0, 947, 944, 947, 945, - 946, 945, 946, 947, 0, 0, 945, 946, 947, 0, - 0, 945, 946, 0, 0, 0, 946, 0, 948, 0, - - 0, 0, 948, 947, 0, 947, 0, 946, 948, 946, - 947, 949, 949, 950, 946, 947, 949, 950, 948, 946, - 0, 0, 949, 950, 0, 948, 951, 0, 0, 948, - 951, 0, 949, 950, 0, 948, 951, 0, 949, 949, - 950, 0, 0, 949, 950, 948, 951, 0, 0, 949, - 950, 953, 0, 951, 952, 0, 952, 951, 0, 949, - 950, 952, 953, 951, 953, 0, 952, 0, 0, 953, - 0, 0, 0, 951, 953, 0, 0, 0, 953, 954, - 0, 952, 0, 952, 0, 0, 0, 0, 952, 953, - 954, 953, 954, 952, 0, 0, 953, 954, 955, 0, - - 955, 953, 954, 1026, 0, 955, 954, 1026, 1027, 956, - 955, 956, 1027, 1026, 0, 0, 956, 954, 1027, 954, - 0, 956, 0, 1026, 954, 955, 0, 955, 1027, 954, - 1026, 0, 955, 0, 1026, 1027, 956, 955, 956, 1027, - 1026, 0, 1028, 956, 1028, 1027, 0, 0, 956, 1028, - 1026, 1029, 0, 1029, 1028, 1027, 0, 0, 1029, 0, - 1030, 0, 1030, 1029, 1031, 0, 0, 1030, 1031, 1028, - 0, 1028, 1030, 1032, 1031, 0, 1028, 1032, 1029, 0, - 1029, 1028, 1048, 1032, 1031, 1029, 1048, 1030, 1032, 1030, - 1029, 1031, 1048, 1032, 1030, 1031, 1033, 0, 1033, 1030, - - 1032, 1031, 1048, 1033, 1032, 1034, 0, 1034, 1033, 1048, - 1032, 1031, 1034, 1048, 1035, 1032, 1035, 1034, 0, 1048, - 1032, 1035, 0, 1033, 0, 1033, 1035, 0, 0, 1048, - 1033, 0, 1034, 0, 1034, 1033, 0, 0, 1036, 1034, - 1036, 1035, 0, 1035, 1034, 1036, 0, 0, 1035, 0, - 1036, 0, 0, 1035, 1037, 1037, 1037, 0, 0, 1038, - 0, 1037, 1039, 0, 1039, 1036, 1037, 1036, 1038, 1039, - 1038, 0, 1036, 0, 1039, 1038, 0, 1036, 0, 0, - 1038, 1037, 1037, 1037, 0, 0, 1038, 0, 1037, 1039, - 0, 1039, 1040, 1037, 1040, 1038, 1039, 1038, 0, 1040, - - 1040, 1039, 1038, 1041, 1040, 1041, 1042, 1038, 0, 0, - 1041, 0, 0, 0, 0, 1041, 1042, 0, 1042, 1040, - 0, 1040, 1043, 1042, 1043, 0, 1040, 1040, 1042, 1043, - 1041, 1040, 1041, 1042, 1043, 0, 0, 1041, 0, 0, - 0, 0, 1041, 1042, 0, 1042, 0, 0, 1044, 1043, - 1042, 1043, 0, 0, 0, 1042, 1043, 1044, 1045, 1044, - 1045, 1043, 0, 0, 1044, 1045, 1046, 0, 1046, 1044, - 1045, 0, 0, 1046, 0, 1044, 0, 0, 1046, 0, - 0, 0, 0, 0, 1044, 1045, 1044, 1045, 0, 0, - 0, 1044, 1045, 1046, 1049, 1046, 1044, 1045, 1049, 1047, - - 1046, 1047, 0, 0, 1049, 1046, 1047, 0, 1050, 0, - 1050, 1047, 0, 0, 1049, 1050, 0, 0, 0, 0, - 1050, 1049, 1051, 0, 1051, 1049, 1047, 0, 1047, 1051, - 1051, 1049, 0, 1047, 1051, 1050, 0, 1050, 1047, 0, - 0, 1049, 1050, 1052, 0, 1052, 1053, 1050, 1053, 1051, - 1052, 1051, 1054, 1053, 1054, 1052, 1051, 1051, 1053, 1054, - 0, 1051, 0, 0, 1054, 0, 0, 0, 0, 0, - 1052, 0, 1052, 1053, 0, 1053, 1055, 1052, 1055, 1054, - 1053, 1054, 1052, 1055, 0, 1053, 1054, 1056, 1055, 1056, - 1057, 1054, 1057, 0, 1056, 0, 0, 1057, 0, 1056, - - 0, 0, 1057, 1055, 0, 1055, 1058, 0, 1058, 0, - 1055, 0, 1058, 1058, 1056, 1055, 1056, 1057, 1058, 1057, - 0, 1056, 0, 0, 1057, 0, 1056, 1059, 1060, 1057, - 0, 1059, 1060, 1058, 0, 1058, 1060, 1059, 0, 1058, - 1058, 1063, 1060, 1063, 0, 1058, 1061, 1059, 1063, 0, - 1061, 0, 1060, 1063, 1059, 1060, 1061, 0, 1059, 1060, - 1064, 1062, 1064, 1060, 1059, 1062, 1061, 1064, 1063, 1060, - 1063, 1062, 1064, 1061, 1059, 1063, 0, 1061, 0, 1060, - 1063, 1062, 0, 1061, 1065, 0, 1065, 1064, 1062, 1064, - 0, 1065, 1062, 1061, 1064, 1066, 1065, 1066, 1062, 1064, - - 0, 0, 1066, 1067, 0, 0, 0, 1066, 1062, 0, - 0, 1065, 0, 1065, 1067, 0, 1067, 0, 1065, 0, - 0, 1067, 1066, 1065, 1066, 1068, 1067, 1068, 0, 1066, - 1067, 0, 1068, 0, 1066, 0, 0, 1068, 1069, 0, - 1069, 1067, 0, 1067, 0, 1069, 1069, 0, 1067, 0, - 1069, 1070, 1068, 1067, 1068, 1070, 1071, 0, 0, 1068, - 1071, 1070, 0, 0, 1068, 1069, 1071, 1069, 0, 0, - 1072, 1070, 1069, 1069, 1072, 1073, 1071, 1069, 1070, 1073, - 1072, 0, 1070, 1071, 0, 1073, 0, 1071, 1070, 0, - 1072, 0, 0, 1071, 0, 1073, 0, 1072, 1070, 0, - - 0, 1072, 1073, 1071, 0, 0, 1073, 1072, 1074, 1075, - 1074, 1075, 1073, 0, 1074, 1075, 1076, 1072, 1076, 0, - 1074, 1075, 1073, 1076, 0, 0, 0, 1077, 1076, 1077, - 1074, 1075, 0, 0, 1077, 1074, 1075, 1074, 1075, 1077, - 0, 1074, 1075, 1076, 0, 1076, 0, 1074, 1075, 0, - 1076, 0, 0, 0, 1077, 1076, 1077, 1074, 1075, 0, - 1078, 1077, 1078, 1079, 0, 1079, 1077, 1078, 0, 1080, - 1079, 1080, 1078, 0, 0, 1079, 1080, 0, 0, 0, - 0, 1080, 0, 0, 0, 0, 0, 1078, 0, 1078, - 1079, 0, 1079, 1081, 1078, 1081, 1080, 1079, 1080, 1078, - - 1081, 1083, 1079, 1080, 1082, 1081, 1082, 0, 1080, 0, - 0, 1082, 1083, 0, 1083, 0, 1082, 0, 0, 1083, - 1081, 0, 1081, 0, 1083, 0, 0, 1081, 1083, 1084, - 0, 1082, 1081, 1082, 0, 0, 0, 0, 1082, 1083, - 1084, 1083, 1084, 1082, 1085, 0, 1083, 1084, 0, 0, - 0, 1083, 1084, 1085, 0, 1085, 1084, 0, 0, 0, - 1085, 0, 0, 0, 0, 1085, 0, 1084, 0, 1084, - 0, 1085, 0, 0, 1084, 0, 1086, 0, 1086, 1084, - 1085, 0, 1085, 1086, 1086, 0, 0, 1085, 1086, 1087, - 0, 1087, 1085, 0, 0, 1088, 1087, 1088, 0, 0, - - 0, 1087, 1088, 1086, 0, 1086, 0, 1088, 0, 0, - 1086, 1086, 0, 0, 0, 1086, 1087, 0, 1087, 1089, - 0, 1089, 1088, 1087, 1088, 1090, 1089, 1090, 1087, 1088, - 0, 1089, 1090, 1091, 1088, 1091, 0, 1090, 0, 1091, - 1091, 0, 0, 0, 0, 1091, 1089, 0, 1089, 1092, - 0, 1092, 1090, 1089, 1090, 0, 1092, 0, 1089, 1090, - 1091, 1092, 1091, 1133, 1090, 1133, 1091, 1091, 0, 0, - 1133, 0, 1091, 0, 0, 1133, 1092, 1134, 1092, 1134, - 0, 0, 0, 1092, 1134, 0, 0, 0, 1092, 1134, - 1133, 1135, 1133, 1135, 0, 0, 0, 1133, 1135, 0, - - 0, 0, 1133, 1135, 1134, 1136, 1134, 1136, 0, 1137, - 0, 1134, 1136, 1137, 0, 0, 1134, 1136, 1135, 1137, - 1135, 0, 0, 1138, 0, 1135, 0, 1138, 0, 1137, - 1135, 1139, 1136, 1138, 1136, 1139, 1137, 0, 0, 1136, - 1137, 1139, 0, 1138, 1136, 1140, 1137, 0, 0, 1140, - 1138, 1139, 0, 1141, 1138, 1140, 1137, 1141, 1139, 1142, - 1138, 1141, 1139, 1142, 0, 1140, 0, 1141, 1139, 1142, - 1138, 1143, 1140, 0, 0, 1143, 1140, 1141, 1139, 1142, - 1141, 1143, 1140, 1144, 1141, 1145, 1142, 1144, 1141, 1145, - 1142, 1143, 1140, 1144, 1141, 1145, 1142, 1146, 1143, 0, - - 1145, 1146, 1143, 1144, 1141, 1145, 1142, 1146, 1143, 1147, - 1144, 1148, 1145, 1147, 1144, 1148, 1145, 1146, 1143, 1147, - 1144, 1148, 1145, 0, 1146, 0, 0, 1145, 1146, 1147, - 1144, 1148, 1145, 1149, 1146, 0, 1147, 1149, 1148, 1150, - 1147, 1150, 1148, 1149, 1146, 1150, 1147, 1151, 1148, 1151, - 1152, 1150, 1152, 1149, 1151, 0, 1147, 1152, 1148, 1151, - 1149, 1150, 1152, 0, 1149, 0, 1150, 0, 1150, 0, - 1149, 0, 1150, 0, 1151, 0, 1151, 1152, 1150, 1152, - 1149, 1151, 0, 1153, 1152, 1153, 1151, 0, 1150, 1152, - 1153, 1154, 0, 1154, 0, 1153, 1155, 1154, 1154, 0, - - 1155, 1156, 0, 1154, 0, 1156, 1155, 0, 0, 1157, - 1153, 1156, 1153, 1157, 0, 0, 1155, 1153, 1154, 1157, - 1154, 1156, 1153, 1155, 1154, 1154, 0, 1155, 1156, 1157, - 1154, 1158, 1156, 1155, 0, 1158, 1157, 0, 1156, 0, - 1157, 1158, 0, 1155, 0, 1159, 1157, 0, 1156, 1159, - 0, 1158, 0, 1160, 0, 1159, 1157, 1160, 1158, 1160, - 1159, 0, 1158, 1160, 0, 1159, 0, 0, 1158, 0, - 0, 1161, 1159, 1160, 0, 1161, 1159, 0, 1158, 1162, - 1160, 1161, 1159, 1162, 1160, 0, 1160, 1159, 0, 1162, - 1160, 1161, 1159, 0, 0, 0, 0, 1163, 1161, 1162, - - 1160, 1163, 1161, 0, 0, 1164, 1162, 1163, 1161, 1164, - 1162, 0, 1163, 0, 0, 1164, 1162, 1163, 1161, 0, - 0, 0, 0, 0, 1163, 1164, 1162, 1165, 1163, 0, - 0, 1165, 1164, 0, 1163, 0, 1164, 1165, 0, 1163, - 1165, 1166, 1164, 0, 1163, 1166, 1168, 1165, 0, 1166, - 1168, 1166, 1164, 0, 1165, 1167, 1168, 0, 1165, 1167, - 0, 1166, 0, 0, 1165, 1167, 1168, 1165, 1166, 0, - 1167, 0, 1166, 1168, 1165, 1167, 1166, 1168, 1166, 0, - 1169, 1170, 1167, 1168, 1169, 1170, 1167, 0, 1166, 0, - 1169, 1170, 1167, 1168, 1191, 0, 0, 1167, 1191, 0, - - 1169, 1170, 1167, 0, 1191, 0, 1190, 1169, 1170, 0, - 1190, 1169, 1170, 0, 1191, 0, 1190, 1169, 1170, 1190, - 1192, 1191, 0, 0, 1192, 1191, 1190, 1169, 1170, 0, - 1192, 1191, 1193, 1190, 1194, 1192, 1193, 1190, 1194, 0, - 1192, 1191, 1193, 1190, 1194, 0, 1190, 1192, 0, 0, - 0, 1192, 1193, 1190, 1194, 0, 0, 1192, 0, 1193, - 1195, 1194, 1192, 1193, 1195, 1194, 0, 1192, 1196, 1193, - 1195, 1194, 1196, 1197, 0, 1195, 0, 1197, 1196, 1193, - 1195, 1194, 0, 1197, 0, 0, 0, 1195, 1196, 0, - 0, 1195, 0, 1197, 0, 1196, 0, 1195, 0, 1196, - - 1197, 0, 1195, 0, 1197, 1196, 0, 1195, 1198, 0, - 1197, 0, 1198, 0, 0, 1196, 0, 1199, 1198, 1199, - 1197, 1198, 0, 0, 1199, 1200, 0, 1200, 1198, 1199, - 0, 1201, 1200, 1201, 0, 1198, 0, 1200, 1201, 1198, - 0, 0, 0, 1201, 1199, 1198, 1199, 0, 1198, 0, - 0, 1199, 1200, 0, 1200, 1198, 1199, 0, 1201, 1200, - 1201, 1202, 1203, 1202, 1200, 1201, 1203, 1204, 1202, 0, - 1201, 1204, 1203, 1202, 0, 0, 1205, 1204, 1204, 0, - 1205, 1206, 1203, 0, 0, 1206, 1205, 1204, 1202, 1203, - 1202, 1206, 0, 1203, 1204, 1202, 1205, 0, 1204, 1203, - - 1202, 1206, 0, 1205, 1204, 1204, 0, 1205, 1206, 1203, - 1217, 1217, 1206, 1205, 1204, 0, 1218, 1219, 1206, 0, - 1218, 1219, 1220, 1205, 1220, 0, 1218, 1219, 1206, 1220, - 0, 0, 0, 0, 1220, 1217, 1218, 1219, 0, 1217, - 0, 0, 0, 1218, 1219, 1217, 0, 1218, 1219, 1220, - 0, 1220, 0, 1218, 1219, 1217, 1220, 0, 1221, 0, - 1221, 1220, 1217, 1218, 1219, 1221, 1217, 1222, 0, 1222, - 1221, 1223, 1217, 1223, 1222, 0, 0, 0, 1223, 1222, - 0, 0, 1217, 1223, 0, 1221, 0, 1221, 0, 1224, - 0, 0, 1221, 1224, 1222, 0, 1222, 1221, 1223, 1224, - - 1223, 1222, 0, 1232, 1233, 1223, 1222, 1232, 1233, 1224, - 1223, 0, 0, 1232, 1233, 1234, 1224, 1234, 0, 0, - 1224, 0, 1234, 1232, 1233, 0, 1224, 1234, 0, 0, - 1232, 1233, 0, 0, 1232, 1233, 1224, 0, 0, 0, - 1232, 1233, 1234, 0, 1234, 1240, 0, 1240, 0, 1234, - 1232, 1233, 1240, 0, 1234, 0, 0, 1240, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1240, 0, 1240, 0, 0, 0, 0, 1240, - 0, 0, 0, 0, 1240, 1272, 1272, 1272, 1272, 1272, - 1273, 0, 0, 1273, 1273, 1275, 1275, 1275, 0, 1275, - - 1276, 0, 1276, 1276, 1276, 1277, 0, 1277, 1277, 1277, - 1278, 0, 1278, 1278, 1278, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, - 1271, 1271 - - } ; +struct yy_trans_info { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static const flex_int16_t yy_accept[1332] = { + 0, 0, 0, 183, 183, 2, 2, 187, 185, 4, 4, 185, 185, 174, 181, 174, 174, 178, 174, 174, 174, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 174, 183, 184, 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, 169, 0, 1, 0, 176, 175, 178, 171, 170, 168, 172, 180, 180, 180, + + 180, 180, 180, 12, 180, 180, 180, 19, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 71, 180, 180, 74, 83, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 101, 180, 180, 106, 109, 110, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 146, 180, 180, 180, 180, 180, 180, 180, 180, 180, 173, + 183, 182, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 179, 0, 175, 5, 180, 7, 180, 180, 10, 180, 13, 180, 180, 180, + + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 34, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 48, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 59, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 78, 180, 180, 86, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 102, 180, 180, 180, 107, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 132, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 147, 180, 180, + + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 20, 180, 22, 23, 24, 180, 180, 180, 29, 180, 180, 180, 32, 35, 180, + 180, 180, 180, 180, 41, 180, 180, 180, 46, 47, 180, 180, 180, 180, 180, 180, 180, 56, 180, 180, 180, + 61, 62, 180, 180, 66, 180, 68, 69, 180, 180, 180, 180, 180, 180, 82, 180, + + 85, 87, 88, 180, 90, 180, 180, 93, 180, 180, 180, 180, 180, 104, 180, 180, 180, 180, 113, 180, 180, + 116, 180, 180, 180, 180, 121, 180, 180, 180, 180, 126, 180, 180, 180, 180, 134, 135, 180, 180, 180, 180, + 180, 142, 143, 144, 180, 149, 180, 180, 180, 180, 180, 180, 180, 180, 180, 159, 180, 161, 180, 163, 164, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 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, 6, 8, 180, 11, 180, 15, 180, 180, 180, 180, 180, + + 180, 180, 180, 180, 31, 180, 180, 180, 180, 180, 180, 40, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 55, 57, 180, 180, 180, 64, 180, 70, 72, 180, 75, 76, 180, 180, 180, 180, 89, 91, 180, 94, + 95, 180, 98, 180, 180, 180, 180, 111, 112, 180, 180, 180, 180, 180, 120, 180, 180, 124, 180, 180, 180, + 180, 133, 180, 180, 180, 139, 180, 180, 180, 180, 180, 152, 180, 180, 180, 156, 180, 180, 180, 162, 165, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 14, 180, + 17, 180, 180, 180, 25, 27, 180, 30, 180, 180, 180, 180, 180, 39, 180, 43, + + 180, 45, 49, 50, 180, 52, 180, 180, 180, 60, 63, 65, 67, 73, 77, 180, 180, 180, 84, 92, 96, + 99, 180, 103, 180, 108, 180, 180, 180, 180, 180, 122, 180, 180, 127, 129, 131, 180, 137, 180, 140, 180, + 180, 180, 180, 180, 153, 154, 155, 157, 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 9, 16, 18, 21, 180, 26, 28, 180, 180, 180, 37, 38, 180, 180, 51, 53, 54, + 180, 79, 180, 180, 97, 100, 180, 180, 180, 180, 118, 119, 180, 180, 128, 130, 180, 138, 180, 180, 180, + 180, 180, 158, 160, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 0, 33, 180, 42, 44, 180, 180, 81, 105, + 180, 180, 180, 123, 125, 136, 180, 180, 180, 150, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 0, 180, 58, 80, 180, 115, 117, + 141, 145, 180, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 36, + 114, 180, 2, 2, 2, 2, 2, 2, 0, 0, 166, 148, 2, 2, 2, 2, + + 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, + 167, 2, 2, 0, 2, 0, 2, 177, 2, 0}; + +static const YY_CHAR yy_ec[256] = { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, 6, 6, 6, 6, 8, 9, 6, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 6, 6, 20, 21, 22, 6, 1, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 6, 1, 6, 6, 49, 1, 50, 51, 52, 53, + + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 6, 76, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + +static const YY_CHAR yy_meta[77] = {0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1}; + +static const flex_int16_t yy_base[1339] = { + 0, 0, 0, 839, 837, 76, 0, 842, 8771, 151, 153, 785, 0, 8771, 8771, 149, 148, 160, 159, + 783, 782, 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, 171, 215, 218, 244, 295, 257, 0, + 309, 349, 392, 163, 279, 226, 180, 723, 0, 791, 0, 237, 251, 775, 743, 0, 0, 243, 378, + 451, 237, 682, 680, 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, 532, 533, 534, 846, 895, + 944, 547, 602, 990, 1042, 307, 650, 587, 651, 596, 301, 8771, 666, 8771, 657, 1107, 1117, 1128, 8771, + 8771, 8771, 8771, 0, 218, 243, + + 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, 694, 389, 345, 440, 710, 387, 388, 436, 439, + 462, 469, 763, 465, 467, 465, 542, 480, 484, 498, 521, 531, 553, 572, 0, 588, 588, 654, 592, + 601, 588, 608, 651, 717, 598, 649, 655, 651, 707, 660, 716, 715, 0, 719, 708, 754, 744, 762, + 760, 757, 802, 768, 792, 770, 846, 810, 776, 812, 799, 817, 821, 838, 821, 816, 816, 854, 861, + 829, 848, 853, 894, 872, 859, 879, 8771, 0, 8771, 0, 396, 0, 663, 0, 636, 1138, 1148, 1159, + 0, 0, 0, 0, 906, + + 942, 955, 1015, 1156, 1034, 1155, 1202, 1152, 1040, 1195, 1199, 1232, 1272, 1257, 1272, 1301, 1353, 1350, 1361, + 1388, 1402, 1413, 1443, 1492, 1437, 1479, 1491, 1528, 1536, 1536, 1561, 1575, 1577, 1590, 1618, 1621, 1629, 1668, + 1717, 1639, 1682, 1683, 1707, 1764, 1816, 1762, 1714, 1808, 1817, 1857, 1860, 1881, 1904, 1873, 1917, 1940, 1773, + 1952, 1984, 1993, 1991, 2027, 2040, 2046, 2076, 2125, 2098, 2089, 2137, 2138, 2176, 2173, 2207, 2191, 2225, 2247, + 2263, 2310, 2271, 2295, 2314, 2325, 2339, 2363, 2375, 0, 8771, 601, 2440, 0, 882, 0, 900, 896, 0, + 921, 0, 912, 925, 918, + + 941, 943, 951, 1158, 951, 960, 972, 984, 984, 1009, 992, 995, 1009, 998, 1047, 1054, 1063, 1210, 1159, + 1160, 1152, 1210, 1209, 1223, 0, 1231, 1229, 1262, 1248, 1256, 1256, 1256, 1271, 1279, 1286, 1287, 1292, 1307, + 1318, 1301, 1320, 1321, 1311, 1316, 1325, 1324, 1339, 1346, 1347, 1403, 1339, 1370, 0, 1368, 1401, 1414, 1427, + 1464, 1429, 1432, 1421, 1427, 1439, 0, 1471, 1465, 1468, 1486, 1504, 1505, 1493, 1648, 1512, 1555, 1516, 1547, + 1553, 1582, 1574, 1587, 1607, 1601, 1620, 1628, 1643, 0, 1637, 1651, 1663, 1684, 1683, 1697, 1715, 1729, 1737, + 1752, 1762, 0, 1756, 1807, + + 1768, 1809, 1772, 1790, 1797, 1802, 1830, 1811, 1823, 1872, 1867, 1870, 0, 600, 2450, 2443, 2444, 2445, 2446, + 2373, 2480, 2488, 2489, 2500, 2528, 2536, 2541, 2543, 2557, 2606, 2582, 2607, 2620, 2656, 2632, 2668, 2666, 2697, + 2709, 2711, 2725, 2750, 2768, 2765, 2800, 2809, 2818, 2844, 2859, 2857, 2862, 2907, 2898, 2912, 2912, 2933, 2957, + 2954, 2982, 3008, 2980, 3029, 3033, 3037, 3075, 3079, 3078, 3123, 3126, 3135, 3161, 3176, 3179, 3191, 3205, 3217, + 3229, 3244, 3248, 3272, 3273, 3292, 3317, 3369, 3295, 3331, 3366, 3330, 3391, 3394, 3419, 3426, 3440, 3454, 3465, + 3479, 3494, 3546, 3494, 3596, + + 3529, 3572, 3513, 3624, 3583, 3632, 3645, 3668, 3680, 3685, 3688, 3693, 3729, 3734, 3737, 3736, 3744, 3780, 3784, + 3793, 3826, 3829, 3846, 3849, 3875, 3878, 3898, 3903, 3900, 3948, 3919, 3947, 3975, 3989, 4003, 4019, 4033, 4057, + 582, 1908, 1917, 1913, 1914, 1924, 1930, 1941, 1933, 1944, 0, 1950, 0, 0, 1979, 1977, 1983, 1977, 0, + 1976, 1981, 2001, 1991, 0, 2001, 2008, 2013, 2024, 2048, 2032, 2050, 2047, 2050, 0, 0, 2059, 2066, 2072, + 2085, 2105, 2107, 2119, 0, 2137, 2144, 2159, 0, 0, 2166, 2152, 0, 2183, 0, 2191, 2209, 2199, 2198, + 2214, 2221, 2311, 0, 2230, + + 0, 0, 0, 2235, 0, 2248, 2263, 0, 2265, 2374, 2266, 2276, 2300, 0, 2311, 2319, 2351, 2356, 0, + 2366, 2373, 0, 2381, 2388, 2397, 2451, 0, 2444, 2445, 2444, 2464, 0, 2498, 2503, 2517, 2517, 0, 0, + 2536, 2553, 2554, 2560, 2559, 0, 0, 2560, 2594, 0, 2614, 2598, 2609, 2646, 2669, 2655, 2672, 2681, 2687, + 0, 2678, 0, 2696, 0, 2700, 544, 4068, 4071, 4096, 4115, 4118, 4125, 4120, 4161, 4169, 4172, 4181, 4210, + 4211, 4229, 4251, 4263, 4264, 4265, 4293, 4300, 4317, 4318, 4343, 4343, 4359, 4390, 4401, 4425, 4443, 4451, 4468, + 4484, 4487, 4493, 4529, 4535, + + 4543, 4573, 4576, 4597, 4504, 4598, 4624, 4626, 4652, 4650, 4664, 4682, 4696, 4694, 4701, 4731, 4737, 4748, 4749, + 4783, 4791, 4794, 4839, 4835, 4836, 4877, 4880, 4881, 4921, 4924, 4925, 4964, 4969, 4972, 4971, 4974, 5014, 5014, + 5022, 5058, 5066, 5067, 5096, 5108, 5111, 5120, 5149, 5150, 5168, 5194, 5202, 5203, 5216, 5242, 5244, 5268, 5256, + 5290, 5295, 5299, 5312, 5334, 5342, 5341, 5347, 5366, 5388, 5391, 5396, 5410, 5398, 5417, 5441, 5447, 5455, 5471, + 5490, 5504, 5501, 5532, 5544, 5549, 5583, 5584, 5585, 5597, 5598, 5629, 543, 0, 0, 2701, 0, 2724, 0, + 2726, 2713, 2739, 2764, 2769, + + 2765, 2761, 2769, 2784, 0, 2780, 2804, 2813, 2828, 2819, 2858, 0, 2869, 2859, 2869, 2887, 2923, 2909, 2913, + 2919, 2952, 2959, 0, 0, 2960, 2965, 2989, 2992, 3020, 0, 0, 3012, 0, 0, 3015, 3032, 3036, 3027, + 0, 0, 3077, 0, 0, 3090, 3077, 3105, 3087, 3101, 3090, 0, 0, 3107, 3095, 3143, 3134, 3138, 0, + 3158, 3173, 0, 3191, 3197, 3198, 3204, 0, 3230, 3242, 3247, 3233, 3258, 3286, 3313, 3315, 3316, 0, 3347, + 3354, 3356, 0, 3349, 3385, 3389, 0, 0, 536, 5632, 5633, 5673, 5674, 5685, 5686, 5724, 5725, 5743, 5738, + 5778, 5770, 5793, 5810, 5813, + + 5818, 5812, 5832, 5862, 5871, 5869, 5870, 5896, 5920, 5921, 5925, 5945, 5950, 5969, 5994, 5971, 6018, 6042, 6023, + 6064, 6072, 6098, 6025, 6107, 6113, 6137, 6143, 6151, 6167, 6181, 6195, 6220, 6209, 6225, 6249, 6255, 6273, 6279, + 6297, 6308, 6315, 6345, 6351, 6364, 6392, 6395, 6406, 6412, 6446, 6454, 6482, 6490, 6504, 6516, 6528, 6540, 6558, + 6570, 6584, 6598, 6572, 6596, 6637, 6628, 6635, 6653, 6671, 6695, 6701, 6714, 6725, 6752, 6754, 6778, 6786, 6788, + 6807, 6831, 6828, 6837, 526, 3399, 0, 3396, 0, 3401, 3417, 3409, 3416, 0, 3436, 0, 3440, 3456, 3480, + 3477, 3482, 0, 3520, 0, + + 3520, 0, 0, 0, 3533, 0, 3542, 3538, 3551, 0, 0, 0, 0, 0, 0, 3544, 3558, 3566, 0, + 0, 3554, 0, 3565, 0, 3591, 0, 3581, 3596, 3605, 3622, 3606, 0, 3630, 3642, 3630, 3631, 0, 3647, + 0, 3662, 0, 3678, 3698, 3701, 3731, 3784, 0, 0, 0, 0, 3775, 3785, 525, 6866, 6875, 6873, 6882, + 6891, 6884, 6920, 6927, 6935, 6936, 6971, 6977, 6980, 7022, 7018, 7031, 7062, 7073, 7076, 7104, 7117, 7118, 7148, + 7156, 7161, 7161, 7197, 7205, 7210, 7224, 7246, 7249, 7254, 7268, 7290, 7298, 7316, 7324, 7338, 7343, 7359, 7367, + 7373, 7403, 7397, 7421, 7441, + + 7446, 7454, 7476, 7490, 7504, 7518, 7525, 7533, 7539, 7563, 7569, 7577, 7593, 7612, 7636, 7635, 7659, 7680, 7677, + 7683, 7701, 7724, 7727, 7743, 529, 0, 0, 0, 0, 3796, 0, 0, 436, 3797, 3805, 0, 0, 3805, + 3802, 0, 0, 0, 3828, 0, 3849, 3845, 0, 0, 3841, 3861, 3880, 3886, 0, 0, 3917, 3937, 0, + 0, 3934, 0, 3938, 3956, 3957, 3974, 3977, 0, 0, 527, 7757, 7771, 7785, 7799, 7620, 7810, 7824, 7863, + 7848, 7866, 7878, 7892, 7904, 7907, 7916, 7942, 7955, 7957, 7971, 7990, 7987, 8011, 8020, 8046, 8058, 8063, 8062, + 8065, 8095, 8106, 8137, 8119, + + 8150, 8173, 8186, 8197, 8194, 8227, 8244, 8245, 8247, 8279, 526, 3973, 4081, 0, 3972, 0, 0, 3990, 3982, + 0, 0, 3989, 4018, 4029, 0, 0, 0, 4021, 4035, 4057, 0, 4063, 524, 8298, 4259, 8293, 8317, 8342, + 8343, 8356, 8357, 8371, 8396, 8397, 8406, 8412, 8442, 8448, 8456, 8481, 8495, 8500, 8503, 8525, 514, 438, 4062, + 4083, 0, 0, 4072, 0, 0, 0, 0, 4116, 0, 506, 8563, 4119, 8544, 8549, 8578, 8551, 8570, 8594, + 8605, 8613, 8633, 8638, 470, 4161, 4142, 0, 0, 4154, 468, 4396, 4168, 8652, 8657, 8659, 465, 4221, 8771, + 0, 418, 4227, 0, 8667, + + 418, 4213, 390, 4214, 388, 4223, 386, 4242, 347, 4275, 343, 4301, 338, 4306, 335, 4320, 334, 4329, 332, + 4357, 303, 8771, 293, 0, 299, 286, 248, 243, 8771, 0, 8771, 8740, 8745, 201, 8750, 8755, 8760, 8765}; + +static const flex_int16_t yy_def[1339] = { + 0, 1331, 1, 1332, 1332, 1331, 5, 1331, 1331, 1331, 1331, 1331, 1333, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1331, 1336, 1337, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1338, 1338, 62, 62, 62, 63, 65, 62, 65, 62, 62, 62, 62, 63, 63, + 63, 62, 62, 62, 62, 65, 62, 62, 62, 1336, 1331, 1331, 1333, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1336, 1337, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 62, + + 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 65, 62, 62, 62, 65, 65, 65, + 62, 65, 65, 65, 62, 65, 65, 62, 65, 62, 65, 62, 62, 65, 65, 65, 65, 62, 62, + 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, + 62, 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, + 63, 62, 62, 62, 65, 62, 62, 62, 62, 1336, 1331, 1331, 1331, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1336, 1336, 62, 62, 62, 62, + 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 62, + 62, 62, 62, 65, 65, + + 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, + 65, 65, 65, 62, 62, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 62, 62, 62, 65, 62, 65, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, + 65, 65, 65, 65, 65, + + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 62, 62, + + 62, 65, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, + 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, 65, + 65, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 65, + 65, 65, 65, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 62, 65, 65, + 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 65, 65, 65, 65, 62, + + 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 65, 65, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, + 65, 65, 65, 65, 65, + + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 1331, 1334, 1331, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 1336, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 1331, 1334, 1331, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 1336, 62, 62, 62, 65, 65, 65, + 65, 65, 62, 62, 1331, 1331, 1331, 1334, 1334, 1334, 1336, 1336, 1336, 62, 62, 65, 1331, 1331, 1331, + 1334, 1336, 1336, 1336, 65, + + 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, + 1336, 1331, 1331, 1336, 1336, 1331, 1336, 1331, 1336, 1331, 1336, 0, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; + +static const flex_int16_t yy_nxt[8848] = { + 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, + + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, 77, + 85, 86, 86, 86, 86, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 90, + 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 99, 105, 100, 129, + 131, 106, 109, 139, 101, 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, + + 177, 111, 108, 178, 112, 98, 183, 113, 99, 105, 100, 129, 131, 106, 109, 139, 101, + 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, 177, 111, 108, 178, 112, 114, 183, + 113, 119, 115, 120, 188, 86, 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, 191, + 143, 86, 86, 146, 181, 182, 196, 197, 114, 1330, 192, 119, 115, 120, 1329, 147, 116, + 141, 121, 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, 148, 146, 181, 182, 291, + 124, 149, 150, 125, 296, 157, 126, 134, 147, 127, 1328, 158, 128, 135, 136, + + 137, 179, 86, 86, 123, 138, 156, 148, 1327, 180, 1326, 291, 124, 149, 150, 125, 296, + 157, 126, 134, 1325, 127, 151, 158, 128, 135, 136, 137, 179, 297, 152, 159, 138, 292, + 153, 160, 180, 154, 155, 161, 200, 293, 278, 301, 279, 162, 1323, 280, 1321, 151, 294, + 1319, 200, 295, 1317, 302, 297, 152, 159, 1315, 292, 153, 160, 1313, 154, 155, 161, 200, + 293, 278, 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, 295, 166, 302, 167, 312, + 168, 169, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 188, 86, 1311, + + 163, 1309, 164, 305, 1307, 165, 298, 299, 166, 303, 167, 312, 168, 169, 170, 310, 304, + 231, 171, 200, 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, 322, 175, 1305, 298, + 299, 1303, 303, 1213, 1213, 1282, 1282, 170, 310, 304, 231, 171, 200, 300, 172, 173, 232, + 200, 311, 320, 321, 174, 200, 322, 175, 194, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, 233, 313, 1301, 1297, 200, + 1293, 314, 325, 234, 187, 187, 187, 200, 326, 235, 201, 200, 202, 332, 323, + + 333, 334, 241, 203, 200, 204, 324, 233, 313, 205, 206, 200, 200, 314, 325, 234, 337, + 338, 1287, 200, 326, 235, 201, 200, 202, 332, 1281, 333, 334, 241, 203, 200, 204, 1268, + 339, 1255, 205, 206, 1233, 200, 1211, 1168, 1125, 337, 338, 187, 187, 187, 1053, 187, 187, + 187, 187, 187, 187, 981, 885, 340, 242, 243, 246, 339, 200, 244, 247, 187, 187, 187, + 200, 245, 248, 341, 207, 200, 342, 335, 208, 200, 200, 200, 200, 336, 209, 200, 340, + 242, 243, 246, 343, 200, 244, 247, 210, 200, 789, 200, 245, 248, 341, 207, + + 200, 342, 335, 208, 200, 200, 200, 200, 336, 209, 200, 664, 539, 200, 344, 343, 283, + 284, 345, 210, 200, 187, 211, 200, 261, 346, 200, 351, 262, 212, 200, 352, 263, 200, + 353, 354, 213, 360, 264, 214, 200, 344, 215, 283, 284, 345, 200, 414, 200, 211, 200, + 261, 346, 200, 351, 262, 212, 200, 352, 263, 200, 353, 354, 213, 360, 264, 214, 413, + 288, 215, 287, 286, 281, 200, 216, 200, 200, 285, 217, 347, 282, 200, 218, 355, 361, + 356, 200, 200, 219, 348, 362, 220, 363, 366, 349, 350, 200, 200, 200, 281, + + 199, 216, 198, 200, 285, 217, 347, 282, 200, 218, 355, 361, 356, 200, 200, 219, 348, + 362, 220, 363, 366, 349, 350, 200, 200, 200, 200, 306, 307, 308, 200, 309, 315, 221, + 316, 222, 200, 317, 367, 357, 223, 358, 368, 318, 369, 224, 200, 187, 364, 370, 319, + 365, 359, 200, 306, 307, 308, 200, 309, 315, 221, 316, 222, 200, 317, 367, 357, 223, + 358, 368, 318, 369, 224, 200, 225, 364, 370, 319, 365, 359, 371, 200, 226, 372, 373, + 227, 374, 327, 228, 328, 375, 229, 376, 329, 230, 189, 380, 186, 184, 383, + + 330, 225, 97, 96, 331, 87, 389, 371, 200, 226, 372, 373, 227, 374, 327, 228, 328, + 375, 229, 376, 329, 230, 236, 380, 377, 381, 383, 330, 237, 238, 239, 331, 387, 389, + 390, 240, 382, 378, 391, 392, 200, 1331, 379, 47, 393, 47, 388, 396, 1331, 236, 397, + 377, 381, 398, 404, 237, 238, 239, 1331, 387, 1331, 390, 240, 382, 378, 391, 392, 200, + 249, 379, 384, 393, 394, 388, 396, 200, 399, 397, 405, 385, 398, 404, 250, 395, 401, + 200, 406, 386, 251, 252, 1331, 402, 407, 1331, 403, 249, 400, 384, 410, 394, + + 411, 412, 200, 399, 1331, 405, 385, 1331, 540, 250, 395, 401, 200, 406, 386, 251, 252, + 200, 402, 407, 408, 403, 253, 400, 200, 410, 541, 411, 412, 542, 254, 200, 200, 409, + 255, 540, 200, 256, 257, 1331, 1331, 1331, 200, 543, 200, 1331, 1331, 408, 544, 253, 1331, + 200, 200, 541, 1331, 545, 542, 254, 200, 200, 409, 255, 546, 200, 256, 257, 258, 416, + 200, 200, 543, 547, 200, 200, 1331, 544, 548, 259, 200, 200, 200, 200, 545, 260, 549, + 200, 200, 1331, 200, 546, 553, 200, 1331, 258, 416, 200, 417, 1331, 547, 200, + + 200, 200, 554, 548, 259, 200, 555, 200, 200, 1331, 260, 549, 200, 200, 265, 200, 266, + 553, 200, 267, 200, 1331, 268, 417, 269, 556, 270, 271, 200, 554, 557, 558, 559, 555, + 560, 561, 200, 1331, 562, 1331, 1331, 265, 1331, 266, 1331, 1331, 267, 200, 418, 268, 200, + 269, 556, 270, 271, 200, 419, 557, 558, 559, 200, 560, 561, 200, 272, 562, 200, 200, + 273, 200, 200, 274, 275, 422, 200, 418, 428, 200, 276, 200, 563, 277, 200, 419, 564, + 565, 200, 200, 200, 1331, 1331, 272, 1331, 200, 200, 273, 200, 200, 274, 275, + + 422, 200, 1331, 428, 1331, 276, 200, 563, 277, 1331, 1331, 564, 565, 200, 1331, 200, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, 289, 289, 289, 289, + 289, 289, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 194, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 420, 423, 427, 421, 550, 568, 551, + 200, 569, 200, 200, 200, 200, 200, 200, 570, 1331, 200, 200, 200, 1331, 552, + + 200, 200, 1331, 1331, 1331, 420, 423, 427, 421, 550, 568, 551, 200, 569, 200, 200, 200, + 200, 200, 200, 570, 200, 200, 200, 200, 200, 552, 200, 200, 424, 425, 200, 429, 571, + 200, 200, 566, 200, 1331, 430, 1331, 200, 200, 426, 200, 1331, 572, 200, 200, 573, 1331, + 567, 200, 574, 431, 575, 424, 425, 200, 429, 571, 200, 200, 566, 200, 200, 430, 200, + 200, 200, 426, 200, 200, 572, 200, 1331, 573, 200, 567, 1331, 574, 431, 575, 436, 1331, + 1331, 576, 200, 577, 578, 1331, 1331, 200, 437, 200, 579, 580, 581, 200, 200, + + 1331, 582, 200, 200, 200, 432, 433, 434, 200, 435, 436, 438, 200, 576, 200, 577, 578, + 200, 200, 583, 437, 584, 579, 580, 581, 200, 585, 200, 582, 200, 200, 200, 432, 433, + 434, 200, 435, 200, 438, 200, 586, 587, 439, 588, 200, 200, 583, 440, 584, 589, 1331, + 590, 591, 585, 200, 592, 1331, 593, 200, 1331, 594, 1331, 1331, 1331, 200, 595, 1331, 586, + 587, 439, 588, 1331, 596, 597, 440, 441, 589, 442, 590, 591, 443, 600, 592, 200, 593, + 200, 444, 594, 200, 446, 447, 1331, 595, 445, 200, 200, 200, 1331, 200, 596, + + 597, 200, 441, 448, 442, 601, 200, 443, 600, 602, 200, 1331, 200, 444, 200, 200, 446, + 447, 200, 1331, 445, 200, 200, 200, 449, 200, 1331, 603, 200, 598, 448, 1331, 601, 200, + 200, 200, 602, 200, 451, 599, 1331, 200, 450, 1331, 604, 200, 200, 200, 200, 1331, 1331, + 449, 605, 200, 603, 1331, 598, 608, 200, 1331, 609, 200, 200, 610, 200, 451, 599, 452, + 611, 450, 458, 604, 200, 200, 200, 200, 200, 200, 200, 605, 200, 612, 200, 200, 608, + 200, 606, 609, 200, 1331, 610, 1331, 1331, 613, 452, 611, 607, 458, 614, 200, + + 1331, 1331, 1331, 200, 200, 200, 1331, 615, 612, 200, 200, 1331, 459, 606, 200, 200, 453, + 200, 454, 200, 613, 200, 455, 607, 200, 614, 616, 460, 200, 456, 617, 618, 619, 457, + 615, 1331, 1331, 200, 200, 459, 1331, 200, 1331, 453, 200, 454, 200, 622, 200, 455, 625, + 200, 1331, 616, 460, 200, 456, 617, 618, 619, 457, 461, 200, 200, 200, 200, 200, 462, + 200, 464, 1331, 200, 463, 200, 622, 626, 200, 625, 1331, 623, 1331, 200, 200, 1331, 1331, + 1331, 627, 200, 461, 200, 200, 200, 624, 200, 462, 200, 464, 465, 200, 463, + + 200, 200, 626, 200, 628, 200, 623, 200, 200, 200, 200, 466, 200, 627, 200, 629, 630, + 467, 200, 624, 468, 200, 200, 200, 465, 469, 1331, 1331, 200, 1331, 200, 628, 200, 1331, + 200, 200, 1331, 200, 466, 200, 631, 632, 629, 630, 467, 1331, 633, 468, 200, 200, 200, + 200, 469, 200, 200, 200, 200, 200, 200, 471, 470, 200, 200, 200, 634, 200, 200, 631, + 632, 635, 620, 1331, 200, 633, 477, 200, 636, 1331, 200, 200, 200, 200, 200, 200, 200, + 200, 471, 470, 200, 621, 200, 634, 200, 200, 200, 637, 635, 620, 200, 200, + + 638, 477, 200, 636, 200, 472, 200, 1331, 200, 200, 1331, 200, 478, 200, 200, 1331, 621, + 639, 200, 200, 1331, 200, 637, 1331, 640, 200, 1331, 638, 200, 479, 1331, 200, 472, 200, + 480, 200, 200, 200, 641, 478, 200, 200, 473, 200, 639, 200, 200, 200, 642, 487, 200, + 640, 474, 200, 200, 200, 479, 475, 476, 200, 200, 480, 200, 1331, 200, 641, 643, 1331, + 1331, 473, 200, 1331, 1331, 1331, 200, 642, 487, 200, 644, 474, 200, 200, 1331, 1331, 475, + 476, 200, 645, 646, 200, 200, 647, 1331, 643, 200, 200, 481, 200, 482, 497, + + 200, 486, 200, 200, 650, 644, 1331, 200, 653, 200, 200, 1331, 654, 1331, 645, 646, 1331, + 200, 647, 200, 1331, 200, 200, 481, 200, 482, 497, 200, 486, 200, 200, 650, 655, 648, + 200, 653, 200, 200, 483, 654, 484, 200, 649, 488, 656, 651, 200, 652, 200, 200, 200, + 485, 200, 200, 657, 658, 200, 200, 489, 655, 648, 200, 200, 1331, 659, 483, 1331, 484, + 200, 649, 488, 656, 651, 1331, 652, 200, 200, 200, 485, 200, 200, 657, 658, 200, 200, + 489, 1331, 1331, 200, 200, 200, 659, 200, 492, 1331, 200, 662, 200, 490, 1331, + + 200, 491, 200, 493, 1331, 200, 200, 660, 200, 663, 1331, 661, 1331, 200, 200, 1331, 200, + 200, 200, 200, 492, 200, 200, 662, 200, 490, 200, 200, 491, 200, 493, 494, 200, 200, + 660, 200, 663, 200, 661, 200, 200, 200, 495, 200, 200, 200, 1331, 790, 200, 200, 200, + 1331, 200, 200, 1331, 1331, 791, 200, 494, 792, 793, 1331, 200, 794, 200, 795, 200, 796, + 797, 495, 798, 200, 799, 200, 790, 200, 200, 200, 200, 200, 200, 496, 200, 791, 200, + 200, 792, 793, 200, 200, 794, 498, 795, 1331, 796, 797, 1331, 798, 200, 799, + + 200, 800, 200, 1331, 1331, 200, 499, 200, 496, 200, 200, 801, 200, 802, 200, 200, 803, + 804, 498, 500, 200, 805, 1331, 501, 200, 200, 502, 806, 800, 200, 200, 200, 807, 499, + 808, 1331, 200, 200, 801, 200, 802, 200, 809, 803, 804, 1331, 500, 200, 805, 503, 501, + 200, 1331, 502, 806, 810, 200, 200, 200, 807, 200, 808, 504, 200, 1331, 811, 200, 505, + 506, 809, 812, 813, 200, 200, 814, 200, 503, 815, 1331, 507, 200, 200, 810, 816, 1331, + 200, 200, 200, 1331, 504, 508, 200, 811, 1331, 505, 506, 817, 812, 813, 200, + + 200, 814, 200, 818, 815, 509, 507, 200, 200, 200, 816, 200, 200, 200, 819, 200, 200, + 508, 200, 515, 513, 200, 1331, 817, 200, 200, 820, 821, 200, 822, 818, 1331, 509, 1331, + 514, 200, 200, 1331, 200, 1331, 1331, 819, 200, 200, 200, 823, 515, 513, 200, 510, 1331, + 200, 200, 820, 821, 200, 822, 1331, 511, 516, 200, 514, 200, 200, 200, 200, 512, 200, + 200, 1331, 200, 200, 823, 200, 200, 1331, 510, 517, 824, 1331, 825, 826, 1331, 200, 200, + 511, 516, 200, 827, 828, 200, 200, 200, 512, 200, 200, 519, 200, 518, 200, + + 200, 200, 200, 200, 517, 824, 200, 825, 826, 200, 200, 200, 200, 1331, 1331, 827, 828, + 522, 829, 200, 1331, 200, 200, 519, 1331, 518, 200, 200, 1331, 200, 200, 830, 1331, 200, + 1331, 831, 200, 200, 832, 200, 200, 520, 200, 833, 522, 829, 200, 200, 200, 200, 1331, + 200, 521, 834, 200, 200, 1331, 1331, 830, 523, 835, 200, 831, 838, 200, 832, 1331, 200, + 520, 200, 833, 200, 1331, 200, 200, 1331, 839, 200, 200, 521, 834, 840, 200, 200, 524, + 525, 523, 835, 200, 841, 838, 842, 200, 200, 1331, 845, 530, 200, 200, 200, + + 200, 200, 200, 839, 200, 526, 1331, 200, 840, 1331, 200, 524, 525, 1331, 1331, 846, 841, + 200, 842, 200, 200, 200, 845, 530, 200, 531, 200, 1331, 200, 200, 847, 200, 526, 527, + 200, 848, 200, 1331, 1331, 836, 528, 200, 846, 529, 200, 849, 200, 532, 200, 200, 837, + 534, 531, 533, 200, 200, 200, 847, 200, 200, 527, 200, 848, 200, 535, 536, 836, 528, + 200, 200, 529, 200, 849, 200, 532, 200, 200, 837, 534, 1331, 533, 200, 200, 200, 1331, + 200, 200, 1331, 200, 200, 850, 535, 536, 200, 1331, 851, 200, 538, 200, 200, + + 852, 200, 200, 853, 537, 200, 667, 854, 200, 200, 855, 200, 200, 200, 843, 844, 200, + 850, 200, 856, 200, 200, 851, 1331, 538, 1331, 200, 852, 200, 1331, 853, 537, 200, 667, + 854, 200, 200, 855, 200, 1331, 200, 843, 844, 1331, 1331, 200, 856, 1331, 200, 289, 289, + 289, 289, 289, 289, 289, 289, 289, 289, 415, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 200, 665, 200, 666, 200, 200, 200, 200, 857, 858, 200, 200, 200, 200, 1331, 859, + 860, 1331, 861, 1331, 200, 200, 200, 200, 1331, 1331, 1331, 200, 665, 200, 666, + + 200, 200, 200, 200, 857, 858, 200, 200, 200, 200, 668, 859, 860, 200, 861, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 862, 200, + 200, 1331, 669, 668, 863, 1331, 200, 864, 200, 865, 1331, 1331, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 670, 862, 200, 200, 200, 669, 200, 863, 200, 200, + 864, 866, 865, 672, 200, 200, 200, 1331, 673, 200, 200, 867, 671, 200, 200, 200, 868, + 670, 869, 200, 200, 200, 674, 200, 200, 200, 200, 870, 866, 200, 672, 200, + + 871, 200, 200, 673, 200, 200, 867, 671, 200, 200, 200, 868, 200, 869, 200, 200, 1331, + 674, 200, 200, 1331, 678, 870, 1331, 200, 1331, 1331, 871, 200, 200, 675, 1331, 676, 200, + 872, 200, 200, 200, 873, 200, 874, 1331, 200, 200, 875, 200, 200, 677, 678, 679, 200, + 1331, 200, 200, 680, 200, 200, 675, 200, 676, 200, 872, 200, 200, 200, 873, 200, 874, + 200, 200, 200, 875, 1331, 200, 677, 1331, 679, 200, 682, 200, 200, 680, 200, 200, 1331, + 200, 200, 1331, 876, 200, 683, 877, 200, 200, 200, 200, 878, 681, 200, 200, + + 879, 200, 200, 1331, 200, 682, 684, 880, 1331, 200, 1331, 200, 1331, 200, 200, 876, 881, + 683, 877, 200, 882, 200, 883, 878, 681, 200, 200, 879, 200, 200, 200, 200, 200, 684, + 880, 686, 685, 200, 200, 200, 884, 200, 200, 881, 200, 200, 200, 882, 982, 883, 983, + 687, 984, 1331, 985, 200, 200, 200, 688, 200, 200, 986, 686, 685, 200, 200, 200, 884, + 1331, 200, 200, 200, 200, 200, 1331, 982, 200, 983, 687, 984, 689, 985, 200, 200, 1331, + 688, 200, 200, 986, 987, 690, 691, 200, 988, 200, 200, 200, 200, 200, 1331, + + 989, 200, 990, 200, 200, 991, 692, 689, 1331, 1331, 992, 200, 1331, 200, 200, 993, 987, + 690, 691, 1331, 988, 200, 200, 200, 693, 200, 200, 989, 200, 990, 200, 200, 991, 692, + 994, 694, 200, 992, 200, 200, 1331, 200, 993, 1331, 200, 200, 200, 1331, 200, 995, 996, + 693, 997, 200, 200, 200, 1331, 200, 1331, 695, 1331, 994, 694, 200, 200, 1331, 200, 696, + 1331, 1331, 200, 200, 200, 200, 200, 200, 995, 996, 1331, 997, 200, 200, 200, 698, 998, + 200, 695, 200, 200, 200, 200, 200, 200, 200, 696, 200, 697, 200, 200, 999, + + 1000, 200, 1331, 200, 1001, 200, 1331, 200, 200, 1331, 698, 998, 200, 1002, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 697, 700, 200, 999, 1000, 200, 699, 200, 1001, 200, 200, + 200, 200, 701, 200, 200, 1331, 1002, 1331, 200, 200, 200, 200, 1331, 200, 200, 1003, 1004, + 700, 702, 200, 1005, 200, 699, 200, 200, 1006, 200, 200, 1331, 701, 200, 200, 703, 1331, + 200, 200, 200, 200, 200, 200, 200, 200, 1003, 1004, 200, 702, 200, 1005, 1007, 1008, 200, + 200, 1006, 200, 1331, 200, 200, 1331, 200, 703, 705, 200, 704, 200, 1331, 200, + + 200, 1331, 200, 1331, 1009, 200, 1010, 1331, 706, 1007, 1008, 1331, 200, 708, 200, 200, 200, + 200, 200, 200, 200, 705, 1011, 704, 200, 200, 200, 1331, 200, 200, 707, 1009, 1012, 1010, + 200, 706, 1331, 1331, 200, 200, 708, 1331, 200, 1331, 200, 200, 1331, 200, 1013, 1011, 1331, + 1331, 200, 1014, 200, 200, 1015, 707, 1016, 1012, 1019, 200, 200, 709, 200, 200, 200, 710, + 200, 200, 711, 200, 200, 200, 200, 1013, 1017, 200, 200, 1018, 1014, 200, 200, 1015, 1331, + 1016, 1331, 1019, 1331, 200, 709, 200, 1331, 200, 710, 200, 200, 711, 712, 200, + + 200, 200, 1020, 1017, 200, 200, 1018, 714, 200, 200, 200, 200, 200, 200, 200, 200, 1021, + 1022, 200, 200, 200, 713, 1331, 200, 200, 712, 1331, 1023, 1024, 1020, 1025, 1026, 1331, 1027, + 714, 200, 1028, 200, 200, 200, 200, 200, 200, 1021, 1022, 200, 200, 200, 713, 200, 200, + 200, 200, 715, 1023, 1024, 200, 1025, 1026, 200, 1027, 200, 200, 1028, 1331, 200, 1331, 716, + 1029, 200, 1331, 200, 200, 1030, 717, 1331, 200, 1031, 1331, 200, 715, 200, 1331, 200, 1032, + 1331, 200, 200, 200, 200, 1331, 200, 200, 718, 716, 1029, 200, 200, 200, 200, + + 1030, 717, 200, 1033, 1031, 720, 200, 200, 200, 200, 1331, 1032, 719, 1034, 200, 200, 1331, + 721, 200, 1035, 718, 200, 200, 1036, 200, 200, 1331, 200, 1331, 200, 1033, 722, 720, 200, + 200, 200, 200, 200, 1331, 719, 1034, 200, 200, 723, 721, 1037, 1035, 200, 200, 200, 1036, + 200, 200, 724, 200, 200, 1331, 1331, 722, 200, 1038, 1331, 200, 200, 200, 200, 1331, 1039, + 200, 1040, 723, 725, 1037, 1041, 200, 200, 1331, 200, 200, 726, 724, 200, 200, 200, 200, + 1331, 200, 1038, 200, 200, 200, 1331, 200, 200, 1039, 1331, 1040, 1042, 725, 728, + + 1041, 1331, 200, 200, 200, 200, 726, 200, 200, 200, 200, 200, 200, 727, 1331, 200, 200, + 200, 200, 200, 200, 200, 729, 733, 1042, 200, 728, 1043, 200, 1331, 200, 200, 200, 1331, + 200, 1044, 200, 1045, 200, 200, 727, 200, 730, 200, 200, 200, 200, 200, 200, 729, 733, + 1046, 200, 200, 1043, 200, 200, 200, 200, 734, 200, 200, 1044, 200, 1045, 200, 200, 200, + 200, 730, 200, 736, 1331, 1047, 200, 1331, 200, 200, 1046, 1048, 200, 1331, 1049, 200, 200, + 1331, 734, 200, 200, 1050, 200, 731, 200, 200, 200, 200, 200, 1331, 736, 200, + + 1047, 732, 200, 200, 200, 200, 1048, 1051, 735, 1049, 1331, 1052, 200, 1331, 1331, 200, 1050, + 200, 731, 200, 200, 200, 200, 200, 200, 1126, 200, 200, 732, 200, 200, 1127, 200, 737, + 1051, 735, 1128, 200, 1052, 200, 200, 738, 200, 1129, 200, 200, 1331, 200, 200, 200, 1130, + 200, 1126, 1331, 200, 200, 1131, 200, 1127, 739, 737, 200, 1331, 1128, 200, 200, 200, 200, + 738, 1132, 1129, 200, 200, 200, 1331, 200, 200, 1130, 1331, 740, 200, 1133, 200, 1131, 1331, + 200, 739, 200, 200, 200, 1134, 742, 200, 200, 741, 200, 1132, 1331, 200, 200, + + 200, 200, 200, 1331, 1135, 743, 740, 200, 1133, 200, 1136, 200, 200, 1331, 200, 200, 200, + 1134, 742, 1331, 200, 741, 200, 1137, 200, 200, 200, 200, 200, 747, 200, 1135, 743, 744, + 200, 1331, 200, 1136, 200, 200, 200, 1331, 200, 1138, 1139, 1331, 752, 200, 200, 1331, 1137, + 200, 200, 200, 200, 1331, 747, 200, 200, 1140, 744, 200, 200, 750, 200, 1331, 200, 200, + 745, 200, 1138, 1139, 200, 752, 200, 200, 200, 1141, 1331, 1142, 200, 1143, 200, 1144, 1145, + 200, 1140, 746, 1146, 200, 750, 200, 200, 1331, 1147, 745, 200, 1331, 1148, 200, + + 751, 200, 1331, 200, 1141, 200, 1142, 200, 1143, 200, 1144, 1145, 200, 1149, 746, 1146, 200, + 200, 200, 200, 748, 1147, 1150, 200, 754, 1148, 1151, 751, 200, 200, 1331, 200, 200, 749, + 200, 1152, 200, 1331, 1331, 200, 1149, 200, 1331, 200, 200, 200, 753, 748, 1153, 1150, 200, + 754, 1154, 1151, 1155, 200, 200, 200, 200, 200, 749, 755, 1152, 200, 200, 200, 1156, 200, + 200, 200, 1157, 1158, 200, 753, 1331, 1153, 1331, 200, 756, 1154, 200, 1155, 1159, 1331, 200, + 200, 200, 1331, 755, 1331, 200, 200, 200, 1156, 200, 1160, 200, 1157, 1158, 200, + + 1161, 200, 1331, 200, 200, 756, 758, 200, 757, 1159, 200, 200, 200, 200, 760, 200, 200, + 200, 200, 200, 1162, 759, 1160, 200, 200, 1163, 200, 1161, 200, 200, 200, 200, 1331, 758, + 200, 757, 1331, 200, 200, 200, 200, 760, 200, 200, 1331, 200, 200, 1162, 759, 1331, 200, + 200, 1163, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, + 761, 764, 200, 200, 1164, 200, 763, 200, 200, 200, 762, 200, 200, 200, 200, 200, 200, + 765, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 761, 764, 200, 200, 1164, + + 200, 763, 200, 200, 200, 762, 200, 200, 200, 1165, 200, 200, 765, 200, 1166, 200, 200, + 767, 1167, 200, 200, 766, 1212, 1214, 200, 200, 200, 1215, 200, 200, 768, 1216, 1331, 200, + 1331, 1331, 1165, 1331, 200, 1331, 200, 1166, 200, 1217, 767, 1167, 200, 200, 766, 1212, 1214, + 200, 200, 200, 1215, 200, 200, 768, 1216, 200, 200, 200, 200, 1218, 770, 200, 200, 769, + 1331, 200, 1217, 200, 771, 1219, 200, 200, 200, 1331, 1220, 200, 1221, 1331, 200, 1331, 1331, + 200, 200, 1222, 200, 200, 1218, 770, 200, 200, 769, 200, 200, 1331, 200, 771, + + 1219, 200, 200, 200, 773, 1220, 200, 1221, 200, 200, 772, 200, 200, 774, 1222, 200, 1223, + 1331, 200, 200, 200, 1224, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 773, 1331, 200, + 775, 200, 778, 772, 200, 776, 774, 777, 200, 1223, 200, 200, 200, 200, 1224, 200, 200, + 200, 200, 200, 780, 200, 200, 200, 1225, 200, 200, 775, 1331, 778, 200, 1331, 776, 1331, + 777, 1226, 779, 200, 1331, 200, 200, 1227, 200, 1228, 200, 200, 200, 780, 200, 1331, 200, + 1225, 200, 200, 1331, 781, 1229, 200, 200, 1331, 200, 1331, 1226, 779, 1230, 782, + + 1231, 200, 1227, 1232, 1228, 200, 1331, 200, 200, 200, 200, 200, 1256, 1258, 200, 200, 781, + 1229, 1259, 200, 200, 200, 200, 1260, 200, 1230, 782, 1231, 1261, 200, 1232, 1331, 1331, 783, + 200, 200, 200, 200, 200, 1256, 1258, 1331, 200, 200, 784, 1259, 1331, 200, 200, 200, 1260, + 200, 200, 1262, 785, 1261, 200, 1263, 786, 200, 783, 200, 787, 200, 200, 200, 200, 1264, + 200, 1331, 200, 784, 1265, 200, 1331, 200, 1331, 1331, 200, 200, 1262, 785, 1213, 1213, 1263, + 786, 200, 1266, 1267, 787, 200, 200, 200, 200, 1264, 200, 788, 200, 1283, 1265, + + 200, 200, 200, 200, 200, 200, 200, 886, 200, 1284, 887, 200, 1285, 200, 1266, 1267, 200, + 200, 1331, 200, 1257, 1331, 200, 788, 200, 1283, 200, 1331, 200, 200, 200, 200, 200, 200, + 886, 200, 1284, 887, 200, 1285, 200, 200, 888, 200, 200, 200, 892, 1257, 200, 200, 200, + 200, 1286, 200, 200, 1289, 200, 890, 200, 200, 891, 889, 1282, 1282, 200, 200, 200, 1331, + 200, 888, 200, 200, 200, 892, 1331, 200, 1331, 200, 200, 1286, 1331, 200, 1289, 200, 890, + 200, 1295, 891, 889, 1296, 1331, 200, 200, 200, 200, 894, 893, 200, 200, 200, + + 1331, 200, 200, 895, 1294, 200, 200, 200, 200, 1331, 1331, 200, 1299, 1295, 1331, 200, 1296, + 200, 200, 1331, 1331, 200, 894, 893, 1331, 200, 200, 200, 200, 200, 895, 1294, 200, 200, + 200, 200, 200, 200, 200, 1299, 200, 200, 200, 1302, 200, 200, 200, 200, 1331, 1304, 1331, + 896, 1306, 1308, 200, 200, 200, 200, 1331, 200, 1235, 1213, 1331, 200, 200, 200, 1331, 200, + 200, 1310, 1302, 1331, 1331, 200, 200, 200, 1304, 200, 896, 1306, 1308, 200, 200, 200, 200, + 897, 200, 200, 1312, 200, 200, 200, 200, 898, 200, 200, 1310, 200, 1270, 200, + + 200, 200, 200, 899, 200, 1314, 1331, 1331, 200, 200, 200, 200, 897, 1331, 200, 1312, 200, + 200, 200, 200, 898, 200, 200, 200, 200, 1270, 200, 200, 200, 200, 899, 1316, 1314, 200, + 900, 200, 200, 200, 200, 200, 901, 1318, 1331, 902, 200, 200, 200, 200, 200, 1331, 200, + 1331, 1331, 200, 200, 1320, 200, 1322, 1316, 903, 200, 900, 200, 200, 200, 1331, 200, 901, + 1318, 200, 902, 200, 200, 200, 200, 200, 904, 1331, 200, 200, 200, 200, 1320, 200, 1322, + 1324, 903, 1331, 200, 200, 200, 200, 200, 905, 200, 1331, 200, 1288, 1282, 200, + + 200, 1331, 1331, 904, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 1324, 1331, 1331, 200, 200, + 1331, 1331, 200, 905, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 906, 1331, + 200, 200, 200, 1331, 1331, 1298, 1331, 200, 907, 1331, 1331, 1331, 200, 908, 1331, 1331, 200, + 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 906, 200, 200, 200, 200, 1331, 200, 1298, 1331, + 200, 907, 200, 1331, 1331, 200, 908, 910, 200, 1331, 200, 1331, 1331, 1331, 909, 200, 200, + 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 200, 200, 911, 1331, + + 1331, 1331, 910, 200, 200, 200, 1331, 1331, 1331, 909, 200, 200, 1331, 200, 200, 200, 1331, + 912, 200, 200, 200, 200, 200, 200, 200, 911, 200, 200, 200, 200, 919, 200, 200, 200, + 200, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 912, 1331, 200, 200, 1331, 200, 200, + 200, 1331, 200, 200, 200, 200, 919, 1331, 200, 200, 200, 200, 1331, 200, 200, 913, 200, + 200, 200, 200, 1331, 914, 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, + 915, 1331, 1331, 200, 200, 1331, 200, 1331, 913, 1331, 200, 200, 200, 917, 914, + + 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 915, 200, 916, 200, 200, + 1331, 200, 918, 1331, 200, 1331, 1331, 200, 917, 1331, 1331, 200, 1331, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 1331, 200, 916, 200, 200, 200, 200, 918, 1331, 200, 1331, 200, + 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 921, 1331, 200, 920, 1331, 1331, + 1331, 200, 200, 200, 200, 1331, 922, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 1331, + 1331, 200, 200, 200, 921, 200, 1331, 920, 1331, 200, 1331, 200, 200, 200, 200, + + 200, 922, 1331, 200, 923, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, + 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 923, 200, 924, + 200, 200, 925, 200, 1331, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 200, 1331, + 200, 1331, 200, 1331, 200, 1331, 200, 1331, 200, 924, 200, 1331, 925, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 927, 200, 200, 926, 200, 200, 1331, 1331, 200, 1331, 200, + 200, 1331, 1331, 928, 1331, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, + + 1331, 927, 200, 200, 926, 200, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 928, 200, + 1331, 200, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 929, 200, 930, 200, 1331, 931, + 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, + 200, 1331, 200, 200, 929, 200, 930, 200, 1331, 931, 200, 1331, 200, 1331, 1331, 200, 932, + 200, 934, 200, 200, 200, 1331, 200, 200, 200, 1331, 933, 200, 200, 200, 1331, 1331, 200, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 932, 200, 934, 200, 200, 200, + + 1331, 200, 200, 200, 1331, 933, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, + 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, + 1331, 200, 200, 200, 1331, 200, 200, 936, 200, 200, 200, 935, 1331, 200, 200, 200, 1331, + 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, + 936, 200, 200, 200, 935, 937, 200, 200, 200, 200, 200, 200, 200, 938, 200, + + 200, 1331, 200, 941, 200, 200, 200, 200, 200, 200, 200, 939, 940, 1331, 200, 200, 200, + 937, 200, 200, 1331, 200, 200, 1331, 1331, 938, 200, 200, 1331, 200, 941, 200, 200, 200, + 200, 200, 200, 200, 939, 940, 200, 200, 200, 200, 943, 200, 200, 200, 200, 200, 200, + 1331, 200, 942, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, + 200, 1331, 1331, 943, 1331, 1331, 200, 200, 200, 200, 1331, 200, 942, 200, 944, 1331, 200, + 200, 200, 200, 200, 1331, 1331, 1331, 945, 200, 200, 200, 200, 200, 1331, 1331, + + 1331, 1331, 200, 200, 200, 1331, 946, 1331, 1331, 944, 1331, 200, 200, 200, 1331, 200, 1331, + 1331, 1331, 945, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 946, + 200, 947, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 948, 200, 200, 1331, 200, 949, + 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 947, 1331, 200, 200, 200, 1331, + 200, 200, 1331, 200, 948, 200, 200, 200, 950, 949, 1331, 200, 200, 200, 1331, 200, 200, + 200, 200, 1331, 1331, 1331, 951, 1331, 1331, 200, 200, 200, 200, 1331, 200, 1331, + + 1331, 1331, 200, 950, 200, 1331, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 1331, 952, + 951, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 953, 200, 200, 200, 200, 200, + 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 952, 1331, 1331, 200, 200, 200, 200, 954, + 200, 200, 1331, 1331, 953, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, + 200, 200, 200, 1331, 200, 200, 200, 200, 200, 954, 200, 200, 200, 955, 200, 1331, 1331, + 956, 200, 1331, 200, 200, 200, 957, 200, 1331, 200, 200, 1331, 200, 200, 200, + + 1331, 200, 200, 1331, 200, 200, 1331, 200, 955, 200, 1331, 1331, 956, 200, 200, 200, 200, + 200, 957, 200, 200, 200, 1331, 960, 958, 200, 200, 1331, 200, 200, 959, 200, 200, 1331, + 200, 200, 200, 1331, 961, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 960, + 958, 1331, 200, 1331, 200, 1331, 959, 200, 200, 200, 200, 200, 200, 200, 961, 200, 200, + 200, 200, 200, 200, 200, 963, 962, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, + 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 200, 964, 200, 1331, 200, + + 963, 962, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 965, 200, 1331, + 200, 200, 200, 200, 200, 200, 964, 200, 1331, 200, 966, 1331, 200, 1331, 200, 200, 200, + 200, 1331, 200, 200, 967, 200, 200, 965, 200, 200, 200, 200, 200, 1331, 200, 200, 200, + 200, 200, 200, 966, 1331, 200, 968, 200, 200, 200, 200, 200, 200, 200, 967, 1331, 200, + 1331, 200, 200, 969, 1331, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 968, + 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 970, 969, 1331, + + 200, 200, 1331, 200, 200, 1331, 971, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, + 200, 1331, 200, 1331, 1331, 200, 200, 970, 200, 973, 200, 1331, 1331, 200, 200, 972, 971, + 200, 200, 200, 200, 200, 200, 1331, 200, 974, 200, 200, 1331, 200, 1331, 1331, 200, 200, + 1331, 200, 973, 1331, 1331, 1331, 200, 1331, 972, 975, 200, 200, 200, 200, 200, 200, 200, + 200, 974, 976, 200, 200, 200, 200, 200, 200, 200, 977, 200, 200, 1331, 1331, 1331, 1331, + 200, 1331, 975, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1331, 976, 1331, 200, + + 1331, 200, 200, 1331, 200, 977, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, + 200, 1331, 200, 200, 200, 200, 979, 200, 1331, 978, 200, 200, 200, 200, 200, 1331, 200, + 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 979, + 200, 1331, 978, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, + 200, 980, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 980, 1331, 1331, 200, + + 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1055, 200, 200, 200, 200, 200, + 1331, 200, 200, 1054, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 200, 200, + 200, 200, 200, 1331, 1055, 200, 200, 200, 200, 200, 1331, 200, 200, 1054, 200, 200, 1056, + 200, 1331, 1331, 200, 200, 1331, 1331, 200, 200, 200, 200, 1331, 1059, 200, 1058, 1057, 1331, + 200, 200, 200, 200, 1331, 200, 200, 1331, 1331, 1056, 200, 200, 1331, 200, 200, 1331, 200, + 1331, 1331, 200, 200, 200, 1059, 200, 1058, 1057, 1331, 200, 200, 200, 200, 1331, + + 200, 200, 1060, 200, 200, 1061, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 200, 200, 200, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 1060, 200, 200, 1061, 200, + 1062, 200, 200, 200, 200, 1064, 200, 200, 200, 200, 200, 200, 1063, 1065, 200, 200, 1331, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1062, 1066, 200, 200, 200, 1064, 200, + 200, 1331, 200, 200, 200, 1063, 1065, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, + 200, 200, 1331, 200, 1066, 1331, 200, 200, 1068, 1331, 200, 1070, 200, 1067, 1331, + + 200, 200, 1069, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, + 200, 1331, 200, 1068, 1331, 200, 1070, 200, 1067, 200, 200, 200, 1069, 1331, 200, 200, 200, + 200, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1071, + 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 1073, 1331, 1072, 1331, 1331, 200, 200, 200, + 1331, 200, 200, 1074, 1331, 200, 200, 200, 1075, 1071, 200, 1331, 200, 200, 1331, 200, 200, + 200, 200, 1073, 1331, 1072, 1331, 200, 200, 200, 200, 200, 200, 200, 1074, 200, + + 1331, 1331, 200, 1075, 200, 200, 200, 200, 200, 1331, 1076, 1078, 1331, 200, 1331, 200, 200, + 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 1331, 200, 200, 200, 200, + 1331, 1077, 1331, 1076, 1078, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 200, 1079, 200, 1331, + 200, 1331, 200, 200, 1331, 1331, 200, 1083, 200, 200, 1331, 1077, 1331, 200, 200, 1080, 200, + 200, 200, 200, 200, 200, 1331, 1331, 1079, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, + 1083, 200, 200, 200, 1331, 200, 200, 200, 1080, 200, 200, 200, 200, 200, 200, + + 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 1081, + 200, 200, 1331, 1331, 200, 1331, 1331, 200, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, + 200, 200, 1331, 200, 1331, 1082, 200, 1085, 200, 1081, 200, 200, 200, 1084, 200, 1331, 1331, + 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 1082, 200, + 1085, 200, 200, 200, 200, 200, 1084, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, + 200, 200, 1331, 200, 1331, 1331, 200, 1086, 1331, 1331, 1331, 200, 200, 1331, 200, + + 200, 1331, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, + 1331, 200, 1086, 1331, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, + 200, 200, 1087, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1088, 1331, 200, 1089, 200, + 1331, 1090, 200, 200, 200, 200, 200, 1091, 1331, 200, 1331, 200, 1087, 1331, 200, 200, 200, + 1331, 200, 200, 200, 1331, 1088, 1331, 1331, 1089, 200, 1331, 1090, 1331, 200, 200, 200, 200, + 1091, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1092, 1331, + + 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1331, 200, 200, 1331, 200, 1092, 1331, 200, 1331, 1331, 200, 1331, 200, 200, + 1093, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 200, + 200, 1331, 1331, 200, 1094, 1331, 200, 1331, 200, 200, 1093, 1331, 1331, 200, 200, 1331, 1095, + 1331, 200, 1331, 200, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 200, 200, 1094, 1331, 200, + 200, 200, 200, 1331, 1331, 200, 200, 1096, 1097, 1095, 1331, 200, 200, 1331, 200, + + 1331, 1331, 1331, 1331, 200, 200, 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 1331, + 200, 200, 1096, 1097, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1098, + 1331, 200, 200, 200, 1099, 200, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, + 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 1098, 1331, 200, 1331, 200, 1099, 200, 200, + 200, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1101, 200, 1331, 200, 1331, 200, + 200, 1331, 1100, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, + + 200, 1331, 1331, 200, 1331, 1331, 1101, 200, 200, 200, 1331, 200, 200, 1331, 1100, 1331, 200, + 200, 200, 200, 200, 1102, 1331, 1331, 1331, 1331, 200, 200, 200, 1103, 200, 1331, 1331, 1331, + 200, 200, 200, 1331, 1331, 200, 200, 1331, 1104, 200, 1331, 200, 200, 200, 1102, 1331, 200, + 1331, 200, 200, 200, 200, 1103, 200, 1105, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, + 1331, 1104, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1106, 200, 1331, 1331, 200, + 1105, 200, 1331, 200, 200, 1331, 200, 1107, 200, 200, 1331, 200, 200, 200, 1331, + + 200, 200, 200, 200, 200, 1331, 200, 1106, 200, 1108, 200, 200, 1331, 200, 200, 200, 200, + 1331, 200, 1107, 200, 200, 200, 200, 200, 200, 1110, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 1108, 200, 1331, 1109, 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 1112, + 200, 1331, 1110, 200, 200, 1331, 200, 200, 200, 1331, 200, 1111, 200, 200, 1331, 1109, 200, + 200, 200, 200, 200, 1331, 200, 200, 1113, 1331, 1112, 1331, 1331, 200, 200, 1331, 200, 1331, + 200, 200, 1331, 200, 1111, 200, 200, 1114, 200, 200, 200, 1331, 200, 200, 1331, + + 200, 200, 1113, 1331, 200, 1331, 200, 200, 1331, 1331, 200, 200, 1115, 200, 1331, 200, 200, + 1116, 1331, 1114, 200, 1331, 1331, 1117, 1331, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 1331, 200, 1115, 200, 200, 1331, 200, 1116, 1331, 200, 200, 1331, 1118, 1117, + 1331, 1331, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, + 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1118, 1331, 1119, 1120, 200, 200, 200, 1331, 200, + 200, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 1331, + + 200, 1331, 1331, 1331, 1121, 1119, 1120, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, + 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1331, 200, 1122, 1123, 1331, 1121, 200, 200, + 1331, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 200, 200, + 200, 200, 1124, 1331, 1122, 1123, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1124, 1331, 200, 1331, 1331, + 1331, 1331, 1331, 200, 1331, 200, 200, 1169, 200, 1331, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 1331, 1170, 200, 1172, 200, 200, 200, 200, 200, 1331, + 200, 200, 1169, 200, 200, 200, 200, 200, 1331, 1171, 200, 200, 200, 200, 200, 200, 200, + 1331, 1170, 200, 1172, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, + 200, 1331, 1171, 200, 1331, 200, 200, 200, 1331, 200, 1173, 200, 200, 1331, 1331, 200, 1174, + 200, 1175, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, + 1331, 1331, 200, 1173, 200, 1331, 1331, 1331, 200, 1174, 200, 1175, 200, 200, 200, + + 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 1177, 200, 200, + 200, 1176, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, + 1331, 1331, 1331, 200, 200, 200, 200, 1177, 200, 200, 200, 1176, 1178, 200, 1331, 200, 1331, + 1179, 200, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, + 1331, 1331, 1331, 200, 1180, 1178, 1331, 1331, 200, 1331, 1179, 1331, 200, 1331, 200, 1331, 200, + 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1181, 200, 200, 1180, + + 1331, 1331, 200, 200, 1331, 1331, 200, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, + 1331, 200, 1331, 1331, 200, 200, 1181, 200, 1331, 1331, 1331, 1182, 200, 1331, 1331, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 200, + 200, 200, 200, 1331, 1182, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 1331, + 1331, 1331, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 1183, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1184, 200, 1331, 1331, + + 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1183, 200, 1331, 1331, 200, 200, 200, 1331, + 1331, 200, 200, 200, 200, 1331, 1184, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, + 200, 1186, 200, 200, 1185, 1331, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 1331, 1331, 200, + 200, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 1331, 1186, 200, 200, 1185, 1331, 200, + 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, + + 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, + 200, 1331, 200, 200, 200, 200, 1331, 1188, 200, 200, 200, 200, 1187, 1331, 200, 1331, 1331, + 200, 1331, 200, 1331, 1189, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 1331, 200, + 1188, 200, 200, 200, 200, 1187, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1189, 1331, 1331, + 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1331, 1190, 200, + 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, + + 1191, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1190, 200, 200, 200, 1331, 200, 1331, + 1331, 200, 200, 1331, 200, 1331, 1331, 1331, 1192, 200, 1191, 1331, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, + 1331, 1192, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, 1193, 200, 200, 200, 200, 200, + 1331, 200, 200, 1194, 200, 1331, 1331, 200, 1195, 200, 1331, 1331, 1196, 200, 200, 200, 200, + 1331, 1331, 200, 200, 1193, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1194, 200, + + 200, 1331, 200, 1195, 200, 1331, 200, 1196, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, + 200, 1331, 200, 200, 1331, 1197, 1331, 1331, 1331, 200, 200, 1198, 200, 200, 1331, 1331, 200, + 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1199, 200, 200, 1331, 1331, 200, 200, 1197, 200, + 1331, 1331, 200, 200, 1198, 1331, 200, 200, 1331, 200, 200, 1331, 200, 200, 1200, 200, 200, + 200, 1199, 200, 200, 200, 1201, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 200, + 200, 1331, 200, 1331, 1331, 1331, 200, 1200, 200, 1331, 200, 200, 200, 1202, 200, + + 1201, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1203, 200, 200, 1331, 200, 1331, 1331, + 200, 1331, 1331, 1331, 1331, 200, 200, 1331, 1202, 200, 1331, 200, 200, 200, 200, 1331, 200, + 1204, 200, 200, 1203, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1234, 200, 1331, 200, 200, + 1331, 200, 200, 1331, 200, 200, 200, 1205, 1206, 200, 1204, 1331, 1331, 1331, 200, 200, 1331, + 200, 200, 200, 200, 200, 1234, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, + 1205, 1206, 1331, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 200, 200, + + 1207, 1331, 200, 200, 200, 1208, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1207, 200, 1331, 1331, 200, 1208, 1331, + 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, + 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 1209, 200, + 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1210, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, + 1331, 200, 200, 200, 200, 200, 200, 200, 1209, 200, 1331, 200, 200, 1331, 200, + + 1331, 1331, 200, 1210, 200, 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 200, + 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, + 200, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 200, + 1331, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, 1331, 200, 1235, 1213, 200, 200, + 1331, 1331, 200, 200, 1331, 200, 1236, 1331, 1331, 200, 200, 1331, 1331, 200, 1331, 200, 200, + 1331, 1331, 200, 1237, 200, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, + + 1331, 1236, 200, 1331, 200, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1237, 200, + 1331, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, 1238, 200, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 1239, 200, 200, + 200, 200, 200, 1331, 200, 1331, 1238, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 1331, 200, 200, 1331, 1239, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, + 200, 1331, 1331, 200, 200, 200, 200, 1240, 1331, 1331, 200, 1331, 200, 1331, 200, + + 1331, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1241, 200, 200, + 200, 200, 1240, 1242, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, + 1331, 200, 1331, 1331, 200, 1331, 1331, 1241, 1331, 200, 200, 1331, 200, 1242, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, + 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 1244, + 1243, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 1331, 1246, 200, 1245, + + 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1244, 1243, 200, 1331, 200, 200, + 1331, 200, 1331, 200, 200, 200, 1331, 1246, 200, 1245, 200, 200, 200, 200, 200, 200, 1331, + 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 1247, 1331, 1331, 1331, + 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, + 200, 1248, 200, 1331, 200, 200, 1247, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, + 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 1248, 200, 1331, 200, + + 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1249, 1331, 1331, + 200, 200, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 1251, 200, 200, 200, 200, 200, + 200, 200, 1250, 200, 1331, 200, 200, 1249, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 1331, + 1331, 1331, 200, 200, 1251, 200, 200, 200, 200, 200, 200, 200, 1250, 200, 1331, 200, 200, + 1252, 200, 1253, 1254, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1331, 200, 1331, + 1331, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1252, 1331, 1253, 1254, 200, + + 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 1331, + 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 200, 1331, + 200, 1331, 200, 1269, 1331, 200, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 1331, 200, + 200, 200, 200, 1331, 200, 200, 1331, 1271, 1331, 1331, 200, 1331, 200, 1269, 1331, 200, 1331, + 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1272, + 1271, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 1273, 200, + + 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 1272, 1331, 200, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 200, 200, 1273, 200, 200, 200, 200, 200, 1331, 200, 200, + 200, 1331, 1274, 1331, 1331, 200, 1276, 1275, 200, 200, 200, 200, 200, 200, 1331, 200, 200, + 200, 200, 200, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 1274, 1331, 1331, 200, 1276, + 1275, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, + 1331, 1331, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, + + 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, + 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1277, 200, 200, 1279, 200, 1278, 200, + 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1280, + 200, 200, 200, 1277, 200, 200, 1279, 200, 1278, 200, 200, 1331, 200, 1288, 1282, 200, 1331, + 200, 1331, 1290, 200, 1331, 200, 200, 200, 200, 1280, 200, 200, 200, 1331, 200, 1331, 200, + 200, 200, 1331, 200, 200, 200, 1291, 1331, 200, 1331, 200, 200, 1290, 200, 200, + + 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1291, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 200, + 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, + 200, 1292, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, + 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1300, 200, 1292, 1331, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, + 1331, 1331, 200, 200, 1300, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, + 200, 1331, 1331, 1331, 1331, 200, 46, 46, 46, 46, 46, 88, 1331, 1331, 88, 88, 185, + 185, 185, 1331, 185, 187, 1331, 187, 187, 187, 190, 1331, 190, 190, 190, 200, 1331, 200, + 200, 200, 7, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; + +static const flex_int16_t yy_chk[8848] = { + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 9, 9, 10, 10, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 27, + 28, 22, 23, 30, 21, 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, + + 41, 23, 22, 41, 23, 1334, 44, 23, 21, 22, 21, 27, 28, 22, 23, 30, 21, + 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, 41, 23, 24, 44, + 23, 25, 24, 25, 49, 49, 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, 55, + 32, 50, 50, 33, 43, 43, 58, 58, 24, 1328, 55, 25, 24, 25, 1327, 34, 24, + 32, 25, 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, 34, 33, 43, 43, 100, + 26, 34, 34, 26, 103, 36, 26, 29, 34, 26, 1326, 36, 26, 29, 29, + + 29, 42, 86, 86, 26, 29, 36, 34, 1325, 42, 1323, 100, 26, 34, 34, 26, 103, + 36, 26, 29, 1321, 26, 35, 36, 26, 29, 29, 29, 42, 104, 35, 38, 29, 101, + 35, 38, 42, 35, 35, 38, 81, 101, 81, 106, 81, 38, 1319, 81, 1317, 35, 102, + 1315, 81, 102, 1313, 107, 104, 35, 38, 1311, 101, 35, 38, 1309, 35, 35, 38, 81, + 101, 81, 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, 102, 39, 107, 39, 113, + 39, 39, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 188, 188, 1307, + + 39, 1305, 39, 110, 1303, 39, 105, 105, 39, 109, 39, 113, 39, 39, 40, 112, 109, + 67, 40, 67, 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, 117, 40, 1301, 105, + 105, 1297, 109, 1133, 1133, 1256, 1256, 40, 112, 109, 67, 40, 67, 105, 40, 40, 67, + 67, 112, 116, 116, 40, 67, 117, 40, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, 68, 114, 1293, 1287, 68, + 1281, 114, 120, 68, 61, 61, 61, 70, 121, 68, 61, 70, 61, 123, 118, + + 124, 125, 70, 61, 68, 61, 119, 68, 114, 61, 61, 68, 70, 114, 120, 68, 127, + 128, 1268, 70, 121, 68, 61, 70, 61, 123, 1255, 124, 125, 70, 61, 68, 61, 1233, + 129, 1211, 61, 61, 1168, 70, 1125, 1053, 981, 127, 128, 61, 62, 62, 885, 62, 62, + 62, 62, 62, 62, 789, 664, 130, 71, 72, 73, 129, 71, 72, 73, 62, 62, 62, + 71, 72, 73, 131, 62, 77, 131, 126, 62, 77, 71, 72, 73, 126, 62, 77, 130, + 71, 72, 73, 132, 71, 72, 73, 62, 77, 539, 71, 72, 73, 131, 62, + + 77, 131, 126, 62, 77, 71, 72, 73, 126, 62, 77, 414, 288, 83, 133, 132, 83, + 83, 135, 62, 77, 62, 63, 83, 78, 136, 63, 138, 78, 63, 63, 139, 78, 83, + 140, 141, 63, 144, 78, 63, 83, 133, 63, 83, 83, 135, 63, 192, 78, 63, 83, + 78, 136, 63, 138, 78, 63, 63, 139, 78, 83, 140, 141, 63, 144, 78, 63, 190, + 90, 63, 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, 82, 84, 64, 142, 145, + 142, 82, 84, 64, 137, 146, 64, 147, 149, 137, 137, 82, 84, 64, 82, + + 60, 64, 59, 82, 84, 64, 137, 82, 84, 64, 142, 145, 142, 82, 84, 64, 137, + 146, 64, 147, 149, 137, 137, 82, 84, 64, 65, 111, 111, 111, 65, 111, 115, 65, + 115, 65, 65, 115, 150, 143, 65, 143, 151, 115, 153, 65, 65, 52, 148, 154, 115, + 148, 143, 65, 111, 111, 111, 65, 111, 115, 65, 115, 65, 65, 115, 150, 143, 65, + 143, 151, 115, 153, 65, 65, 66, 148, 154, 115, 148, 143, 155, 66, 66, 156, 157, + 66, 158, 122, 66, 122, 158, 66, 159, 122, 66, 51, 161, 47, 45, 163, + + 122, 66, 20, 19, 122, 11, 166, 155, 66, 66, 156, 157, 66, 158, 122, 66, 122, + 158, 66, 159, 122, 66, 69, 161, 160, 162, 163, 122, 69, 69, 69, 122, 165, 166, + 167, 69, 162, 160, 168, 169, 69, 7, 160, 4, 170, 3, 165, 172, 0, 69, 173, + 160, 162, 174, 177, 69, 69, 69, 0, 165, 0, 167, 69, 162, 160, 168, 169, 69, + 74, 160, 164, 170, 171, 165, 172, 74, 175, 173, 178, 164, 174, 177, 74, 171, 176, + 74, 179, 164, 74, 74, 0, 176, 179, 0, 176, 74, 175, 164, 181, 171, + + 182, 183, 74, 175, 0, 178, 164, 0, 291, 74, 171, 176, 74, 179, 164, 74, 74, + 75, 176, 179, 180, 176, 75, 175, 75, 181, 293, 182, 183, 294, 75, 75, 200, 180, + 75, 291, 200, 75, 75, 0, 0, 0, 200, 296, 75, 0, 0, 180, 298, 75, 0, + 75, 200, 293, 0, 299, 294, 75, 75, 200, 180, 75, 300, 200, 75, 75, 76, 201, + 201, 200, 296, 301, 201, 76, 0, 298, 302, 76, 201, 200, 76, 202, 299, 76, 303, + 202, 76, 0, 201, 300, 305, 202, 0, 76, 201, 201, 202, 0, 301, 201, + + 76, 202, 306, 302, 76, 201, 307, 76, 202, 0, 76, 303, 202, 76, 79, 201, 79, + 305, 202, 79, 79, 0, 79, 202, 79, 308, 79, 79, 202, 306, 309, 310, 311, 307, + 312, 313, 79, 0, 314, 0, 0, 79, 0, 79, 0, 0, 79, 79, 203, 79, 203, + 79, 308, 79, 79, 203, 203, 309, 310, 311, 203, 312, 313, 79, 80, 314, 209, 205, + 80, 205, 209, 80, 80, 205, 205, 203, 209, 203, 80, 205, 315, 80, 203, 203, 316, + 317, 209, 203, 80, 0, 0, 80, 0, 209, 205, 80, 205, 209, 80, 80, + + 205, 205, 0, 209, 0, 80, 205, 315, 80, 0, 0, 316, 317, 209, 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, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 204, 206, 208, 204, 304, 319, 304, + 208, 320, 208, 206, 204, 206, 204, 208, 321, 0, 206, 204, 208, 0, 304, + + 206, 204, 0, 0, 0, 204, 206, 208, 204, 304, 319, 304, 208, 320, 208, 206, 204, + 206, 204, 208, 321, 210, 206, 204, 208, 210, 304, 206, 204, 207, 207, 210, 211, 322, + 211, 207, 318, 207, 0, 211, 0, 210, 207, 207, 211, 0, 323, 207, 210, 324, 0, + 318, 210, 326, 212, 327, 207, 207, 210, 211, 322, 211, 207, 318, 207, 212, 211, 212, + 210, 207, 207, 211, 212, 323, 207, 0, 324, 212, 318, 0, 326, 212, 327, 214, 0, + 0, 328, 214, 329, 330, 0, 0, 212, 214, 212, 331, 332, 333, 215, 212, + + 0, 334, 215, 214, 212, 213, 213, 213, 215, 213, 214, 215, 213, 328, 214, 329, 330, + 213, 215, 335, 214, 336, 331, 332, 333, 215, 337, 216, 334, 215, 214, 216, 213, 213, + 213, 215, 213, 216, 215, 213, 338, 339, 216, 340, 213, 215, 335, 216, 336, 341, 0, + 342, 343, 337, 216, 344, 0, 345, 216, 0, 346, 0, 0, 0, 216, 347, 0, 338, + 339, 216, 340, 0, 348, 349, 216, 217, 341, 217, 342, 343, 217, 351, 344, 218, 345, + 218, 217, 346, 217, 218, 218, 0, 347, 217, 219, 218, 219, 0, 217, 348, + + 349, 219, 217, 219, 217, 352, 219, 217, 351, 354, 218, 0, 218, 217, 220, 217, 218, + 218, 220, 0, 217, 219, 218, 219, 220, 217, 0, 355, 219, 350, 219, 0, 352, 219, + 220, 221, 354, 221, 222, 350, 0, 220, 221, 0, 356, 220, 222, 221, 222, 0, 0, + 220, 357, 222, 355, 0, 350, 359, 222, 0, 360, 220, 221, 361, 221, 222, 350, 223, + 362, 221, 225, 356, 225, 222, 221, 222, 223, 225, 223, 357, 222, 363, 225, 223, 359, + 222, 358, 360, 223, 0, 361, 0, 0, 365, 223, 362, 358, 225, 366, 225, + + 0, 0, 0, 223, 225, 223, 0, 367, 363, 225, 223, 0, 226, 358, 226, 223, 224, + 227, 224, 226, 365, 227, 224, 358, 226, 366, 368, 227, 224, 224, 369, 370, 371, 224, + 367, 0, 0, 227, 224, 226, 0, 226, 0, 224, 227, 224, 226, 373, 227, 224, 375, + 226, 0, 368, 227, 224, 224, 369, 370, 371, 224, 228, 229, 228, 227, 224, 229, 228, + 228, 230, 0, 230, 229, 228, 373, 376, 230, 375, 0, 374, 0, 230, 229, 0, 0, + 0, 377, 231, 228, 229, 228, 231, 374, 229, 228, 228, 230, 231, 230, 229, + + 228, 232, 376, 230, 378, 232, 374, 231, 230, 229, 233, 232, 233, 377, 231, 379, 380, + 233, 231, 374, 233, 232, 233, 234, 231, 234, 0, 0, 232, 0, 234, 378, 232, 0, + 231, 234, 0, 233, 232, 233, 381, 382, 379, 380, 233, 0, 383, 233, 232, 233, 234, + 235, 234, 235, 236, 237, 236, 234, 235, 237, 235, 236, 234, 235, 384, 237, 236, 381, + 382, 385, 372, 0, 240, 383, 240, 237, 387, 0, 235, 240, 235, 236, 237, 236, 240, + 235, 237, 235, 236, 372, 235, 384, 237, 236, 238, 388, 385, 372, 238, 240, + + 389, 240, 237, 387, 238, 238, 240, 0, 241, 242, 0, 240, 241, 242, 238, 0, 372, + 390, 241, 242, 0, 238, 388, 0, 391, 238, 0, 389, 241, 242, 0, 238, 238, 243, + 243, 241, 242, 243, 392, 241, 242, 238, 239, 243, 390, 241, 242, 247, 393, 247, 239, + 391, 239, 243, 247, 241, 242, 239, 239, 247, 243, 243, 239, 0, 243, 392, 394, 0, + 0, 239, 243, 0, 0, 0, 247, 393, 247, 239, 395, 239, 243, 247, 0, 0, 239, + 239, 247, 396, 397, 239, 244, 399, 0, 394, 244, 246, 244, 246, 244, 257, + + 244, 246, 246, 257, 401, 395, 0, 246, 403, 257, 244, 0, 404, 0, 396, 397, 0, + 244, 399, 257, 0, 244, 246, 244, 246, 244, 257, 244, 246, 246, 257, 401, 405, 400, + 246, 403, 257, 244, 245, 404, 245, 248, 400, 248, 406, 402, 257, 402, 248, 245, 249, + 245, 249, 248, 407, 408, 245, 249, 249, 405, 400, 245, 249, 0, 409, 245, 0, 245, + 248, 400, 248, 406, 402, 0, 402, 248, 245, 249, 245, 249, 248, 407, 408, 245, 249, + 249, 0, 0, 245, 249, 250, 409, 250, 251, 0, 251, 411, 250, 250, 0, + + 251, 250, 250, 252, 0, 251, 254, 410, 254, 412, 0, 410, 0, 254, 252, 0, 252, + 250, 254, 250, 251, 252, 251, 411, 250, 250, 252, 251, 250, 250, 252, 253, 251, 254, + 410, 254, 412, 253, 410, 253, 254, 252, 255, 252, 253, 254, 0, 540, 252, 253, 255, + 0, 255, 252, 0, 0, 541, 255, 253, 542, 543, 0, 255, 544, 253, 545, 253, 546, + 547, 255, 548, 253, 550, 256, 540, 256, 253, 255, 258, 255, 256, 256, 258, 541, 255, + 256, 542, 543, 258, 255, 544, 258, 545, 0, 546, 547, 0, 548, 258, 550, + + 256, 553, 256, 0, 0, 258, 259, 256, 256, 258, 259, 554, 256, 555, 259, 258, 556, + 558, 258, 260, 259, 559, 0, 260, 261, 258, 261, 560, 553, 260, 259, 261, 561, 259, + 563, 0, 261, 259, 554, 260, 555, 259, 564, 556, 558, 0, 260, 259, 559, 262, 260, + 261, 0, 261, 560, 565, 260, 259, 261, 561, 262, 563, 262, 261, 0, 566, 260, 262, + 263, 564, 567, 568, 262, 263, 569, 263, 262, 570, 0, 264, 263, 264, 565, 571, 0, + 263, 264, 262, 0, 262, 264, 264, 566, 0, 262, 263, 574, 567, 568, 262, + + 263, 569, 263, 575, 570, 265, 264, 263, 264, 265, 571, 265, 263, 264, 576, 268, 265, + 264, 264, 268, 267, 265, 0, 574, 267, 268, 577, 578, 267, 579, 575, 0, 265, 0, + 267, 268, 265, 0, 265, 0, 0, 576, 268, 265, 267, 580, 268, 267, 265, 266, 0, + 267, 268, 577, 578, 267, 579, 0, 266, 269, 266, 267, 268, 269, 270, 266, 266, 269, + 270, 0, 266, 267, 580, 269, 270, 0, 266, 270, 582, 0, 583, 584, 0, 269, 270, + 266, 269, 266, 587, 588, 269, 270, 266, 266, 269, 270, 272, 266, 271, 272, + + 269, 270, 271, 272, 270, 582, 271, 583, 584, 272, 269, 270, 271, 0, 0, 587, 588, + 274, 590, 272, 0, 274, 271, 272, 0, 271, 272, 274, 0, 271, 272, 592, 0, 271, + 0, 593, 272, 274, 594, 271, 273, 273, 273, 595, 274, 590, 272, 273, 274, 271, 0, + 275, 273, 596, 274, 275, 0, 0, 592, 275, 597, 275, 593, 600, 274, 594, 0, 273, + 273, 273, 595, 275, 0, 276, 273, 0, 604, 276, 275, 273, 596, 606, 275, 276, 276, + 277, 275, 597, 275, 607, 600, 609, 277, 276, 0, 611, 279, 279, 275, 277, + + 276, 279, 277, 604, 276, 277, 0, 279, 606, 0, 276, 276, 277, 0, 0, 612, 607, + 279, 609, 277, 276, 280, 611, 279, 279, 280, 277, 0, 279, 277, 613, 280, 277, 278, + 279, 615, 278, 0, 0, 598, 278, 280, 612, 278, 279, 616, 278, 281, 280, 281, 598, + 282, 280, 281, 281, 282, 278, 613, 280, 281, 278, 282, 615, 278, 282, 283, 598, 278, + 280, 283, 278, 282, 616, 278, 281, 283, 281, 598, 282, 0, 281, 281, 282, 278, 0, + 283, 281, 0, 282, 284, 617, 282, 283, 284, 0, 618, 283, 285, 282, 284, + + 620, 285, 283, 621, 284, 285, 420, 623, 420, 284, 624, 285, 283, 420, 610, 610, 284, + 617, 420, 625, 284, 285, 618, 0, 285, 0, 284, 620, 285, 0, 621, 284, 285, 420, + 623, 420, 284, 624, 285, 0, 420, 610, 610, 0, 0, 420, 625, 0, 285, 289, 289, + 289, 289, 289, 289, 289, 289, 289, 289, 415, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 416, 417, 418, 419, 416, 417, 418, 419, 626, 628, 416, 417, 418, 419, 0, 629, + 630, 0, 631, 0, 416, 417, 418, 419, 0, 0, 0, 416, 417, 418, 419, + + 416, 417, 418, 419, 626, 628, 416, 417, 418, 419, 422, 629, 630, 421, 631, 421, 416, + 417, 418, 419, 421, 422, 423, 422, 423, 421, 424, 0, 422, 423, 424, 0, 633, 422, + 423, 0, 424, 422, 634, 0, 421, 635, 421, 636, 0, 0, 424, 421, 422, 423, 422, + 423, 421, 424, 425, 422, 423, 424, 425, 633, 422, 423, 426, 424, 425, 634, 426, 427, + 635, 639, 636, 427, 426, 424, 425, 0, 428, 427, 428, 640, 426, 425, 426, 428, 641, + 425, 642, 427, 428, 426, 429, 425, 429, 426, 427, 643, 639, 429, 427, 426, + + 646, 425, 429, 428, 427, 428, 640, 426, 431, 426, 428, 641, 431, 642, 427, 428, 0, + 429, 431, 429, 0, 431, 643, 0, 429, 0, 0, 646, 431, 429, 430, 0, 430, 432, + 647, 431, 430, 432, 649, 431, 650, 0, 430, 432, 651, 431, 433, 430, 431, 432, 433, + 0, 430, 432, 433, 431, 433, 430, 435, 430, 432, 647, 435, 430, 432, 649, 433, 650, + 435, 430, 432, 651, 0, 433, 430, 0, 432, 433, 435, 430, 432, 433, 434, 433, 0, + 435, 434, 0, 652, 435, 436, 653, 434, 433, 436, 435, 654, 434, 436, 437, + + 655, 437, 434, 0, 436, 435, 437, 656, 0, 434, 0, 437, 0, 434, 436, 652, 657, + 436, 653, 434, 659, 436, 661, 654, 434, 436, 437, 655, 437, 434, 438, 436, 438, 437, + 656, 439, 438, 438, 437, 439, 663, 436, 438, 657, 440, 439, 440, 659, 792, 661, 794, + 440, 796, 0, 797, 439, 440, 438, 441, 438, 441, 798, 439, 438, 438, 441, 439, 663, + 0, 438, 441, 440, 439, 440, 0, 792, 442, 794, 440, 796, 442, 797, 439, 440, 0, + 441, 442, 441, 798, 799, 443, 444, 441, 800, 443, 444, 442, 441, 443, 0, + + 801, 444, 802, 442, 443, 803, 444, 442, 0, 0, 804, 444, 0, 442, 443, 806, 799, + 443, 444, 0, 800, 443, 444, 442, 445, 443, 445, 801, 444, 802, 445, 443, 803, 444, + 807, 446, 445, 804, 444, 446, 0, 443, 806, 0, 447, 446, 445, 0, 447, 808, 809, + 445, 810, 445, 447, 446, 0, 445, 0, 447, 0, 807, 446, 445, 447, 0, 446, 448, + 0, 0, 448, 447, 446, 445, 448, 447, 808, 809, 0, 810, 448, 447, 446, 450, 811, + 449, 447, 450, 451, 449, 448, 447, 451, 450, 448, 449, 449, 448, 451, 813, + + 814, 448, 0, 450, 815, 449, 0, 448, 451, 0, 450, 811, 449, 816, 450, 451, 449, + 448, 0, 451, 450, 0, 449, 449, 453, 451, 813, 814, 453, 452, 450, 815, 449, 452, + 453, 451, 454, 452, 454, 0, 816, 0, 454, 452, 453, 455, 0, 455, 454, 817, 818, + 453, 455, 452, 819, 453, 452, 455, 454, 820, 452, 453, 0, 454, 452, 454, 456, 0, + 456, 454, 452, 453, 455, 456, 455, 454, 817, 818, 456, 455, 452, 819, 821, 822, 455, + 454, 820, 458, 0, 458, 457, 0, 457, 456, 458, 456, 457, 457, 0, 458, + + 456, 0, 457, 0, 825, 456, 826, 0, 459, 821, 822, 0, 459, 461, 458, 461, 458, + 457, 459, 457, 461, 458, 827, 457, 457, 461, 458, 0, 459, 457, 460, 825, 828, 826, + 460, 459, 0, 0, 460, 459, 461, 0, 461, 0, 460, 459, 0, 461, 829, 827, 0, + 0, 461, 832, 460, 459, 835, 460, 836, 828, 838, 460, 462, 462, 462, 460, 463, 463, + 463, 462, 464, 460, 464, 463, 462, 829, 837, 464, 463, 837, 832, 460, 464, 835, 0, + 836, 0, 838, 0, 462, 462, 462, 0, 463, 463, 463, 462, 464, 465, 464, + + 463, 462, 841, 837, 464, 463, 837, 467, 465, 464, 465, 467, 466, 467, 466, 465, 844, + 845, 467, 466, 465, 466, 0, 467, 466, 465, 0, 846, 847, 841, 848, 849, 0, 852, + 467, 465, 853, 465, 467, 466, 467, 466, 465, 844, 845, 467, 466, 465, 466, 468, 467, + 466, 469, 468, 846, 847, 469, 848, 849, 468, 852, 470, 469, 853, 0, 470, 0, 469, + 854, 468, 0, 470, 469, 855, 470, 0, 468, 856, 0, 469, 468, 470, 0, 469, 858, + 0, 468, 471, 470, 469, 0, 471, 470, 471, 469, 854, 468, 471, 470, 469, + + 855, 470, 472, 859, 856, 473, 472, 471, 470, 473, 0, 858, 472, 861, 471, 473, 0, + 474, 471, 862, 471, 474, 472, 863, 471, 473, 0, 474, 0, 472, 859, 475, 473, 472, + 471, 475, 473, 474, 0, 472, 861, 475, 473, 476, 474, 864, 862, 476, 474, 472, 863, + 475, 473, 476, 474, 477, 0, 0, 475, 477, 866, 0, 475, 476, 474, 477, 0, 867, + 475, 868, 476, 477, 864, 869, 476, 477, 0, 478, 475, 478, 476, 479, 477, 479, 478, + 0, 477, 866, 479, 478, 476, 0, 477, 479, 867, 0, 868, 870, 477, 481, + + 869, 0, 477, 481, 478, 480, 478, 480, 479, 481, 479, 478, 480, 480, 0, 479, 478, + 480, 482, 481, 479, 485, 482, 485, 870, 485, 481, 871, 482, 0, 481, 485, 480, 0, + 480, 872, 481, 873, 482, 480, 480, 485, 483, 483, 480, 482, 481, 483, 485, 482, 485, + 874, 485, 483, 871, 482, 488, 486, 485, 486, 488, 486, 872, 483, 873, 482, 488, 486, + 485, 483, 483, 488, 0, 876, 483, 0, 488, 486, 874, 877, 483, 0, 878, 488, 486, + 0, 486, 488, 486, 880, 483, 484, 487, 488, 486, 484, 487, 0, 488, 484, + + 876, 484, 487, 488, 486, 484, 877, 881, 487, 878, 0, 882, 487, 0, 0, 484, 880, + 489, 484, 487, 490, 489, 484, 487, 490, 982, 484, 489, 484, 487, 490, 984, 484, 489, + 881, 487, 986, 489, 882, 487, 490, 491, 484, 987, 489, 491, 0, 490, 489, 491, 988, + 490, 982, 0, 489, 491, 989, 490, 984, 492, 489, 492, 0, 986, 489, 491, 492, 490, + 491, 991, 987, 492, 491, 493, 0, 493, 491, 988, 0, 493, 493, 993, 491, 989, 0, + 493, 492, 494, 492, 494, 994, 495, 491, 492, 494, 495, 991, 0, 492, 494, + + 493, 495, 493, 0, 995, 496, 493, 493, 993, 496, 996, 495, 493, 0, 494, 496, 494, + 994, 495, 0, 497, 494, 495, 997, 497, 496, 494, 499, 495, 499, 497, 995, 496, 497, + 499, 0, 496, 996, 495, 499, 497, 0, 496, 999, 1001, 0, 503, 497, 503, 0, 997, + 497, 496, 503, 499, 0, 499, 497, 503, 1005, 497, 499, 501, 501, 501, 0, 499, 497, + 498, 501, 999, 1001, 498, 503, 501, 503, 498, 1007, 0, 1008, 503, 1009, 498, 1016, 1017, + 503, 1005, 498, 1018, 501, 501, 501, 498, 0, 1021, 498, 501, 0, 1023, 498, + + 502, 501, 0, 498, 1007, 502, 1008, 502, 1009, 498, 1016, 1017, 502, 1025, 498, 1018, 505, + 502, 505, 498, 500, 1021, 1027, 505, 505, 1023, 1028, 502, 505, 500, 0, 500, 502, 500, + 502, 1029, 500, 0, 0, 502, 1025, 500, 0, 505, 502, 505, 504, 500, 1030, 1027, 505, + 505, 1031, 1028, 1033, 505, 500, 504, 500, 504, 500, 506, 1029, 500, 504, 506, 1034, 506, + 500, 504, 1035, 1036, 506, 504, 0, 1030, 0, 506, 507, 1031, 507, 1033, 1038, 0, 504, + 507, 504, 0, 506, 0, 507, 504, 506, 1034, 506, 1040, 504, 1035, 1036, 506, + + 1042, 508, 0, 508, 506, 507, 509, 507, 508, 1038, 509, 510, 507, 508, 511, 510, 509, + 507, 511, 512, 1043, 510, 1040, 512, 511, 1044, 509, 1042, 508, 512, 508, 510, 0, 509, + 511, 508, 0, 509, 510, 512, 508, 511, 510, 509, 0, 511, 512, 1043, 510, 0, 512, + 511, 1044, 509, 0, 513, 512, 0, 510, 513, 514, 511, 0, 515, 514, 513, 512, 515, + 513, 516, 514, 516, 1045, 515, 515, 513, 516, 517, 514, 517, 514, 516, 513, 515, 517, + 517, 513, 514, 0, 517, 515, 514, 513, 0, 515, 513, 516, 514, 516, 1045, + + 515, 515, 513, 516, 517, 514, 517, 514, 516, 1046, 515, 517, 517, 518, 1051, 518, 517, + 519, 1052, 519, 518, 518, 1130, 1134, 519, 518, 520, 1135, 520, 519, 520, 1138, 0, 520, + 0, 0, 1046, 0, 520, 0, 518, 1051, 518, 1139, 519, 1052, 519, 518, 518, 1130, 1134, + 519, 518, 520, 1135, 520, 519, 520, 1138, 521, 520, 521, 522, 1143, 522, 520, 521, 521, + 0, 522, 1139, 521, 523, 1145, 522, 524, 523, 0, 1146, 524, 1149, 0, 523, 0, 0, + 524, 521, 1150, 521, 522, 1143, 522, 523, 521, 521, 524, 522, 0, 521, 523, + + 1145, 522, 524, 523, 526, 1146, 524, 1149, 525, 523, 525, 526, 524, 526, 1150, 525, 1151, + 0, 526, 523, 525, 1152, 524, 526, 527, 0, 529, 0, 527, 528, 529, 526, 0, 528, + 527, 525, 529, 525, 526, 528, 526, 528, 525, 1151, 527, 526, 529, 525, 1152, 528, 526, + 527, 531, 529, 531, 527, 528, 529, 1155, 531, 528, 527, 0, 529, 531, 0, 528, 0, + 528, 1156, 530, 527, 0, 529, 530, 1159, 528, 1161, 530, 531, 532, 531, 532, 0, 530, + 1155, 531, 532, 0, 532, 1162, 531, 532, 0, 530, 0, 1156, 530, 1163, 533, + + 1164, 530, 1159, 1165, 1161, 530, 0, 532, 533, 532, 533, 530, 1212, 1215, 532, 533, 532, + 1162, 1218, 532, 533, 530, 534, 1219, 534, 1163, 533, 1164, 1222, 534, 1165, 0, 0, 534, + 534, 533, 535, 533, 535, 1212, 1215, 0, 533, 535, 535, 1218, 0, 533, 535, 534, 1219, + 534, 536, 1223, 536, 1222, 534, 1224, 536, 536, 534, 534, 537, 535, 536, 535, 537, 1228, + 537, 0, 535, 535, 1229, 537, 0, 535, 0, 0, 537, 536, 1223, 536, 1213, 1213, 1224, + 536, 536, 1230, 1232, 537, 538, 536, 538, 537, 1228, 537, 538, 538, 1257, 1229, + + 537, 665, 538, 665, 666, 537, 666, 665, 665, 1258, 666, 666, 1261, 665, 1230, 1232, 666, + 538, 0, 538, 1213, 0, 667, 538, 538, 1257, 667, 0, 665, 538, 665, 666, 667, 666, + 665, 665, 1258, 666, 666, 1261, 665, 668, 667, 666, 669, 668, 671, 1213, 669, 667, 671, + 668, 1266, 667, 669, 1270, 671, 669, 670, 667, 670, 668, 1282, 1282, 669, 670, 671, 0, + 668, 667, 670, 669, 668, 671, 0, 669, 0, 671, 668, 1266, 0, 669, 1270, 671, 669, + 670, 1283, 670, 668, 1286, 0, 669, 670, 671, 672, 673, 672, 670, 674, 673, + + 0, 672, 674, 675, 1282, 673, 672, 675, 674, 0, 0, 675, 1289, 1283, 0, 673, 1286, + 675, 674, 0, 0, 672, 673, 672, 0, 674, 673, 675, 672, 674, 675, 1282, 673, 672, + 675, 674, 676, 677, 675, 1289, 676, 677, 673, 1294, 675, 674, 676, 677, 0, 1298, 0, + 678, 1302, 1304, 675, 678, 676, 677, 0, 678, 1235, 1235, 0, 676, 677, 678, 0, 676, + 677, 1306, 1294, 0, 0, 676, 677, 678, 1298, 679, 678, 1302, 1304, 679, 678, 676, 677, + 679, 678, 679, 1308, 680, 681, 682, 678, 680, 681, 682, 1306, 679, 1235, 680, + + 681, 682, 678, 681, 679, 1310, 0, 0, 679, 680, 681, 682, 679, 0, 679, 1308, 680, + 681, 682, 683, 680, 681, 682, 683, 679, 1235, 680, 681, 682, 683, 681, 1312, 1310, 684, + 683, 684, 680, 681, 682, 683, 684, 1314, 0, 685, 686, 684, 683, 685, 686, 0, 683, + 0, 0, 685, 686, 1316, 683, 1318, 1312, 686, 684, 683, 684, 685, 686, 0, 683, 684, + 1314, 687, 685, 686, 684, 687, 685, 686, 688, 0, 688, 687, 685, 686, 1316, 688, 1318, + 1320, 686, 0, 688, 687, 685, 686, 689, 689, 689, 0, 687, 1288, 1288, 689, + + 687, 0, 0, 688, 689, 688, 687, 0, 0, 0, 688, 0, 1320, 0, 0, 688, 687, + 0, 0, 689, 689, 689, 0, 690, 0, 690, 689, 0, 0, 0, 690, 689, 690, 0, + 691, 690, 691, 0, 0, 1288, 0, 691, 691, 0, 0, 0, 691, 692, 0, 0, 690, + 0, 690, 0, 0, 0, 0, 690, 692, 690, 692, 691, 690, 691, 0, 692, 1288, 0, + 691, 691, 692, 0, 0, 691, 692, 694, 693, 0, 693, 0, 0, 0, 693, 693, 694, + 692, 694, 692, 693, 0, 0, 694, 692, 0, 695, 0, 694, 692, 695, 0, + + 0, 0, 694, 693, 695, 693, 0, 0, 0, 693, 693, 694, 0, 694, 695, 693, 0, + 696, 694, 696, 697, 695, 697, 694, 696, 695, 698, 697, 698, 696, 705, 695, 697, 698, + 705, 0, 0, 0, 698, 0, 705, 695, 0, 0, 696, 0, 696, 697, 0, 697, 705, + 696, 0, 698, 697, 698, 696, 705, 0, 697, 698, 705, 699, 0, 699, 698, 699, 705, + 700, 699, 700, 0, 700, 0, 699, 700, 701, 705, 701, 0, 700, 0, 0, 701, 0, + 701, 0, 0, 701, 699, 0, 699, 0, 699, 0, 700, 699, 700, 703, 700, + + 0, 699, 700, 701, 0, 701, 702, 700, 702, 703, 701, 703, 701, 702, 702, 701, 703, + 0, 702, 704, 0, 703, 0, 0, 706, 703, 0, 0, 706, 0, 704, 0, 704, 702, + 706, 702, 703, 704, 703, 0, 702, 702, 704, 703, 706, 702, 704, 0, 703, 0, 707, + 706, 708, 0, 707, 706, 708, 704, 0, 704, 707, 706, 708, 0, 704, 707, 0, 0, + 0, 704, 707, 706, 708, 0, 709, 0, 710, 707, 709, 708, 710, 707, 709, 708, 0, + 0, 710, 707, 709, 708, 711, 0, 707, 0, 711, 0, 710, 707, 709, 708, + + 711, 709, 0, 710, 712, 709, 0, 710, 712, 709, 711, 0, 712, 710, 0, 709, 0, + 711, 712, 0, 714, 711, 713, 710, 714, 709, 713, 711, 712, 0, 714, 712, 713, 713, + 715, 712, 715, 711, 0, 712, 714, 715, 713, 0, 0, 712, 715, 714, 0, 713, 0, + 714, 0, 713, 0, 712, 0, 714, 0, 713, 713, 715, 0, 715, 716, 0, 716, 714, + 715, 713, 717, 716, 717, 715, 718, 719, 716, 717, 718, 719, 0, 0, 717, 0, 718, + 719, 0, 0, 719, 0, 0, 716, 0, 716, 718, 719, 0, 717, 716, 717, + + 0, 718, 719, 716, 717, 718, 719, 0, 0, 717, 0, 718, 719, 0, 0, 719, 720, + 0, 720, 0, 0, 718, 719, 720, 721, 0, 721, 722, 720, 722, 721, 721, 0, 722, + 722, 0, 721, 0, 0, 722, 0, 0, 0, 720, 0, 720, 0, 0, 0, 0, 720, + 721, 0, 721, 722, 720, 722, 721, 721, 0, 722, 722, 0, 721, 0, 0, 722, 723, + 724, 725, 724, 725, 723, 0, 723, 724, 725, 0, 723, 723, 724, 725, 0, 0, 723, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 723, 724, 725, 724, 725, 723, + + 0, 723, 724, 725, 0, 723, 723, 724, 725, 0, 726, 723, 726, 727, 728, 727, 728, + 726, 0, 0, 727, 728, 726, 0, 0, 727, 728, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 726, 0, 726, 727, 728, 727, 728, 726, 0, 0, 727, 728, 726, 0, + 0, 727, 728, 729, 0, 729, 730, 731, 730, 731, 729, 729, 0, 730, 731, 729, 0, + 0, 730, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 729, 730, + 731, 730, 731, 729, 729, 732, 730, 731, 729, 732, 733, 730, 731, 734, 733, + + 732, 0, 734, 736, 735, 733, 735, 736, 734, 736, 732, 735, 735, 0, 736, 733, 735, + 732, 734, 736, 0, 732, 733, 0, 0, 734, 733, 732, 0, 734, 736, 735, 733, 735, + 736, 734, 736, 732, 735, 735, 738, 736, 733, 735, 738, 734, 736, 737, 739, 737, 738, + 0, 739, 737, 737, 0, 0, 0, 739, 737, 738, 0, 0, 0, 0, 0, 0, 738, + 739, 0, 0, 738, 0, 0, 737, 739, 737, 738, 0, 739, 737, 737, 740, 0, 740, + 739, 737, 738, 740, 0, 0, 0, 741, 742, 740, 739, 741, 742, 0, 0, + + 0, 0, 741, 742, 740, 0, 742, 0, 0, 740, 0, 740, 741, 742, 0, 740, 0, + 0, 0, 741, 742, 740, 743, 741, 742, 0, 743, 0, 0, 741, 742, 740, 743, 742, + 744, 743, 0, 745, 744, 741, 742, 745, 743, 0, 744, 745, 746, 745, 0, 743, 746, + 0, 0, 743, 744, 0, 746, 745, 0, 743, 0, 744, 743, 0, 745, 744, 746, 0, + 745, 743, 0, 744, 745, 746, 745, 747, 748, 746, 0, 747, 748, 744, 0, 746, 745, + 747, 748, 0, 0, 0, 749, 0, 0, 746, 749, 747, 748, 0, 749, 0, + + 0, 0, 747, 748, 749, 0, 747, 748, 0, 0, 0, 0, 747, 748, 749, 0, 750, + 749, 0, 0, 750, 749, 747, 748, 750, 749, 0, 0, 751, 752, 750, 749, 751, 752, + 0, 0, 0, 0, 751, 752, 750, 749, 753, 750, 0, 0, 753, 750, 751, 752, 753, + 750, 753, 0, 0, 751, 752, 750, 0, 751, 752, 0, 753, 0, 0, 751, 752, 750, + 754, 753, 755, 0, 754, 753, 755, 751, 752, 753, 754, 753, 755, 754, 757, 0, 0, + 755, 757, 0, 754, 753, 755, 756, 757, 0, 756, 754, 0, 755, 756, 754, + + 0, 755, 757, 0, 756, 754, 0, 755, 754, 757, 0, 0, 755, 757, 756, 754, 758, + 755, 756, 757, 758, 756, 0, 760, 758, 756, 758, 0, 759, 757, 759, 756, 760, 0, + 760, 759, 758, 0, 761, 760, 759, 756, 761, 758, 760, 0, 0, 758, 761, 0, 760, + 758, 0, 758, 0, 759, 0, 759, 761, 760, 762, 760, 759, 758, 762, 761, 760, 759, + 763, 761, 762, 760, 763, 765, 764, 761, 764, 765, 763, 0, 762, 764, 0, 765, 0, + 761, 764, 762, 763, 0, 0, 762, 766, 765, 0, 763, 766, 762, 0, 763, + + 765, 764, 766, 764, 765, 763, 0, 762, 764, 0, 765, 0, 766, 764, 767, 763, 0, + 768, 767, 766, 765, 768, 769, 766, 767, 0, 769, 768, 0, 766, 0, 771, 769, 771, + 767, 0, 770, 768, 771, 766, 770, 767, 769, 771, 768, 767, 770, 0, 768, 769, 772, + 767, 772, 769, 768, 0, 770, 772, 771, 769, 771, 767, 772, 770, 768, 771, 0, 770, + 0, 769, 771, 774, 0, 770, 773, 0, 773, 772, 0, 772, 774, 773, 774, 770, 772, + 0, 773, 774, 775, 772, 775, 0, 774, 0, 0, 775, 0, 775, 774, 0, + + 775, 773, 0, 773, 776, 0, 776, 774, 773, 774, 0, 776, 0, 773, 774, 775, 776, + 775, 0, 774, 0, 0, 775, 777, 775, 777, 778, 775, 0, 0, 777, 776, 777, 776, + 779, 777, 779, 778, 776, 778, 0, 779, 779, 776, 778, 0, 779, 0, 0, 778, 777, + 0, 777, 778, 0, 0, 0, 777, 0, 777, 780, 779, 777, 779, 778, 780, 778, 780, + 779, 779, 781, 778, 780, 779, 781, 782, 778, 780, 782, 782, 781, 0, 0, 0, 0, + 782, 0, 780, 0, 0, 781, 0, 780, 0, 780, 782, 0, 781, 0, 780, + + 0, 781, 782, 0, 780, 782, 782, 781, 0, 783, 784, 785, 782, 783, 784, 785, 0, + 781, 0, 783, 784, 785, 782, 786, 787, 0, 784, 786, 787, 783, 784, 785, 0, 786, + 787, 0, 783, 784, 785, 0, 783, 784, 785, 786, 787, 0, 783, 784, 785, 0, 786, + 787, 0, 784, 786, 787, 783, 784, 785, 0, 786, 787, 788, 0, 788, 886, 887, 886, + 887, 788, 786, 787, 886, 887, 788, 0, 0, 886, 887, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 788, 0, 788, 886, 887, 886, 887, 788, 0, 0, 886, + + 887, 788, 0, 0, 886, 887, 888, 889, 888, 889, 0, 890, 891, 888, 889, 890, 891, + 0, 888, 889, 888, 890, 891, 0, 0, 0, 0, 0, 0, 0, 0, 890, 891, 888, + 889, 888, 889, 0, 890, 891, 888, 889, 890, 891, 0, 888, 889, 888, 890, 891, 892, + 893, 0, 0, 892, 893, 0, 0, 890, 891, 892, 893, 0, 895, 895, 894, 893, 0, + 895, 894, 892, 893, 0, 894, 895, 0, 0, 892, 893, 894, 0, 892, 893, 0, 895, + 0, 0, 892, 893, 894, 895, 895, 894, 893, 0, 895, 894, 892, 893, 0, + + 894, 895, 896, 897, 896, 897, 894, 0, 896, 0, 897, 895, 0, 0, 896, 897, 894, + 0, 0, 0, 0, 0, 0, 0, 896, 0, 898, 0, 898, 896, 897, 896, 897, 898, + 898, 896, 899, 897, 898, 900, 899, 896, 897, 900, 901, 902, 899, 902, 901, 900, 0, + 896, 902, 898, 901, 898, 899, 902, 903, 900, 898, 898, 903, 899, 901, 898, 900, 899, + 903, 0, 900, 901, 902, 899, 902, 901, 900, 0, 903, 902, 0, 901, 0, 899, 902, + 903, 900, 0, 904, 903, 0, 901, 904, 905, 0, 903, 907, 905, 904, 0, + + 907, 905, 906, 0, 906, 903, 907, 905, 904, 906, 0, 0, 0, 0, 906, 904, 907, + 905, 0, 904, 905, 0, 908, 907, 905, 904, 908, 907, 905, 906, 0, 906, 908, 907, + 905, 904, 906, 0, 0, 0, 0, 906, 908, 907, 905, 0, 909, 910, 0, 908, 909, + 910, 0, 908, 0, 0, 909, 910, 911, 908, 911, 0, 910, 0, 0, 911, 909, 910, + 0, 908, 911, 912, 0, 909, 910, 912, 913, 909, 910, 0, 913, 912, 0, 909, 910, + 911, 913, 911, 0, 910, 0, 912, 911, 909, 910, 914, 913, 911, 912, 914, + + 0, 0, 912, 913, 916, 914, 916, 913, 912, 0, 914, 916, 0, 913, 0, 914, 916, + 0, 912, 0, 915, 0, 914, 913, 915, 0, 914, 0, 0, 0, 915, 916, 914, 916, + 0, 915, 0, 914, 916, 0, 915, 0, 914, 916, 917, 0, 0, 915, 917, 919, 0, + 915, 0, 919, 917, 0, 0, 915, 923, 919, 923, 0, 915, 0, 917, 923, 918, 915, + 918, 919, 923, 917, 918, 0, 0, 917, 919, 0, 918, 0, 919, 917, 0, 0, 0, + 923, 919, 923, 918, 0, 920, 917, 923, 918, 920, 918, 919, 923, 921, 918, + + 920, 0, 921, 0, 0, 918, 0, 0, 921, 0, 920, 0, 0, 0, 0, 918, 921, + 920, 921, 0, 0, 920, 0, 0, 922, 921, 0, 920, 922, 921, 0, 0, 0, 0, + 922, 921, 0, 920, 0, 922, 924, 925, 924, 921, 922, 921, 925, 924, 925, 0, 0, + 922, 924, 925, 0, 922, 0, 0, 925, 0, 0, 922, 0, 0, 0, 0, 922, 924, + 925, 924, 926, 922, 926, 925, 924, 925, 927, 926, 927, 924, 925, 0, 926, 927, 928, + 925, 928, 0, 927, 0, 0, 928, 928, 0, 0, 0, 928, 926, 0, 926, + + 929, 0, 929, 927, 926, 927, 0, 929, 0, 926, 927, 928, 929, 928, 930, 927, 930, + 0, 928, 928, 0, 930, 0, 928, 0, 0, 930, 929, 931, 929, 931, 0, 0, 0, + 929, 931, 931, 0, 0, 929, 931, 930, 933, 930, 933, 0, 932, 0, 930, 933, 932, + 0, 933, 930, 933, 931, 932, 931, 934, 0, 934, 0, 931, 931, 0, 934, 932, 931, + 0, 933, 934, 933, 0, 932, 0, 0, 933, 932, 0, 933, 0, 933, 935, 932, 935, + 934, 0, 934, 936, 935, 936, 0, 934, 932, 935, 936, 0, 934, 937, 0, + + 936, 0, 0, 0, 0, 0, 937, 0, 937, 935, 0, 935, 938, 937, 938, 936, 935, + 936, 937, 938, 0, 935, 936, 0, 938, 937, 0, 936, 0, 0, 939, 0, 939, 937, + 940, 937, 0, 939, 940, 938, 937, 938, 939, 0, 940, 937, 938, 0, 941, 0, 941, + 938, 0, 0, 940, 941, 0, 939, 0, 939, 941, 940, 0, 0, 939, 940, 0, 942, + 0, 939, 0, 940, 0, 0, 0, 941, 0, 941, 942, 0, 942, 940, 941, 0, 943, + 942, 943, 941, 0, 0, 942, 943, 943, 944, 942, 0, 943, 944, 0, 944, + + 0, 0, 0, 0, 944, 942, 0, 942, 0, 944, 0, 943, 942, 943, 0, 0, 0, + 942, 943, 943, 944, 0, 0, 943, 944, 945, 944, 945, 946, 0, 946, 944, 945, 945, + 0, 946, 944, 945, 948, 947, 946, 947, 948, 0, 0, 0, 947, 0, 948, 0, 0, + 947, 945, 0, 945, 946, 0, 946, 948, 945, 945, 0, 946, 0, 945, 948, 947, 946, + 947, 948, 0, 0, 949, 947, 0, 948, 949, 0, 947, 950, 950, 0, 949, 0, 950, + 948, 0, 949, 0, 0, 950, 0, 949, 0, 0, 0, 0, 0, 0, 949, + + 950, 0, 0, 949, 0, 0, 950, 950, 951, 949, 0, 950, 951, 0, 949, 0, 952, + 950, 951, 949, 952, 951, 0, 0, 0, 0, 952, 950, 951, 952, 953, 0, 0, 0, + 953, 951, 952, 0, 0, 951, 953, 0, 954, 952, 0, 951, 954, 952, 951, 0, 953, + 0, 954, 952, 955, 951, 952, 953, 955, 0, 0, 953, 954, 952, 955, 0, 956, 953, + 0, 954, 956, 0, 0, 954, 955, 0, 956, 953, 0, 954, 957, 955, 0, 0, 957, + 955, 956, 0, 957, 954, 0, 955, 958, 956, 957, 0, 958, 956, 961, 0, + + 958, 955, 961, 956, 957, 0, 958, 957, 961, 959, 959, 957, 0, 956, 959, 957, 958, + 0, 961, 958, 959, 957, 962, 958, 960, 961, 962, 958, 960, 961, 959, 957, 962, 958, + 960, 961, 959, 959, 0, 960, 0, 959, 962, 958, 960, 961, 0, 959, 0, 962, 964, + 960, 0, 962, 964, 960, 0, 959, 964, 962, 0, 960, 963, 963, 964, 0, 960, 963, + 965, 962, 965, 960, 0, 963, 964, 965, 0, 964, 0, 0, 965, 964, 0, 963, 0, + 964, 966, 0, 966, 963, 963, 964, 966, 966, 963, 965, 0, 965, 966, 0, + + 963, 964, 965, 0, 967, 0, 967, 965, 0, 0, 963, 967, 967, 966, 0, 966, 967, + 968, 0, 966, 966, 0, 0, 969, 0, 966, 0, 0, 968, 0, 968, 967, 0, 967, + 969, 968, 969, 0, 967, 967, 968, 969, 0, 967, 968, 0, 969, 970, 0, 970, 969, + 0, 0, 0, 970, 968, 0, 968, 971, 970, 971, 969, 968, 969, 0, 971, 0, 968, + 969, 0, 971, 0, 0, 969, 970, 0, 970, 0, 972, 973, 973, 970, 972, 0, 973, + 971, 970, 971, 972, 0, 973, 0, 971, 0, 0, 0, 0, 971, 972, 0, + + 973, 0, 0, 0, 974, 972, 973, 973, 974, 972, 0, 973, 975, 0, 974, 972, 975, + 973, 0, 0, 0, 976, 975, 976, 974, 972, 0, 973, 976, 977, 0, 974, 975, 976, + 0, 974, 0, 0, 0, 975, 977, 974, 977, 975, 0, 0, 0, 977, 976, 975, 976, + 974, 977, 978, 0, 976, 977, 0, 0, 975, 976, 979, 0, 979, 978, 0, 978, 977, + 979, 977, 980, 978, 980, 979, 977, 0, 978, 980, 0, 977, 978, 0, 980, 0, 0, + 0, 0, 0, 979, 0, 979, 978, 1054, 978, 0, 979, 1054, 980, 978, 980, + + 979, 1055, 1054, 978, 980, 1055, 1056, 0, 1056, 980, 1059, 1055, 1054, 1056, 1059, 1057, 0, + 1057, 1056, 1054, 1059, 1055, 1057, 1054, 1058, 0, 1058, 1057, 1055, 1054, 1059, 1058, 1055, 1056, + 0, 1056, 1058, 1059, 1055, 1054, 1056, 1059, 1057, 0, 1057, 1056, 1060, 1059, 1055, 1057, 1060, + 1058, 0, 1058, 1057, 0, 1060, 1059, 1058, 0, 1061, 1060, 1061, 1058, 0, 0, 1060, 1061, + 1062, 1063, 1062, 1063, 1061, 1060, 0, 1062, 1063, 1060, 0, 0, 1062, 1063, 0, 1060, 0, + 0, 0, 1061, 1060, 1061, 0, 0, 0, 1060, 1061, 1062, 1063, 1062, 1063, 1061, + + 0, 0, 1062, 1063, 1064, 0, 1064, 1062, 1063, 0, 1065, 1064, 1065, 1066, 1066, 1066, 1064, + 1065, 1065, 0, 1066, 0, 1065, 0, 0, 1066, 0, 0, 0, 0, 0, 1064, 0, 1064, + 0, 0, 0, 1065, 1064, 1065, 1066, 1066, 1066, 1064, 1065, 1065, 1067, 1066, 0, 1065, 0, + 1068, 1066, 1068, 0, 1067, 0, 1067, 1068, 0, 0, 0, 1067, 1068, 1069, 0, 1069, 1067, + 0, 0, 0, 1069, 1069, 1067, 0, 0, 1069, 0, 1068, 0, 1068, 0, 1067, 0, 1067, + 1068, 0, 0, 0, 1067, 1068, 1069, 0, 1069, 1067, 1070, 1071, 1070, 1069, 1069, + + 0, 0, 1070, 1069, 0, 0, 1071, 1070, 1071, 1072, 0, 1072, 0, 1071, 0, 0, 1072, + 0, 1071, 0, 0, 1072, 1070, 1071, 1070, 0, 0, 0, 1073, 1070, 0, 0, 0, 1071, + 1070, 1071, 1072, 1073, 1072, 1073, 1071, 0, 0, 1072, 1073, 1071, 0, 0, 1072, 1073, 1074, + 1075, 1074, 1075, 0, 1073, 0, 1074, 1075, 0, 0, 0, 1074, 1075, 1073, 0, 1073, 0, + 0, 0, 0, 1073, 0, 0, 0, 0, 1073, 1074, 1075, 1074, 1075, 1076, 1077, 1076, 1074, + 1075, 1077, 1078, 1076, 1074, 1075, 1078, 1077, 1076, 1079, 0, 1079, 1078, 0, 0, + + 0, 1079, 1077, 0, 0, 0, 1079, 1078, 1076, 1077, 1076, 0, 0, 1077, 1078, 1076, 0, + 0, 1078, 1077, 1076, 1079, 0, 1079, 1078, 0, 0, 0, 1079, 1077, 1080, 1081, 1080, 1079, + 1078, 1081, 1082, 1080, 1080, 0, 1082, 1081, 1080, 0, 0, 0, 1082, 0, 0, 0, 1083, + 1081, 0, 0, 1083, 0, 1082, 1080, 1081, 1080, 1083, 0, 1081, 1082, 1080, 1080, 0, 1082, + 1081, 1080, 1083, 0, 1084, 1082, 0, 1085, 1084, 1083, 1081, 1085, 1086, 1083, 1084, 1082, 1086, + 1085, 0, 1083, 0, 0, 1086, 0, 1084, 0, 1087, 1085, 0, 1083, 1087, 1084, + + 1086, 0, 1085, 1084, 1087, 0, 1085, 1086, 0, 1084, 0, 1086, 1085, 0, 1087, 0, 1088, + 1086, 0, 1084, 1088, 1087, 1085, 0, 1089, 1087, 1088, 1086, 1089, 1088, 0, 1087, 0, 0, + 1089, 0, 1088, 0, 1090, 0, 0, 1087, 1090, 1088, 1089, 0, 1090, 1088, 0, 0, 1091, + 1089, 1090, 1088, 1091, 1089, 1088, 0, 0, 0, 1091, 1089, 1090, 1088, 1092, 1090, 0, 0, + 1092, 1090, 1091, 1089, 0, 1090, 1092, 0, 1093, 1091, 1093, 1090, 0, 1091, 0, 1093, 1092, + 0, 0, 1091, 1093, 1090, 0, 1092, 1094, 0, 1094, 1092, 0, 1091, 0, 1094, + + 1095, 1092, 1095, 1093, 1094, 1093, 1096, 1095, 1096, 0, 1093, 1092, 1095, 1096, 0, 1093, 0, + 0, 1096, 1094, 0, 1094, 0, 0, 0, 1097, 1094, 1095, 0, 1095, 1098, 1094, 1098, 1096, + 1095, 1096, 1097, 1098, 1097, 1095, 1096, 0, 1098, 1097, 0, 1096, 0, 0, 1097, 0, 0, + 0, 1097, 0, 1099, 0, 1099, 1098, 0, 1098, 0, 1099, 1099, 1097, 1098, 1097, 1099, 1100, + 0, 1098, 1097, 1100, 1101, 0, 0, 1097, 1101, 1100, 0, 0, 1102, 1099, 1101, 1099, 1102, + 0, 0, 1100, 1099, 1099, 1102, 0, 1101, 1099, 1100, 0, 0, 0, 1100, 1101, + + 1102, 0, 1103, 1101, 1100, 0, 1103, 1102, 0, 1101, 0, 1102, 1103, 0, 1100, 0, 1104, + 1102, 0, 1101, 1104, 0, 1103, 0, 0, 0, 1104, 1102, 1105, 1103, 1105, 0, 0, 1103, + 1105, 0, 1104, 0, 0, 1103, 1105, 0, 1106, 1104, 1106, 0, 0, 1104, 1106, 1103, 1105, + 0, 0, 1104, 1106, 1105, 0, 1105, 1107, 0, 1107, 1105, 0, 1104, 1106, 1107, 1108, 1105, + 1108, 1106, 1107, 1106, 1109, 1108, 1109, 1106, 0, 1105, 1108, 1109, 0, 1106, 0, 0, 1109, + 1107, 0, 1107, 0, 0, 0, 1106, 1107, 1108, 0, 1108, 1110, 1107, 1110, 1109, + + 1108, 1109, 1111, 1110, 1111, 1108, 1109, 0, 1110, 1111, 1112, 1109, 1112, 0, 1111, 0, 0, + 1112, 0, 0, 0, 0, 1112, 1110, 0, 1110, 1113, 0, 1113, 1111, 1110, 1111, 0, 1113, + 1114, 1110, 1111, 1112, 1113, 1112, 0, 1111, 0, 0, 1112, 1114, 1173, 1114, 0, 1112, 1173, + 0, 1114, 1113, 0, 1113, 1173, 1114, 1115, 1116, 1113, 1114, 0, 0, 0, 1113, 1173, 0, + 1116, 1115, 1116, 1115, 1114, 1173, 1114, 1116, 1115, 1173, 0, 1114, 1116, 1115, 0, 1173, 1114, + 1115, 1116, 0, 0, 0, 0, 0, 1117, 1173, 1117, 1116, 1115, 1116, 1115, 1117, + + 1117, 0, 1116, 1115, 1117, 1118, 0, 1116, 1115, 0, 1119, 0, 1119, 1118, 0, 1118, 1120, + 1119, 1120, 1117, 1118, 1117, 1119, 1120, 0, 1118, 1117, 1117, 1120, 0, 0, 1117, 1118, 0, + 1121, 0, 1121, 1119, 0, 1119, 1118, 1121, 1118, 1120, 1119, 1120, 1121, 1118, 0, 1119, 1120, + 0, 1118, 0, 0, 1120, 0, 1122, 0, 1122, 1123, 1121, 1123, 1121, 1122, 0, 1123, 1123, + 1121, 1122, 0, 0, 1123, 1121, 0, 0, 1124, 0, 1124, 0, 0, 0, 0, 1124, 1122, + 0, 1122, 1123, 1124, 1123, 1169, 1122, 1169, 1123, 1123, 0, 1122, 1169, 0, 1123, + + 0, 0, 1169, 1124, 1170, 1124, 1170, 0, 0, 0, 1124, 1170, 0, 0, 0, 1124, 1170, + 1169, 1171, 1169, 1171, 0, 0, 0, 1169, 1171, 0, 0, 0, 1169, 1171, 1170, 1172, 1170, + 1172, 0, 1174, 0, 1170, 1172, 1174, 0, 0, 1170, 1172, 1171, 1174, 1171, 0, 0, 1175, + 0, 1171, 0, 1175, 0, 1174, 1171, 0, 1172, 1175, 1172, 0, 1174, 1176, 1176, 1172, 1174, + 0, 0, 1175, 1172, 0, 1174, 1177, 0, 0, 1175, 1177, 0, 0, 1175, 0, 1174, 1177, + 0, 0, 1175, 1178, 1176, 0, 0, 1178, 1176, 1177, 0, 1178, 1175, 0, 1176, + + 0, 1177, 1178, 0, 1179, 1177, 0, 0, 1179, 1176, 0, 1177, 1178, 0, 1179, 1178, 1176, + 0, 1180, 1178, 1176, 1177, 1180, 1178, 1179, 0, 1176, 0, 1180, 1178, 1181, 1179, 0, 1182, + 1181, 1179, 1176, 1182, 1180, 1178, 1181, 1179, 1183, 1182, 0, 1180, 1183, 0, 1182, 1180, 1181, + 1179, 1183, 1182, 0, 1180, 0, 1181, 0, 0, 1182, 1181, 1183, 0, 1182, 1180, 0, 1181, + 1184, 1183, 1182, 0, 1184, 1183, 0, 1182, 0, 1181, 1184, 1183, 1182, 1185, 0, 0, 0, + 1185, 0, 0, 1184, 1183, 1186, 1185, 1186, 0, 0, 1184, 0, 1186, 0, 1184, + + 0, 1185, 1186, 0, 1187, 1184, 1187, 0, 1185, 0, 0, 1187, 1185, 0, 1188, 1184, 1187, + 1186, 1185, 1186, 1189, 0, 1189, 1188, 1186, 1188, 0, 1189, 1185, 1186, 1188, 1187, 1189, 1187, + 0, 1188, 0, 0, 1187, 0, 0, 1188, 0, 1187, 1190, 0, 1190, 1189, 0, 1189, 1188, + 1190, 1188, 1191, 1189, 1191, 1190, 1188, 0, 1189, 1191, 0, 1188, 0, 0, 1191, 0, 0, + 0, 0, 0, 1190, 0, 1190, 0, 0, 0, 0, 1190, 1192, 1191, 1192, 1191, 1190, 1193, + 1192, 1192, 1191, 1193, 1194, 0, 1192, 1191, 1194, 1193, 1195, 0, 1195, 1196, 1194, + + 1196, 0, 1195, 0, 1193, 1196, 1192, 1195, 1192, 1194, 1196, 1193, 1192, 1192, 0, 1193, 1194, + 0, 1192, 0, 1194, 1193, 1195, 0, 1195, 1196, 1194, 1196, 1197, 1195, 1197, 1193, 1196, 0, + 1195, 1197, 1194, 1196, 0, 1198, 1197, 1198, 0, 0, 0, 0, 1198, 1198, 0, 0, 0, + 1198, 1200, 0, 1200, 1197, 0, 1197, 0, 1200, 0, 0, 1197, 0, 1200, 0, 1198, 1197, + 1198, 1199, 1199, 0, 1199, 1198, 1198, 0, 0, 1199, 1198, 1200, 0, 1200, 1199, 1201, 0, + 1201, 1200, 0, 0, 0, 1201, 1200, 0, 0, 0, 1201, 1199, 1199, 0, 1199, + + 0, 0, 0, 0, 1199, 0, 1202, 0, 1202, 1199, 1201, 0, 1201, 1202, 1202, 0, 0, + 1201, 1202, 1203, 0, 1203, 1201, 0, 0, 0, 1203, 1205, 1205, 1205, 1204, 1203, 1204, 1202, + 1205, 1202, 1204, 1204, 0, 1205, 1202, 1202, 1204, 0, 0, 1202, 1203, 0, 1203, 0, 0, + 0, 0, 1203, 1205, 1205, 1205, 1204, 1203, 1204, 1206, 1205, 1206, 1204, 1204, 0, 1205, 1206, + 1206, 1204, 1207, 1208, 1206, 1209, 1207, 1208, 0, 1209, 0, 0, 1207, 1208, 0, 1209, 0, + 0, 0, 1206, 0, 1206, 1207, 1208, 0, 1209, 1206, 1206, 0, 1207, 1208, 1206, + + 1209, 1207, 1208, 0, 1209, 1210, 0, 1207, 1208, 1210, 1209, 0, 0, 0, 0, 1210, 0, + 1207, 1208, 1236, 1209, 0, 0, 1236, 1234, 1210, 0, 0, 1234, 1236, 0, 0, 1210, 0, + 1234, 0, 1210, 1234, 0, 1236, 0, 0, 1210, 1237, 1234, 0, 1236, 1237, 0, 0, 1236, + 1234, 1210, 1237, 0, 1234, 1236, 0, 1237, 0, 0, 1234, 0, 1237, 1234, 0, 1236, 0, + 1238, 1239, 1237, 1234, 1238, 1239, 1237, 0, 0, 0, 1238, 1239, 1237, 0, 1240, 1241, 1240, + 1237, 1240, 1241, 1238, 1239, 1237, 0, 1240, 1241, 0, 1238, 1239, 1242, 1241, 1238, + + 1239, 1242, 1240, 1241, 0, 1238, 1239, 1242, 0, 1240, 1241, 1240, 0, 1240, 1241, 1238, 1239, + 1242, 0, 1240, 1241, 0, 1243, 1244, 1242, 1241, 1243, 1244, 1242, 1240, 1241, 0, 1243, 1244, + 1242, 0, 1244, 0, 0, 1245, 1246, 1245, 1243, 1244, 1242, 1246, 1245, 1246, 0, 1243, 1244, + 1245, 1246, 1243, 1244, 0, 0, 1246, 0, 1243, 1244, 0, 0, 1244, 0, 0, 1245, 1246, + 1245, 1243, 1244, 0, 1246, 1245, 1246, 1247, 0, 1247, 1245, 1246, 0, 1248, 1247, 1248, 1246, + 0, 0, 1247, 1248, 1249, 0, 1249, 0, 1248, 0, 0, 1249, 0, 0, 0, + + 0, 1249, 1247, 0, 1247, 0, 0, 1250, 1248, 1247, 1248, 1250, 0, 0, 1247, 1248, 1249, + 1250, 1249, 0, 1248, 1251, 0, 1249, 0, 1251, 1252, 1250, 1249, 1253, 1252, 1251, 1251, 1253, + 1250, 0, 1252, 0, 1250, 1253, 0, 1251, 0, 0, 1250, 0, 1252, 0, 1251, 1253, 1254, + 1254, 1251, 1252, 1250, 1254, 1253, 1252, 1251, 1251, 1253, 1254, 0, 1252, 1269, 1269, 1253, 0, + 1251, 0, 1271, 1254, 0, 1252, 1271, 1272, 1253, 1254, 1254, 1272, 1271, 0, 1254, 0, 1274, + 1272, 1274, 0, 1254, 1269, 1271, 1274, 0, 1269, 0, 1272, 1274, 1271, 1254, 1269, + + 0, 1271, 1272, 1275, 1273, 1275, 1272, 1271, 1273, 1269, 1275, 1274, 1272, 1274, 1273, 1275, 1269, + 1271, 1274, 0, 1269, 0, 1272, 1274, 1273, 0, 1269, 1276, 0, 1276, 1275, 1273, 1275, 0, + 1276, 1273, 1269, 1275, 1277, 1276, 1277, 1273, 1275, 0, 0, 1277, 1278, 0, 1278, 0, 1277, + 1273, 0, 1278, 1276, 0, 1276, 0, 1278, 1279, 0, 1276, 0, 1279, 1280, 1277, 1276, 1277, + 1280, 1279, 0, 0, 1277, 1278, 1280, 1278, 0, 1277, 1290, 1279, 1278, 0, 1290, 1291, 1280, + 1278, 1279, 1291, 1290, 0, 1279, 1280, 1292, 1291, 1292, 1280, 1279, 0, 1290, 1292, + + 1300, 1280, 1300, 1291, 1292, 1290, 1279, 1300, 0, 1290, 1291, 1280, 1300, 0, 1291, 1290, 0, + 0, 0, 1292, 1291, 1292, 0, 0, 0, 1290, 1292, 1300, 0, 1300, 1291, 1292, 0, 0, + 1300, 0, 0, 0, 0, 1300, 1332, 1332, 1332, 1332, 1332, 1333, 0, 0, 1333, 1333, 1335, + 1335, 1335, 0, 1335, 1336, 0, 1336, 1336, 1336, 1337, 0, 1337, 1337, 1337, 1338, 0, 1338, + 1338, 1338, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -2932,17 +2123,18 @@ static const flex_int16_t yy_chk[8393] = ***************************/ #line 12 "flex_lexer.l" -#include "../sql/Expr.h" -#include "bison_parser.h" -#include #include +#include #include +#include "../sql/Expr.h" +#include "bison_parser.h" -#define TOKEN(name) { return SQL_##name; } +#define TOKEN(name) \ + { return SQL_##name; } static thread_local std::stringstream strbuf; -#line 2945 "flex_lexer.cpp" +#line 3064 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -2956,7 +2148,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 2959 "flex_lexer.cpp" +#line 3078 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -2971,129 +2163,127 @@ static thread_local std::stringstream strbuf; #endif #ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * +#define YY_EXTRA_TYPE void* #endif /* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - YYSTYPE * yylval_r; - - YYLTYPE * yylloc_r; - - }; /* end struct yyguts_t */ +struct yyguts_t { + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE* yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char* yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int* yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char* yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE* yylval_r; + + YYLTYPE* yylloc_r; + +}; /* end struct yyguts_t */ + +static int yy_init_globals(yyscan_t yyscanner); + +/* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ +#define yylval yyg->yylval_r -static int yy_init_globals ( yyscan_t yyscanner ); +#define yylloc yyg->yylloc_r - /* This must go here because YYSTYPE and YYLTYPE are included - * from bison output in section 1.*/ - # define yylval yyg->yylval_r - - # define yylloc yyg->yylloc_r - -int yylex_init (yyscan_t* scanner); +int yylex_init(yyscan_t* scanner); -int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( yyscan_t yyscanner ); +int yylex_destroy(yyscan_t yyscanner); -int yyget_debug ( yyscan_t yyscanner ); +int yyget_debug(yyscan_t yyscanner); -void yyset_debug ( int debug_flag , yyscan_t yyscanner ); +void yyset_debug(int debug_flag, yyscan_t yyscanner); -YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); +YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner); -void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); +void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); -FILE *yyget_in ( yyscan_t yyscanner ); +FILE* yyget_in(yyscan_t yyscanner); -void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); +void yyset_in(FILE* _in_str, yyscan_t yyscanner); -FILE *yyget_out ( yyscan_t yyscanner ); +FILE* yyget_out(yyscan_t yyscanner); -void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); +void yyset_out(FILE* _out_str, yyscan_t yyscanner); - int yyget_leng ( yyscan_t yyscanner ); +int yyget_leng(yyscan_t yyscanner); -char *yyget_text ( yyscan_t yyscanner ); +char* yyget_text(yyscan_t yyscanner); -int yyget_lineno ( yyscan_t yyscanner ); +int yyget_lineno(yyscan_t yyscanner); -void yyset_lineno ( int _line_number , yyscan_t yyscanner ); +void yyset_lineno(int _line_number, yyscan_t yyscanner); -int yyget_column ( yyscan_t yyscanner ); +int yyget_column(yyscan_t yyscanner); -void yyset_column ( int _column_no , yyscan_t yyscanner ); +void yyset_column(int _column_no, yyscan_t yyscanner); -YYSTYPE * yyget_lval ( yyscan_t yyscanner ); +YYSTYPE* yyget_lval(yyscan_t yyscanner); -void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); +void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner); + +YYLTYPE* yyget_lloc(yyscan_t yyscanner); + +void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner); - YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); - - void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); - /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( yyscan_t yyscanner ); +extern "C" int yywrap(yyscan_t yyscanner); #else -extern int yywrap ( yyscan_t yyscanner ); +extern int yywrap(yyscan_t yyscanner); #endif #endif #ifndef YY_NO_UNPUT - + #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); +static void yy_flex_strncpy(char*, const char*, int, yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * , yyscan_t yyscanner); +static int yy_flex_strlen(const char*, yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus -static int yyinput ( yyscan_t yyscanner ); +static int yyinput(yyscan_t yyscanner); #else -static int input ( yyscan_t yyscanner ); +static int input(yyscan_t yyscanner); #endif #endif @@ -3113,42 +2303,36 @@ static int input ( yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#define ECHO \ + do { \ + if (fwrite(yytext, (size_t)yyleng, 1, yyout)) { \ + } \ + } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ +#define YY_INPUT(buf, result, max_size) \ + if (YY_CURRENT_BUFFER_LVALUE->yy_is_interactive) { \ + int c = '*'; \ + int n; \ + for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\n'; ++n) buf[n] = (char)c; \ + if (c == '\n') buf[n++] = (char)c; \ + if (c == EOF && ferror(yyin)) YY_FATAL_ERROR("input in flex scanner failed"); \ + result = n; \ + } else { \ + errno = 0; \ + while ((result = (int)fread(buf, 1, (yy_size_t)max_size, yyin)) == 0 && ferror(yyin)) { \ + if (errno != EINTR) { \ + YY_FATAL_ERROR("input in flex scanner failed"); \ + break; \ + } \ + errno = 0; \ + clearerr(yyin); \ + } \ + } #endif @@ -3167,7 +2351,7 @@ static int input ( yyscan_t yyscanner ); /* Report a fatal error. */ #ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#define YY_FATAL_ERROR(msg) yy_fatal_error(msg, yyscanner) #endif /* end tables serialization structures and prototypes */ @@ -3178,11 +2362,9 @@ static int input ( yyscan_t yyscanner ); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); +extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner); -#define YY_DECL int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) +#define YY_DECL int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng @@ -3194,1067 +2376,1092 @@ extern int yylex \ /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK /*LINTED*/ break; #endif -#define YY_RULE_SETUP \ - YY_USER_ACTION +#define YY_RULE_SETUP YY_USER_ACTION /** The main scanner function which does all the work. */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +YY_DECL { + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yylval = yylval_param; + yylval = yylval_param; - yylloc = yylloc_param; + yylloc = yylloc_param; - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; + if (!yyg->yy_init) { + yyg->yy_init = 1; #ifdef YY_USER_INIT - YY_USER_INIT; + YY_USER_INIT; #endif - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ + if (!yyg->yy_start) yyg->yy_start = 1; /* first start state */ - if ( ! yyin ) - yyin = stdin; + if (!yyin) yyin = stdin; - if ( ! yyout ) - yyout = stdout; + if (!yyout) yyout = stdout; - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); - } + if (!YY_CURRENT_BUFFER) { + yyensure_buffer_stack(yyscanner); + YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); + } - yy_load_buffer_state( yyscanner ); - } + yy_load_buffer_state(yyscanner); + } - { + { #line 57 "flex_lexer.l" +#line 3365 "flex_lexer.cpp" -#line 3246 "flex_lexer.cpp" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; + while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; - /* yy_bp points to the position in yy_ch_buf of the start of + /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1272 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_current_state != 1271 ); - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if (yy_accept[yy_current_state]) { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332) yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } while (yy_current_state != 1331); + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP #line 59 "flex_lexer.l" -BEGIN(COMMENT); - YY_BREAK -case 2: -YY_RULE_SETUP + BEGIN(COMMENT); + YY_BREAK + case 2: + YY_RULE_SETUP #line 60 "flex_lexer.l" -/* skipping comment content until a end of line is read */; - YY_BREAK -case 3: -/* rule 3 can match eol */ -YY_RULE_SETUP + /* skipping comment content until a end of line is read */; + YY_BREAK + case 3: + /* rule 3 can match eol */ + YY_RULE_SETUP #line 61 "flex_lexer.l" -BEGIN(INITIAL); - YY_BREAK -case 4: -/* rule 4 can match eol */ -YY_RULE_SETUP + BEGIN(INITIAL); + YY_BREAK + case 4: + /* rule 4 can match eol */ + YY_RULE_SETUP #line 63 "flex_lexer.l" -/* skip whitespace */; - YY_BREAK -case 5: -YY_RULE_SETUP + /* skip whitespace */; + YY_BREAK + case 5: + YY_RULE_SETUP #line 65 "flex_lexer.l" -TOKEN(ADD) - YY_BREAK -case 6: -YY_RULE_SETUP + TOKEN(ADD) + YY_BREAK + case 6: + YY_RULE_SETUP #line 66 "flex_lexer.l" -TOKEN(AFTER) - YY_BREAK -case 7: -YY_RULE_SETUP + TOKEN(AFTER) + YY_BREAK + case 7: + YY_RULE_SETUP #line 67 "flex_lexer.l" -TOKEN(ALL) - YY_BREAK -case 8: -YY_RULE_SETUP + TOKEN(ALL) + YY_BREAK + case 8: + YY_RULE_SETUP #line 68 "flex_lexer.l" -TOKEN(ALTER) - YY_BREAK -case 9: -YY_RULE_SETUP + TOKEN(ALTER) + YY_BREAK + case 9: + YY_RULE_SETUP #line 69 "flex_lexer.l" -TOKEN(ANALYZE) - YY_BREAK -case 10: -YY_RULE_SETUP + TOKEN(ANALYZE) + YY_BREAK + case 10: + YY_RULE_SETUP #line 70 "flex_lexer.l" -TOKEN(AND) - YY_BREAK -case 11: -YY_RULE_SETUP + TOKEN(AND) + YY_BREAK + case 11: + YY_RULE_SETUP #line 71 "flex_lexer.l" -TOKEN(ARRAY) - YY_BREAK -case 12: -YY_RULE_SETUP + TOKEN(ARRAY) + YY_BREAK + case 12: + YY_RULE_SETUP #line 72 "flex_lexer.l" -TOKEN(AS) - YY_BREAK -case 13: -YY_RULE_SETUP + TOKEN(AS) + YY_BREAK + case 13: + YY_RULE_SETUP #line 73 "flex_lexer.l" -TOKEN(ASC) - YY_BREAK -case 14: -YY_RULE_SETUP + TOKEN(ASC) + YY_BREAK + case 14: + YY_RULE_SETUP #line 74 "flex_lexer.l" -TOKEN(BEFORE) - YY_BREAK -case 15: -YY_RULE_SETUP + TOKEN(BEFORE) + YY_BREAK + case 15: + YY_RULE_SETUP #line 75 "flex_lexer.l" -TOKEN(BEGIN) - YY_BREAK -case 16: -YY_RULE_SETUP + TOKEN(BEGIN) + YY_BREAK + case 16: + YY_RULE_SETUP #line 76 "flex_lexer.l" -TOKEN(BETWEEN) - YY_BREAK -case 17: -YY_RULE_SETUP + TOKEN(BETWEEN) + YY_BREAK + case 17: + YY_RULE_SETUP #line 77 "flex_lexer.l" -TOKEN(BIGINT) - YY_BREAK -case 18: -YY_RULE_SETUP + TOKEN(BIGINT) + YY_BREAK + case 18: + YY_RULE_SETUP #line 78 "flex_lexer.l" -TOKEN(BOOLEAN) - YY_BREAK -case 19: -YY_RULE_SETUP + TOKEN(BOOLEAN) + YY_BREAK + case 19: + YY_RULE_SETUP #line 79 "flex_lexer.l" -TOKEN(BY) - YY_BREAK -case 20: -YY_RULE_SETUP + TOKEN(BY) + YY_BREAK + case 20: + YY_RULE_SETUP #line 80 "flex_lexer.l" -TOKEN(CALL) - YY_BREAK -case 21: -YY_RULE_SETUP + TOKEN(CALL) + YY_BREAK + case 21: + YY_RULE_SETUP #line 81 "flex_lexer.l" -TOKEN(CASCADE) - YY_BREAK -case 22: -YY_RULE_SETUP + TOKEN(CASCADE) + YY_BREAK + case 22: + YY_RULE_SETUP #line 82 "flex_lexer.l" -TOKEN(CASE) - YY_BREAK -case 23: -YY_RULE_SETUP + TOKEN(CASE) + YY_BREAK + case 23: + YY_RULE_SETUP #line 83 "flex_lexer.l" -TOKEN(CAST) - YY_BREAK -case 24: -YY_RULE_SETUP + TOKEN(CAST) + YY_BREAK + case 24: + YY_RULE_SETUP #line 84 "flex_lexer.l" -TOKEN(CHAR) - YY_BREAK -case 25: -YY_RULE_SETUP + TOKEN(CHAR) + YY_BREAK + case 25: + YY_RULE_SETUP #line 85 "flex_lexer.l" -TOKEN(COLUMN) - YY_BREAK -case 26: -YY_RULE_SETUP + TOKEN(COLUMN) + YY_BREAK + case 26: + YY_RULE_SETUP #line 86 "flex_lexer.l" -TOKEN(COLUMNS) - YY_BREAK -case 27: -YY_RULE_SETUP + TOKEN(COLUMNS) + YY_BREAK + case 27: + YY_RULE_SETUP #line 87 "flex_lexer.l" -TOKEN(COMMIT) - YY_BREAK -case 28: -YY_RULE_SETUP + TOKEN(COMMIT) + YY_BREAK + case 28: + YY_RULE_SETUP #line 88 "flex_lexer.l" -TOKEN(CONTROL) - YY_BREAK -case 29: -YY_RULE_SETUP + TOKEN(CONTROL) + YY_BREAK + case 29: + YY_RULE_SETUP #line 89 "flex_lexer.l" -TOKEN(COPY) - YY_BREAK -case 30: -YY_RULE_SETUP + TOKEN(COPY) + YY_BREAK + case 30: + YY_RULE_SETUP #line 90 "flex_lexer.l" -TOKEN(CREATE) - YY_BREAK -case 31: -YY_RULE_SETUP + TOKEN(CREATE) + YY_BREAK + case 31: + YY_RULE_SETUP #line 91 "flex_lexer.l" -TOKEN(CROSS) - YY_BREAK -case 32: -YY_RULE_SETUP + TOKEN(CROSS) + YY_BREAK + case 32: + YY_RULE_SETUP #line 92 "flex_lexer.l" -TOKEN(DATE) - YY_BREAK -case 33: -YY_RULE_SETUP + TOKEN(DATE) + YY_BREAK + case 33: + YY_RULE_SETUP #line 93 "flex_lexer.l" -TOKEN(DATETIME) - YY_BREAK -case 34: -YY_RULE_SETUP + TOKEN(DATETIME) + YY_BREAK + case 34: + YY_RULE_SETUP #line 94 "flex_lexer.l" -TOKEN(DAY) - YY_BREAK -case 35: -YY_RULE_SETUP + TOKEN(DAY) + YY_BREAK + case 35: + YY_RULE_SETUP #line 95 "flex_lexer.l" -TOKEN(DAYS) - YY_BREAK -case 36: -YY_RULE_SETUP + TOKEN(DAYS) + YY_BREAK + case 36: + YY_RULE_SETUP #line 96 "flex_lexer.l" -TOKEN(DEALLOCATE) - YY_BREAK -case 37: -YY_RULE_SETUP + TOKEN(DEALLOCATE) + YY_BREAK + case 37: + YY_RULE_SETUP #line 97 "flex_lexer.l" -TOKEN(DECIMAL) - YY_BREAK -case 38: -YY_RULE_SETUP + TOKEN(DECIMAL) + YY_BREAK + case 38: + YY_RULE_SETUP #line 98 "flex_lexer.l" -TOKEN(DEFAULT) - YY_BREAK -case 39: -YY_RULE_SETUP + TOKEN(DEFAULT) + YY_BREAK + case 39: + YY_RULE_SETUP #line 99 "flex_lexer.l" -TOKEN(DELETE) - YY_BREAK -case 40: -YY_RULE_SETUP + TOKEN(DELETE) + YY_BREAK + case 40: + YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(DELTA) - YY_BREAK -case 41: -YY_RULE_SETUP + TOKEN(DELTA) + YY_BREAK + case 41: + YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(DESC) - YY_BREAK -case 42: -YY_RULE_SETUP + TOKEN(DESC) + YY_BREAK + case 42: + YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(DESCRIBE) - YY_BREAK -case 43: -YY_RULE_SETUP + TOKEN(DESCRIBE) + YY_BREAK + case 43: + YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(DIRECT) - YY_BREAK -case 44: -YY_RULE_SETUP + TOKEN(DIRECT) + YY_BREAK + case 44: + YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(DISTINCT) - YY_BREAK -case 45: -YY_RULE_SETUP + TOKEN(DISTINCT) + YY_BREAK + case 45: + YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(DOUBLE) - YY_BREAK -case 46: -YY_RULE_SETUP + TOKEN(DOUBLE) + YY_BREAK + case 46: + YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(DROP) - YY_BREAK -case 47: -YY_RULE_SETUP + TOKEN(DROP) + YY_BREAK + case 47: + YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(ELSE) - YY_BREAK -case 48: -YY_RULE_SETUP + TOKEN(ELSE) + YY_BREAK + case 48: + YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(END) - YY_BREAK -case 49: -YY_RULE_SETUP + TOKEN(END) + YY_BREAK + case 49: + YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(ESCAPE) - YY_BREAK -case 50: -YY_RULE_SETUP + TOKEN(ESCAPE) + YY_BREAK + case 50: + YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(EXCEPT) - YY_BREAK -case 51: -YY_RULE_SETUP + TOKEN(EXCEPT) + YY_BREAK + case 51: + YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(EXECUTE) - YY_BREAK -case 52: -YY_RULE_SETUP + TOKEN(EXECUTE) + YY_BREAK + case 52: + YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(EXISTS) - YY_BREAK -case 53: -YY_RULE_SETUP + TOKEN(EXISTS) + YY_BREAK + case 53: + YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(EXPLAIN) - YY_BREAK -case 54: -YY_RULE_SETUP + TOKEN(EXPLAIN) + YY_BREAK + case 54: + YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(EXTRACT) - YY_BREAK -case 55: -YY_RULE_SETUP + TOKEN(EXTRACT) + YY_BREAK + case 55: + YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(FALSE) - YY_BREAK -case 56: -YY_RULE_SETUP + TOKEN(FALSE) + YY_BREAK + case 56: + YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(FILE) - YY_BREAK -case 57: -YY_RULE_SETUP + TOKEN(FILE) + YY_BREAK + case 57: + YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(FLOAT) - YY_BREAK -case 58: -YY_RULE_SETUP + TOKEN(FLOAT) + YY_BREAK + case 58: + YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(FOR) - YY_BREAK -case 59: -YY_RULE_SETUP + TOKEN(FOLLOWING) + YY_BREAK + case 59: + YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(FORMAT) - YY_BREAK -case 60: -YY_RULE_SETUP + TOKEN(FOR) + YY_BREAK + case 60: + YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(FROM) - YY_BREAK -case 61: -YY_RULE_SETUP + TOKEN(FORMAT) + YY_BREAK + case 61: + YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(FULL) - YY_BREAK -case 62: -YY_RULE_SETUP + TOKEN(FROM) + YY_BREAK + case 62: + YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(GLOBAL) - YY_BREAK -case 63: -YY_RULE_SETUP + TOKEN(FULL) + YY_BREAK + case 63: + YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(GROUP) - YY_BREAK -case 64: -YY_RULE_SETUP + TOKEN(GLOBAL) + YY_BREAK + case 64: + YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(GROUPS) - YY_BREAK -case 65: -YY_RULE_SETUP + TOKEN(GROUP) + YY_BREAK + case 65: + YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(HASH) - YY_BREAK -case 66: -YY_RULE_SETUP + TOKEN(GROUPS) + YY_BREAK + case 66: + YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(HAVING) - YY_BREAK -case 67: -YY_RULE_SETUP + TOKEN(HASH) + YY_BREAK + case 67: + YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(HINT) - YY_BREAK -case 68: -YY_RULE_SETUP + TOKEN(HAVING) + YY_BREAK + case 68: + YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(HOUR) - YY_BREAK -case 69: -YY_RULE_SETUP + TOKEN(HINT) + YY_BREAK + case 69: + YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(HOURS) - YY_BREAK -case 70: -YY_RULE_SETUP + TOKEN(HOUR) + YY_BREAK + case 70: + YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(IF) - YY_BREAK -case 71: -YY_RULE_SETUP + TOKEN(HOURS) + YY_BREAK + case 71: + YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(ILIKE) - YY_BREAK -case 72: -YY_RULE_SETUP + TOKEN(IF) + YY_BREAK + case 72: + YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(IMPORT) - YY_BREAK -case 73: -YY_RULE_SETUP + TOKEN(ILIKE) + YY_BREAK + case 73: + YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(IN) - YY_BREAK -case 74: -YY_RULE_SETUP + TOKEN(IMPORT) + YY_BREAK + case 74: + YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(INDEX) - YY_BREAK -case 75: -YY_RULE_SETUP + TOKEN(IN) + YY_BREAK + case 75: + YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(INNER) - YY_BREAK -case 76: -YY_RULE_SETUP + TOKEN(INDEX) + YY_BREAK + case 76: + YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(INSERT) - YY_BREAK -case 77: -YY_RULE_SETUP + TOKEN(INNER) + YY_BREAK + case 77: + YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(INT) - YY_BREAK -case 78: -YY_RULE_SETUP + TOKEN(INSERT) + YY_BREAK + case 78: + YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(INTEGER) - YY_BREAK -case 79: -YY_RULE_SETUP + TOKEN(INT) + YY_BREAK + case 79: + YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(INTERSECT) - YY_BREAK -case 80: -YY_RULE_SETUP + TOKEN(INTEGER) + YY_BREAK + case 80: + YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(INTERVAL) - YY_BREAK -case 81: -YY_RULE_SETUP + TOKEN(INTERSECT) + YY_BREAK + case 81: + YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(INTO) - YY_BREAK -case 82: -YY_RULE_SETUP + TOKEN(INTERVAL) + YY_BREAK + case 82: + YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(IS) - YY_BREAK -case 83: -YY_RULE_SETUP + TOKEN(INTO) + YY_BREAK + case 83: + YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(ISNULL) - YY_BREAK -case 84: -YY_RULE_SETUP + TOKEN(IS) + YY_BREAK + case 84: + YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(JOIN) - YY_BREAK -case 85: -YY_RULE_SETUP + TOKEN(ISNULL) + YY_BREAK + case 85: + YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(KEY) - YY_BREAK -case 86: -YY_RULE_SETUP + TOKEN(JOIN) + YY_BREAK + case 86: + YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(LEFT) - YY_BREAK -case 87: -YY_RULE_SETUP + TOKEN(KEY) + YY_BREAK + case 87: + YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(LIKE) - YY_BREAK -case 88: -YY_RULE_SETUP + TOKEN(LEFT) + YY_BREAK + case 88: + YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(LIMIT) - YY_BREAK -case 89: -YY_RULE_SETUP + TOKEN(LIKE) + YY_BREAK + case 89: + YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(LOAD) - YY_BREAK -case 90: -YY_RULE_SETUP + TOKEN(LIMIT) + YY_BREAK + case 90: + YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(LOCAL) - YY_BREAK -case 91: -YY_RULE_SETUP + TOKEN(LOAD) + YY_BREAK + case 91: + YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(LOCKED) - YY_BREAK -case 92: -YY_RULE_SETUP + TOKEN(LOCAL) + YY_BREAK + case 92: + YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(LONG) - YY_BREAK -case 93: -YY_RULE_SETUP + TOKEN(LOCKED) + YY_BREAK + case 93: + YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(MERGE) - YY_BREAK -case 94: -YY_RULE_SETUP + TOKEN(LONG) + YY_BREAK + case 94: + YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(MINUS) - YY_BREAK -case 95: -YY_RULE_SETUP + TOKEN(MERGE) + YY_BREAK + case 95: + YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(MINUTE) - YY_BREAK -case 96: -YY_RULE_SETUP + TOKEN(MINUS) + YY_BREAK + case 96: + YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(MINUTES) - YY_BREAK -case 97: -YY_RULE_SETUP + TOKEN(MINUTE) + YY_BREAK + case 97: + YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(MONTH) - YY_BREAK -case 98: -YY_RULE_SETUP + TOKEN(MINUTES) + YY_BREAK + case 98: + YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(MONTHS) - YY_BREAK -case 99: -YY_RULE_SETUP + TOKEN(MONTH) + YY_BREAK + case 99: + YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(NATURAL) - YY_BREAK -case 100: -YY_RULE_SETUP + TOKEN(MONTHS) + YY_BREAK + case 100: + YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(NO) - YY_BREAK -case 101: -YY_RULE_SETUP + TOKEN(NATURAL) + YY_BREAK + case 101: + YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(NOT) - YY_BREAK -case 102: -YY_RULE_SETUP + TOKEN(NO) + YY_BREAK + case 102: + YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(NOWAIT) - YY_BREAK -case 103: -YY_RULE_SETUP + TOKEN(NOT) + YY_BREAK + case 103: + YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(NULL) - YY_BREAK -case 104: -YY_RULE_SETUP + TOKEN(NOWAIT) + YY_BREAK + case 104: + YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(NVARCHAR) - YY_BREAK -case 105: -YY_RULE_SETUP + TOKEN(NULL) + YY_BREAK + case 105: + YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(OF) - YY_BREAK -case 106: -YY_RULE_SETUP + TOKEN(NVARCHAR) + YY_BREAK + case 106: + YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(OFF) - YY_BREAK -case 107: -YY_RULE_SETUP + TOKEN(OF) + YY_BREAK + case 107: + YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(OFFSET) - YY_BREAK -case 108: -YY_RULE_SETUP + TOKEN(OFF) + YY_BREAK + case 108: + YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(ON) - YY_BREAK -case 109: -YY_RULE_SETUP + TOKEN(OFFSET) + YY_BREAK + case 109: + YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(OR) - YY_BREAK -case 110: -YY_RULE_SETUP + TOKEN(ON) + YY_BREAK + case 110: + YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(ORDER) - YY_BREAK -case 111: -YY_RULE_SETUP + TOKEN(OR) + YY_BREAK + case 111: + YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(OUTER) - YY_BREAK -case 112: -YY_RULE_SETUP + TOKEN(ORDER) + YY_BREAK + case 112: + YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(OVER) - YY_BREAK -case 113: -YY_RULE_SETUP + TOKEN(OUTER) + YY_BREAK + case 113: + YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(PARAMETERS) - YY_BREAK -case 114: -YY_RULE_SETUP + TOKEN(OVER) + YY_BREAK + case 114: + YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(PARTITION) - YY_BREAK -case 115: -YY_RULE_SETUP + TOKEN(PARAMETERS) + YY_BREAK + case 115: + YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(PLAN) - YY_BREAK -case 116: -YY_RULE_SETUP + TOKEN(PARTITION) + YY_BREAK + case 116: + YY_RULE_SETUP #line 176 "flex_lexer.l" -TOKEN(PREPARE) - YY_BREAK -case 117: -YY_RULE_SETUP + TOKEN(PLAN) + YY_BREAK + case 117: + YY_RULE_SETUP #line 177 "flex_lexer.l" -TOKEN(PRIMARY) - YY_BREAK -case 118: -YY_RULE_SETUP + TOKEN(PRECEDING) + YY_BREAK + case 118: + YY_RULE_SETUP #line 178 "flex_lexer.l" -TOKEN(RANGE) - YY_BREAK -case 119: -YY_RULE_SETUP + TOKEN(PREPARE) + YY_BREAK + case 119: + YY_RULE_SETUP #line 179 "flex_lexer.l" -TOKEN(REAL) - YY_BREAK -case 120: -YY_RULE_SETUP + TOKEN(PRIMARY) + YY_BREAK + case 120: + YY_RULE_SETUP #line 180 "flex_lexer.l" -TOKEN(RENAME) - YY_BREAK -case 121: -YY_RULE_SETUP + TOKEN(RANGE) + YY_BREAK + case 121: + YY_RULE_SETUP #line 181 "flex_lexer.l" -TOKEN(RESTRICT) - YY_BREAK -case 122: -YY_RULE_SETUP + TOKEN(REAL) + YY_BREAK + case 122: + YY_RULE_SETUP #line 182 "flex_lexer.l" -TOKEN(RIGHT) - YY_BREAK -case 123: -YY_RULE_SETUP + TOKEN(RENAME) + YY_BREAK + case 123: + YY_RULE_SETUP #line 183 "flex_lexer.l" -TOKEN(ROLLBACK) - YY_BREAK -case 124: -YY_RULE_SETUP + TOKEN(RESTRICT) + YY_BREAK + case 124: + YY_RULE_SETUP #line 184 "flex_lexer.l" -TOKEN(ROWS) - YY_BREAK -case 125: -YY_RULE_SETUP + TOKEN(RIGHT) + YY_BREAK + case 125: + YY_RULE_SETUP #line 185 "flex_lexer.l" -TOKEN(SCHEMA) - YY_BREAK -case 126: -YY_RULE_SETUP + TOKEN(ROLLBACK) + YY_BREAK + case 126: + YY_RULE_SETUP #line 186 "flex_lexer.l" -TOKEN(SCHEMAS) - YY_BREAK -case 127: -YY_RULE_SETUP + TOKEN(ROWS) + YY_BREAK + case 127: + YY_RULE_SETUP #line 187 "flex_lexer.l" -TOKEN(SECOND) - YY_BREAK -case 128: -YY_RULE_SETUP + TOKEN(SCHEMA) + YY_BREAK + case 128: + YY_RULE_SETUP #line 188 "flex_lexer.l" -TOKEN(SECONDS) - YY_BREAK -case 129: -YY_RULE_SETUP + TOKEN(SCHEMAS) + YY_BREAK + case 129: + YY_RULE_SETUP #line 189 "flex_lexer.l" -TOKEN(SELECT) - YY_BREAK -case 130: -YY_RULE_SETUP + TOKEN(SECOND) + YY_BREAK + case 130: + YY_RULE_SETUP #line 190 "flex_lexer.l" -TOKEN(SET) - YY_BREAK -case 131: -YY_RULE_SETUP + TOKEN(SECONDS) + YY_BREAK + case 131: + YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(SHARE) - YY_BREAK -case 132: -YY_RULE_SETUP + TOKEN(SELECT) + YY_BREAK + case 132: + YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(SHOW) - YY_BREAK -case 133: -YY_RULE_SETUP + TOKEN(SET) + YY_BREAK + case 133: + YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(SKIP) - YY_BREAK -case 134: -YY_RULE_SETUP + TOKEN(SHARE) + YY_BREAK + case 134: + YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(SMALLINT) - YY_BREAK -case 135: -YY_RULE_SETUP + TOKEN(SHOW) + YY_BREAK + case 135: + YY_RULE_SETUP #line 195 "flex_lexer.l" -TOKEN(SORTED) - YY_BREAK -case 136: -YY_RULE_SETUP + TOKEN(SKIP) + YY_BREAK + case 136: + YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(SPATIAL) - YY_BREAK -case 137: -YY_RULE_SETUP + TOKEN(SMALLINT) + YY_BREAK + case 137: + YY_RULE_SETUP #line 197 "flex_lexer.l" -TOKEN(TABLE) - YY_BREAK -case 138: -YY_RULE_SETUP + TOKEN(SORTED) + YY_BREAK + case 138: + YY_RULE_SETUP #line 198 "flex_lexer.l" -TOKEN(TABLES) - YY_BREAK -case 139: -YY_RULE_SETUP + TOKEN(SPATIAL) + YY_BREAK + case 139: + YY_RULE_SETUP #line 199 "flex_lexer.l" -TOKEN(TEMPORARY) - YY_BREAK -case 140: -YY_RULE_SETUP + TOKEN(TABLE) + YY_BREAK + case 140: + YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(TEXT) - YY_BREAK -case 141: -YY_RULE_SETUP + TOKEN(TABLES) + YY_BREAK + case 141: + YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(THEN) - YY_BREAK -case 142: -YY_RULE_SETUP + TOKEN(TEMPORARY) + YY_BREAK + case 142: + YY_RULE_SETUP #line 202 "flex_lexer.l" -TOKEN(TIME) - YY_BREAK -case 143: -YY_RULE_SETUP + TOKEN(TEXT) + YY_BREAK + case 143: + YY_RULE_SETUP #line 203 "flex_lexer.l" -TOKEN(TIMESTAMP) - YY_BREAK -case 144: -YY_RULE_SETUP + TOKEN(THEN) + YY_BREAK + case 144: + YY_RULE_SETUP #line 204 "flex_lexer.l" -TOKEN(TO) - YY_BREAK -case 145: -YY_RULE_SETUP + TOKEN(TIME) + YY_BREAK + case 145: + YY_RULE_SETUP #line 205 "flex_lexer.l" -TOKEN(TOP) - YY_BREAK -case 146: -YY_RULE_SETUP + TOKEN(TIMESTAMP) + YY_BREAK + case 146: + YY_RULE_SETUP #line 206 "flex_lexer.l" -TOKEN(TRANSACTION) - YY_BREAK -case 147: -YY_RULE_SETUP + TOKEN(TO) + YY_BREAK + case 147: + YY_RULE_SETUP #line 207 "flex_lexer.l" -TOKEN(TRUE) - YY_BREAK -case 148: -YY_RULE_SETUP + TOKEN(TOP) + YY_BREAK + case 148: + YY_RULE_SETUP #line 208 "flex_lexer.l" -TOKEN(TRUNCATE) - YY_BREAK -case 149: -YY_RULE_SETUP + TOKEN(TRANSACTION) + YY_BREAK + case 149: + YY_RULE_SETUP #line 209 "flex_lexer.l" -TOKEN(UNION) - YY_BREAK -case 150: -YY_RULE_SETUP + TOKEN(TRUE) + YY_BREAK + case 150: + YY_RULE_SETUP #line 210 "flex_lexer.l" -TOKEN(UNIQUE) - YY_BREAK -case 151: -YY_RULE_SETUP + TOKEN(TRUNCATE) + YY_BREAK + case 151: + YY_RULE_SETUP #line 211 "flex_lexer.l" -TOKEN(UNLOAD) - YY_BREAK -case 152: -YY_RULE_SETUP + TOKEN(UNBOUNDED) + YY_BREAK + case 152: + YY_RULE_SETUP #line 212 "flex_lexer.l" -TOKEN(UPDATE) - YY_BREAK -case 153: -YY_RULE_SETUP + TOKEN(UNION) + YY_BREAK + case 153: + YY_RULE_SETUP #line 213 "flex_lexer.l" -TOKEN(USING) - YY_BREAK -case 154: -YY_RULE_SETUP + TOKEN(UNIQUE) + YY_BREAK + case 154: + YY_RULE_SETUP #line 214 "flex_lexer.l" -TOKEN(VALUES) - YY_BREAK -case 155: -YY_RULE_SETUP + TOKEN(UNLOAD) + YY_BREAK + case 155: + YY_RULE_SETUP #line 215 "flex_lexer.l" -TOKEN(VARCHAR) - YY_BREAK -case 156: -YY_RULE_SETUP + TOKEN(UPDATE) + YY_BREAK + case 156: + YY_RULE_SETUP #line 216 "flex_lexer.l" -TOKEN(VIEW) - YY_BREAK -case 157: -YY_RULE_SETUP + TOKEN(USING) + YY_BREAK + case 157: + YY_RULE_SETUP #line 217 "flex_lexer.l" -TOKEN(VIRTUAL) - YY_BREAK -case 158: -YY_RULE_SETUP + TOKEN(VALUES) + YY_BREAK + case 158: + YY_RULE_SETUP #line 218 "flex_lexer.l" -TOKEN(WHEN) - YY_BREAK -case 159: -YY_RULE_SETUP + TOKEN(VARCHAR) + YY_BREAK + case 159: + YY_RULE_SETUP #line 219 "flex_lexer.l" -TOKEN(WHERE) - YY_BREAK -case 160: -YY_RULE_SETUP + TOKEN(VIEW) + YY_BREAK + case 160: + YY_RULE_SETUP #line 220 "flex_lexer.l" -TOKEN(WITH) - YY_BREAK -case 161: -YY_RULE_SETUP + TOKEN(VIRTUAL) + YY_BREAK + case 161: + YY_RULE_SETUP #line 221 "flex_lexer.l" -TOKEN(YEAR) - YY_BREAK -case 162: -YY_RULE_SETUP + TOKEN(WHEN) + YY_BREAK + case 162: + YY_RULE_SETUP #line 222 "flex_lexer.l" -TOKEN(YEARS) - YY_BREAK -case 163: -/* rule 163 can match eol */ -YY_RULE_SETUP + TOKEN(WHERE) + YY_BREAK + case 163: + YY_RULE_SETUP +#line 223 "flex_lexer.l" + TOKEN(WITH) + YY_BREAK + case 164: + YY_RULE_SETUP #line 224 "flex_lexer.l" -TOKEN(CHARACTER_VARYING) - YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ -case 164: -YY_RULE_SETUP -#line 227 "flex_lexer.l" -TOKEN(EQUALS) - YY_BREAK -case 165: -YY_RULE_SETUP + TOKEN(YEAR) + YY_BREAK + case 165: + YY_RULE_SETUP +#line 225 "flex_lexer.l" + TOKEN(YEARS) + YY_BREAK + case 166: + /* rule 166 can match eol */ + YY_RULE_SETUP #line 228 "flex_lexer.l" -TOKEN(NOTEQUALS) - YY_BREAK -case 166: -YY_RULE_SETUP + TOKEN(CURRENT_ROW) + YY_BREAK + case 167: + /* rule 167 can match eol */ + YY_RULE_SETUP #line 229 "flex_lexer.l" -TOKEN(NOTEQUALS) - YY_BREAK -case 167: -YY_RULE_SETUP -#line 230 "flex_lexer.l" -TOKEN(LESSEQ) - YY_BREAK -case 168: -YY_RULE_SETUP -#line 231 "flex_lexer.l" -TOKEN(GREATEREQ) - YY_BREAK -case 169: -YY_RULE_SETUP + TOKEN(CHARACTER_VARYING) + YY_BREAK + /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ + case 168: + YY_RULE_SETUP #line 232 "flex_lexer.l" -TOKEN(CONCAT) - YY_BREAK -case 170: -YY_RULE_SETUP + TOKEN(EQUALS) + YY_BREAK + case 169: + YY_RULE_SETUP +#line 233 "flex_lexer.l" + TOKEN(NOTEQUALS) + YY_BREAK + case 170: + YY_RULE_SETUP #line 234 "flex_lexer.l" -{ return yytext[0]; } - YY_BREAK -case 171: -#line 237 "flex_lexer.l" -case 172: -YY_RULE_SETUP + TOKEN(NOTEQUALS) + YY_BREAK + case 171: + YY_RULE_SETUP +#line 235 "flex_lexer.l" + TOKEN(LESSEQ) + YY_BREAK + case 172: + YY_RULE_SETUP +#line 236 "flex_lexer.l" + TOKEN(GREATEREQ) + YY_BREAK + case 173: + YY_RULE_SETUP #line 237 "flex_lexer.l" -{ - yylval->fval = atof(yytext); - return SQL_FLOATVAL; -} - YY_BREAK -/* + TOKEN(CONCAT) + YY_BREAK + case 174: + YY_RULE_SETUP +#line 239 "flex_lexer.l" + { + return yytext[0]; + } + YY_BREAK + case 175: +#line 242 "flex_lexer.l" + case 176: + YY_RULE_SETUP +#line 242 "flex_lexer.l" + { + yylval->fval = atof(yytext); + return SQL_FLOATVAL; + } + YY_BREAK + /* * Regularly, negative literals are treated as . This does not work for LLONG_MIN, as it has no * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where * numeric_limits::lowest() == -numeric_limits::max(); */ -case 173: -YY_RULE_SETUP -#line 247 "flex_lexer.l" -{ - yylval->ival = LLONG_MIN; - return SQL_INTVAL; -} - YY_BREAK -case 174: -YY_RULE_SETUP + case 177: + YY_RULE_SETUP #line 252 "flex_lexer.l" -{ - errno = 0; - yylval->ival = strtoll(yytext, nullptr, 0); - if (errno) { - return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); - return 0; - } - return SQL_INTVAL; -} - YY_BREAK -case 175: -YY_RULE_SETUP -#line 262 "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 176: -YY_RULE_SETUP -#line 268 "flex_lexer.l" -{ - yylval->sval = strdup(yytext); - return SQL_IDENTIFIER; -} - YY_BREAK -case 177: -YY_RULE_SETUP + { + yylval->ival = LLONG_MIN; + return SQL_INTVAL; + } + YY_BREAK + case 178: + YY_RULE_SETUP +#line 257 "flex_lexer.l" + { + errno = 0; + yylval->ival = strtoll(yytext, nullptr, 0); + if (errno) { + return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); + return 0; + } + return SQL_INTVAL; + } + YY_BREAK + case 179: + YY_RULE_SETUP +#line 267 "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 180: + YY_RULE_SETUP #line 273 "flex_lexer.l" -{ BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 - YY_BREAK -case 178: -YY_RULE_SETUP -#line 274 "flex_lexer.l" -{ strbuf << '\''; } - YY_BREAK -case 179: -/* rule 179 can match eol */ -YY_RULE_SETUP -#line 275 "flex_lexer.l" -{ strbuf << yytext; } - YY_BREAK -case 180: -YY_RULE_SETUP -#line 276 "flex_lexer.l" -{ BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } - YY_BREAK -case YY_STATE_EOF(singlequotedstring): -#line 277 "flex_lexer.l" -{ fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } - YY_BREAK -case 181: -YY_RULE_SETUP + { + yylval->sval = strdup(yytext); + return SQL_IDENTIFIER; + } + YY_BREAK + case 181: + YY_RULE_SETUP +#line 278 "flex_lexer.l" + { + BEGIN singlequotedstring; + strbuf.clear(); + strbuf.str(""); + } // Clear strbuf manually, see #170 + YY_BREAK + case 182: + YY_RULE_SETUP #line 279 "flex_lexer.l" -{ fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } - YY_BREAK -case 182: -YY_RULE_SETUP + { + strbuf << '\''; + } + YY_BREAK + case 183: + /* rule 183 can match eol */ + YY_RULE_SETUP +#line 280 "flex_lexer.l" + { + strbuf << yytext; + } + YY_BREAK + case 184: + YY_RULE_SETUP #line 281 "flex_lexer.l" -ECHO; - YY_BREAK -#line 4241 "flex_lexer.cpp" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMENT): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's + { + BEGIN 0; + yylval->sval = strdup(strbuf.str().c_str()); + return SQL_STRING; + } + YY_BREAK + case YY_STATE_EOF(singlequotedstring): +#line 282 "flex_lexer.l" + { + fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); + return 0; + } + YY_BREAK + case 185: + YY_RULE_SETUP +#line 284 "flex_lexer.l" + { + fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); + return 0; + } + YY_BREAK + case 186: + YY_RULE_SETUP +#line 286 "flex_lexer.l" + ECHO; + YY_BREAK +#line 4381 "flex_lexer.cpp" + case YY_STATE_EOF(INITIAL): + case YY_STATE_EOF(COMMENT): + yyterminate(); + + case YY_END_OF_BUFFER: { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int)(yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) { + /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure @@ -4263,27 +3470,26 @@ case YY_STATE_EOF(COMMENT): * this is the first action (other than possibly a * back-up) that will match for the new input source. */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } - /* Note that here we test for yy_c_buf_p "<=" to the position + /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; + if (yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) { /* This was really a NUL. */ + yy_state_type yy_next_state; - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state( yyscanner ); + yy_current_state = yy_get_previous_state(yyscanner); - /* Okay, we're now positioned to make the NUL + /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal @@ -4292,35 +3498,31 @@ case YY_STATE_EOF(COMMENT): * will run more slowly). */ - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( yywrap( yyscanner ) ) - { - /* Note: because we've taken care in + yy_next_state = yy_try_NUL_trans(yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else { + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer(yyscanner)) { + case EOB_ACT_END_OF_FILE: { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (yywrap(yyscanner)) { + /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total @@ -4329,49 +3531,44 @@ case YY_STATE_EOF(COMMENT): * YY_NULL, it'll still work - another * YY_NULL will get returned. */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else { + if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state(yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -4381,171 +3578,142 @@ case YY_STATE_EOF(COMMENT): * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = yyg->yytext_ptr; - int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so +static int yy_get_next_buffer(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + char* dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char* source = yyg->yytext_ptr; + int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) { + /* We matched a single character, the EOB, so * treat this as a final EOF. */ - return EOB_ACT_END_OF_FILE; - } + return EOB_ACT_END_OF_FILE; + } - else - { - /* We matched some text prior to the EOB, first + else { + /* We matched some text prior to the EOB, first * process it. */ - return EOB_ACT_LAST_MATCH; - } - } + return EOB_ACT_LAST_MATCH; + } + } - /* Try to read more data. */ + /* Try to read more data. */ - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); + /* First move last chars to start of buffer. */ + number_to_move = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr - 1); - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); + for (i = 0; i < number_to_move; ++i) *(dest++) = *(source++); - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin , yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else { + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = (int)(yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char*) + /* Include room in for 2 EOB chars. */ + yyrealloc((void*)b->yy_ch_buf, (yy_size_t)(b->yy_buf_size + 2), yyscanner); + } else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if (!b->yy_ch_buf) YY_FATAL_ERROR("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + } + + if (num_to_read > YY_READ_BUF_SIZE) num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) { + if (number_to_move == YY_MORE_ADJ) { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin, yyscanner); + } + + else { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char*)yyrealloc((void*)YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t)new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) YY_FATAL_ERROR("out of dynamic memory in yy_get_next_buffer()"); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int)(new_size - 2); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - yy_state_type yy_current_state; - char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1272 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; +static yy_state_type yy_get_previous_state(yyscan_t yyscanner) { + yy_state_type yy_current_state; + char* yy_cp; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp) { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if (yy_accept[yy_current_state]) { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332) yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character @@ -4553,29 +3721,25 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * synopsis * next_state = yy_try_NUL_trans( current_state ); */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - char *yy_cp = yyg->yy_c_buf_p; - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1272 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1271); - - (void)yyg; - return yy_is_jam ? 0 : yy_current_state; +static yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state, yyscan_t yyscanner) { + int yy_is_jam; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + char* yy_cp = yyg->yy_c_buf_p; + + YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332) yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 1331); + + (void)yyg; + return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT @@ -4584,36 +3748,32 @@ static int yy_get_next_buffer (yyscan_t yyscanner) #ifndef YY_NO_INPUT #ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) +static int yyinput(yyscan_t yyscanner) #else - static int input (yyscan_t yyscanner) +static int input(yyscan_t yyscanner) #endif { - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + int c; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - *yyg->yy_c_buf_p = yyg->yy_hold_char; + *yyg->yy_c_buf_p = yyg->yy_hold_char; - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) { + /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() + if (yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else { /* need more input */ + int offset = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr); + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer(yyscanner)) { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before @@ -4623,102 +3783,93 @@ static int yy_get_next_buffer (yyscan_t yyscanner) * to EOB_ACT_END_OF_FILE. */ - /* Reset buffer status. */ - yyrestart( yyin , yyscanner); + /* Reset buffer status. */ + yyrestart(yyin, yyscanner); - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( yyscanner ) ) - return 0; + case EOB_ACT_END_OF_FILE: { + if (yywrap(yyscanner)) return 0; - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; + if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE; #ifdef __cplusplus - return yyinput(yyscanner); + return yyinput(yyscanner); #else - return input(yyscanner); + return input(yyscanner); #endif - } + } - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; + c = *(unsigned char*)yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; - return c; + return c; } -#endif /* ifndef YY_NO_INPUT */ +#endif /* ifndef YY_NO_INPUT */ -/** Immediately switch to a different input stream. + /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ - void yyrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void yyrestart(FILE* input_file, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); - } + if (!YY_CURRENT_BUFFER) { + yyensure_buffer_stack(yyscanner); + YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); + } - yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); - yy_load_buffer_state( yyscanner ); + yy_init_buffer(YY_CURRENT_BUFFER, input_file, yyscanner); + yy_load_buffer_state(yyscanner); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - /* TODO. We should be able to replace this entire function body + /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ - yyensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( yyscanner ); - - /* We don't actually know whether we did this switch during + yyensure_buffer_stack(yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) return; + + if (YY_CURRENT_BUFFER) { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state(yyscanner); + + /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ - yyg->yy_did_buffer_switch_on_eof = 1; + yyg->yy_did_buffer_switch_on_eof = 1; } -static void yy_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; +static void yy_load_buffer_state(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. @@ -4727,105 +3878,96 @@ static void yy_load_buffer_state (yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the allocated buffer state. */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner) { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner); + if (!b) YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()"); - b->yy_buf_size = size; + b->yy_buf_size = size; - /* yy_ch_buf has to be 2 characters longer than the size given because + /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + b->yy_ch_buf = (char*)yyalloc((yy_size_t)(b->yy_buf_size + 2), yyscanner); + if (!b->yy_ch_buf) YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()"); - b->yy_is_our_buffer = 1; + b->yy_is_our_buffer = 1; - yy_init_buffer( b, file , yyscanner); + yy_init_buffer(b, file, yyscanner); - return b; + return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ - void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; + if (!b) return; - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE)0; - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf , yyscanner ); + if (b->yy_is_our_buffer) yyfree((void*)b->yy_ch_buf, yyscanner); - yyfree( (void *) b , yyscanner ); + yyfree((void*)b, yyscanner); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) +static void yy_init_buffer(YY_BUFFER_STATE b, FILE* file, yyscan_t yyscanner) { - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + int oerrno = errno; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yy_flush_buffer( b , yyscanner); + yy_flush_buffer(b, yyscanner); - b->yy_input_file = file; - b->yy_fill_buffer = 1; + b->yy_input_file = file; + b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ + /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } + if (b != YY_CURRENT_BUFFER) { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; - b->yy_is_interactive = 0; - - errno = oerrno; + errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ - void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; +void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + if (!b) return; - b->yy_n_chars = 0; + b->yy_n_chars = 0; - /* We always need two end-of-buffer characters. The first causes + /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - b->yy_buf_pos = &b->yy_ch_buf[0]; + b->yy_buf_pos = &b->yy_ch_buf[0]; - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( yyscanner ); + if (b == YY_CURRENT_BUFFER) yy_load_buffer_state(yyscanner); } /** Pushes the new state onto the stack. The new state becomes @@ -4834,99 +3976,83 @@ static void yy_load_buffer_state (yyscan_t yyscanner) * @param new_buffer The new state. * @param yyscanner The scanner object. */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(yyscanner); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; +void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) return; + + yyensure_buffer_stack(yyscanner); + + /* This block is copied from yy_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state(yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ -void yypop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } +void yypop_buffer_state(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) return; + + yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state(yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ -static void yyensure_buffer_stack (yyscan_t yyscanner) -{ - yy_size_t num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +static void yyensure_buffer_stack(yyscan_t yyscanner) { + yy_size_t num_to_alloc; + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this + if (!yyg->yy_buffer_stack) { + /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc(num_to_alloc * sizeof(struct yy_buffer_state*), yyscanner); + if (!yyg->yy_buffer_stack) YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()"); + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) { + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc( + yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*), yyscanner); + if (!yyg->yy_buffer_stack) YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()"); + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } } /** Setup the input buffer state to scan directly from a user-specified character buffer. @@ -4935,33 +4061,29 @@ static void yyensure_buffer_stack (yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b , yyscanner ); - - return b; +YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner) { + YY_BUFFER_STATE b; + + if (size < 2 || base[size - 2] != YY_END_OF_BUFFER_CHAR || base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner); + if (!b) YY_FATAL_ERROR("out of dynamic memory in yy_scan_buffer()"); + + b->yy_buf_size = (int)(size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b, yyscanner); + + return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will @@ -4972,10 +4094,8 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscann * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); +YY_BUFFER_STATE yy_scan_string(const char* yystr, yyscan_t yyscanner) { + return yy_scan_bytes(yystr, (int)strlen(yystr), yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -4985,177 +4105,156 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n , yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n , yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it +YY_BUFFER_STATE yy_scan_bytes(const char* yybytes, int _yybytes_len, yyscan_t yyscanner) { + YY_BUFFER_STATE b; + char* buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t)(_yybytes_len + 2); + buf = (char*)yyalloc(n, yyscanner); + if (!buf) YY_FATAL_ERROR("out of dynamic memory in yy_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf, n, yyscanner); + if (!b) YY_FATAL_ERROR("bad buffer in yy_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ - b->yy_is_our_buffer = 1; + b->yy_is_our_buffer = 1; - return b; + return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); +static void yynoreturn yy_fatal_error(const char* msg, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + fprintf(stderr, "%s\n", msg); + exit(YY_EXIT_FAILURE); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) +#define yyless(n) \ + do { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg); \ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } while (0) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ -YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; +YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ -int yyget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +int yyget_lineno(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; + if (!YY_CURRENT_BUFFER) return 0; + + return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ -int yyget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +int yyget_column(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; + if (!YY_CURRENT_BUFFER) return 0; + + return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ -FILE *yyget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; +FILE* yyget_in(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ -FILE *yyget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; +FILE* yyget_out(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ -int yyget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; +int yyget_leng(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ -char *yyget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; +char* yyget_text(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ -void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; +void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ -void yyset_lineno (int _line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void yyset_lineno(int _line_number, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR("yyset_lineno called with no buffer"); - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); - - yylineno = _line_number; + yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ -void yyset_column (int _column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; +void yyset_column(int _column_no, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR("yyset_column called with no buffer"); - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - YY_FATAL_ERROR( "yyset_column called with no buffer" ); - - yycolumn = _column_no; + yycolumn = _column_no; } /** Set the input stream. This does not discard the current @@ -5164,80 +4263,71 @@ void yyset_column (int _column_no , yyscan_t yyscanner) * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ -void yyset_in (FILE * _in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = _in_str ; +void yyset_in(FILE* _in_str, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yyin = _in_str; } -void yyset_out (FILE * _out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = _out_str ; +void yyset_out(FILE* _out_str, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yyout = _out_str; } -int yyget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; +int yyget_debug(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; } -void yyset_debug (int _bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = _bdebug ; +void yyset_debug(int _bdebug, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = _bdebug; } /* Accessor methods for yylval and yylloc */ -YYSTYPE * yyget_lval (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yylval; +YYSTYPE* yyget_lval(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yylval; } -void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yylval = yylval_param; +void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; } -YYLTYPE *yyget_lloc (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yylloc; +YYLTYPE* yyget_lloc(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + return yylloc; } - -void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yylloc = yylloc_param; + +void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + yylloc = yylloc_param; } - + /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ -int yylex_init(yyscan_t* ptr_yy_globals) -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } +int yylex_init(yyscan_t* ptr_yy_globals) { + if (ptr_yy_globals == NULL) { + errno = EINVAL; + return 1; + } - *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); + *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), NULL); - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } + if (*ptr_yy_globals == NULL) { + errno = ENOMEM; + return 1; + } - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t)); - return yy_init_globals ( *ptr_yy_globals ); + return yy_init_globals(*ptr_yy_globals); } /* yylex_init_extra has the same functionality as yylex_init, but follows the @@ -5247,94 +4337,91 @@ int yylex_init(yyscan_t* ptr_yy_globals) * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ -int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) -{ - struct yyguts_t dummy_yyguts; +int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals) { + struct yyguts_t dummy_yyguts; - yyset_extra (yy_user_defined, &dummy_yyguts); + yyset_extra(yy_user_defined, &dummy_yyguts); - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } + if (ptr_yy_globals == NULL) { + errno = EINVAL; + return 1; + } - *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), &dummy_yyguts); - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } + if (*ptr_yy_globals == NULL) { + errno = ENOMEM; + return 1; + } - /* By setting to 0xAA, we expose bugs in + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t)); - yyset_extra (yy_user_defined, *ptr_yy_globals); + yyset_extra(yy_user_defined, *ptr_yy_globals); - return yy_init_globals ( *ptr_yy_globals ); + return yy_init_globals(*ptr_yy_globals); } -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. +static int yy_init_globals(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ - yyg->yy_buffer_stack = NULL; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = NULL; - yyg->yy_init = 0; - yyg->yy_start = 0; + yyg->yy_buffer_stack = NULL; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = NULL; + yyg->yy_init = 0; + yyg->yy_start = 0; - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + yyin = stdin; + yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = NULL; + yyout = NULL; #endif - /* For future reference: Set errno on error, since we are called by + /* For future reference: Set errno on error, since we are called by * yylex_init() */ - return 0; + return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(yyscanner); - } +int yylex_destroy(yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) { + yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(yyscanner); + } - /* Destroy the stack itself. */ - yyfree(yyg->yy_buffer_stack , yyscanner); - yyg->yy_buffer_stack = NULL; + /* Destroy the stack itself. */ + yyfree(yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; - /* Destroy the start condition stack. */ - yyfree( yyg->yy_start_stack , yyscanner ); - yyg->yy_start_stack = NULL; + /* Destroy the start condition stack. */ + yyfree(yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; - /* Reset the globals. This is important in a non-reentrant scanner so the next time + /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ - yy_init_globals( yyscanner); + yy_init_globals(yyscanner); - /* Destroy the main struct (reentrant only). */ - yyfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; + /* Destroy the main struct (reentrant only). */ + yyfree(yyscanner, yyscanner); + yyscanner = NULL; + return 0; } /* @@ -5342,66 +4429,60 @@ int yylex_destroy (yyscan_t yyscanner) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; +static void yy_flex_strncpy(char* s1, const char* s2, int n, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + (void)yyg; - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; + int i; + for (i = 0; i < n; ++i) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s , yyscan_t yyscanner) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; +static int yy_flex_strlen(const char* s, yyscan_t yyscanner) { + int n; + for (n = 0; s[n]; ++n) + ; - return n; + return n; } #endif -void *yyalloc (yy_size_t size , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - return malloc(size); +void* yyalloc(yy_size_t size, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + return malloc(size); } -void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; +void* yyrealloc(void* ptr, yy_size_t size, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + (void)yyg; - /* The cast to (char *) in the following accommodates both + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return realloc(ptr, size); } -void yyfree (void * ptr , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +void yyfree(void* ptr, yyscan_t yyscanner) { + struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + free((char*)ptr); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 281 "flex_lexer.l" +#line 286 "flex_lexer.l" /*************************** ** Section 3: User code ***************************/ -int yyerror(const char *msg) { - fprintf(stderr, "[SQL-Lexer-Error] %s\n",msg); return 0; +int yyerror(const char* msg) { + fprintf(stderr, "[SQL-Lexer-Error] %s\n", msg); + return 0; } - diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index e73bdde0..9b582a78 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -6,7 +6,7 @@ #line 7 "flex_lexer.h" -#define YY_INT_ALIGNED short int +#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ @@ -255,10 +255,10 @@ /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ -#include -#include #include +#include #include +#include /* end standard C headers. */ @@ -269,7 +269,7 @@ /* C99 systems have . Non-C99 systems may or may not. */ -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -289,41 +289,41 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN -#define INT8_MIN (-128) +#define INT8_MIN (-128) #endif #ifndef INT16_MIN -#define INT16_MIN (-32767-1) +#define INT16_MIN (-32767 - 1) #endif #ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) +#define INT32_MIN (-2147483647 - 1) #endif #ifndef INT8_MAX -#define INT8_MAX (127) +#define INT8_MAX (127) #endif #ifndef INT16_MAX -#define INT16_MAX (32767) +#define INT16_MAX (32767) #endif #ifndef INT32_MAX -#define INT32_MAX (2147483647) +#define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX -#define UINT8_MAX (255U) +#define UINT8_MAX (255U) #endif #ifndef UINT16_MAX -#define UINT16_MAX (65535U) +#define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) +#define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) +#define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ @@ -373,7 +373,7 @@ typedef void* yyscan_t; #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; +typedef struct yy_buffer_state* YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T @@ -383,74 +383,72 @@ typedef size_t yy_size_t; #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; +struct yy_buffer_state { + FILE* yy_input_file; - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ + char* yy_ch_buf; /* input buffer */ + char* yy_buf_pos; /* current position in input buffer */ - /* Size of input buffer in bytes, not including room for EOB + /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + int yy_buf_size; - /* Number of characters read into yy_ch_buf, not including EOB + /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + int yy_n_chars; - /* Whether we "own" the buffer - i.e., we know we created it, + /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ - int yy_is_our_buffer; + int yy_is_our_buffer; - /* Whether this is an "interactive" input source; if so, and + /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ - int yy_is_interactive; + int yy_is_interactive; - /* Whether we're considered to be at the beginning of a line. + /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ - int yy_at_bol; + int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the + /* Whether to try to fill the input buffer when we reach the * end of it. */ - int yy_fill_buffer; + int yy_fill_buffer; - int yy_buffer_status; - - }; + int yy_buffer_status; +}; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ -void yyrestart ( FILE *input_file , yyscan_t yyscanner ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); -void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -void yypop_buffer_state ( yyscan_t yyscanner ); +void yyrestart(FILE* input_file, yyscan_t yyscanner); +void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner); +void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); +void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); +void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void yypop_buffer_state(yyscan_t yyscanner); -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_string(const char* yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_bytes(const char* bytes, int len, yyscan_t yyscanner); -void *yyalloc ( yy_size_t , yyscan_t yyscanner ); -void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); -void yyfree ( void * , yyscan_t yyscanner ); +void* yyalloc(yy_size_t, yyscan_t yyscanner); +void* yyrealloc(void*, yy_size_t, yyscan_t yyscanner); +void yyfree(void*, yyscan_t yyscanner); /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) +#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1) #define YY_SKIP_YYWRAP #define yytext_ptr yytext_r @@ -471,72 +469,72 @@ void yyfree ( void * , yyscan_t yyscanner ); #endif #ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * +#define YY_EXTRA_TYPE void* #endif -int yylex_init (yyscan_t* scanner); +int yylex_init(yyscan_t* scanner); -int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( yyscan_t yyscanner ); +int yylex_destroy(yyscan_t yyscanner); + +int yyget_debug(yyscan_t yyscanner); -int yyget_debug ( yyscan_t yyscanner ); +void yyset_debug(int debug_flag, yyscan_t yyscanner); -void yyset_debug ( int debug_flag , yyscan_t yyscanner ); +YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner); -YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); +void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); -void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); +FILE* yyget_in(yyscan_t yyscanner); -FILE *yyget_in ( yyscan_t yyscanner ); +void yyset_in(FILE* _in_str, yyscan_t yyscanner); -void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); +FILE* yyget_out(yyscan_t yyscanner); -FILE *yyget_out ( yyscan_t yyscanner ); +void yyset_out(FILE* _out_str, yyscan_t yyscanner); -void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); +int yyget_leng(yyscan_t yyscanner); - int yyget_leng ( yyscan_t yyscanner ); +char* yyget_text(yyscan_t yyscanner); -char *yyget_text ( yyscan_t yyscanner ); +int yyget_lineno(yyscan_t yyscanner); -int yyget_lineno ( yyscan_t yyscanner ); +void yyset_lineno(int _line_number, yyscan_t yyscanner); -void yyset_lineno ( int _line_number , yyscan_t yyscanner ); +int yyget_column(yyscan_t yyscanner); -int yyget_column ( yyscan_t yyscanner ); +void yyset_column(int _column_no, yyscan_t yyscanner); -void yyset_column ( int _column_no , yyscan_t yyscanner ); +YYSTYPE* yyget_lval(yyscan_t yyscanner); -YYSTYPE * yyget_lval ( yyscan_t yyscanner ); +void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner); -void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); +YYLTYPE* yyget_lloc(yyscan_t yyscanner); + +void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner); - YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); - - void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); - /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( yyscan_t yyscanner ); +extern "C" int yywrap(yyscan_t yyscanner); #else -extern int yywrap ( yyscan_t yyscanner ); +extern int yywrap(yyscan_t yyscanner); #endif #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); +static void yy_flex_strncpy(char*, const char*, int, yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * , yyscan_t yyscanner); +static int yy_flex_strlen(const char*, yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT @@ -564,11 +562,9 @@ static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); +extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner); -#define YY_DECL int yylex \ - (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) +#define YY_DECL int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner) #endif /* !YY_DECL */ /* yy_get_previous_state - get the state just before the EOB char was reached */ @@ -730,8 +726,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 281 "flex_lexer.l" - +#line 286 "flex_lexer.l" #line 736 "flex_lexer.h" #undef hsql_IN_HEADER diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 5b444e5d..7318a4bc 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -115,6 +115,7 @@ EXTRACT TOKEN(EXTRACT) FALSE TOKEN(FALSE) FILE TOKEN(FILE) FLOAT TOKEN(FLOAT) +FOLLOWING TOKEN(FOLLOWING) FOR TOKEN(FOR) FORMAT TOKEN(FORMAT) FROM TOKEN(FROM) @@ -173,6 +174,7 @@ OVER TOKEN(OVER) PARAMETERS TOKEN(PARAMETERS) PARTITION TOKEN(PARTITION) PLAN TOKEN(PLAN) +PRECEDING TOKEN(PRECEDING) PREPARE TOKEN(PREPARE) PRIMARY TOKEN(PRIMARY) RANGE TOKEN(RANGE) @@ -206,6 +208,7 @@ TOP TOKEN(TOP) TRANSACTION TOKEN(TRANSACTION) TRUE TOKEN(TRUE) TRUNCATE TOKEN(TRUNCATE) +UNBOUNDED TOKEN(UNBOUNDED) UNION TOKEN(UNION) UNIQUE TOKEN(UNIQUE) UNLOAD TOKEN(UNLOAD) @@ -221,6 +224,8 @@ WITH TOKEN(WITH) YEAR TOKEN(YEAR) YEARS TOKEN(YEARS) + +CURRENT[ \t\n]+ROW TOKEN(CURRENT_ROW) CHARACTER[ \t\n]+VARYING TOKEN(CHARACTER_VARYING) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index e1785374..bd543786 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -5,11 +5,15 @@ namespace hsql { -FrameDescription::FrameDescription(FrameType type, char* start, char* end) : type{type}, start{start}, end{end} {} +FrameBound::FrameBound(int64_t offset, FrameBoundType type, bool unbounded) + : offset{offset}, type{type}, unbounded{unbounded} {} + +FrameDescription::FrameDescription(FrameType type, FrameBound* start, FrameBound* end) + : type{type}, start{start}, end{end} {} FrameDescription::~FrameDescription() { - free(start); - free(end); + delete start; + delete end; } WindowDescription::WindowDescription(std::vector* orderList, FrameDescription* frameDescription) @@ -272,8 +276,7 @@ Expr* Expr::makeWindow(Expr* expr, std::vector* partitionList, std::vecto Expr* e = new Expr(kExprWindow); e->expr = expr; e->exprList = partitionList; - WindowDescription* w = new WindowDescription(orderList, frameDescription); - e->windowDescription = w; + e->windowDescription = new WindowDescription(orderList, frameDescription); return e; } diff --git a/src/sql/Expr.h b/src/sql/Expr.h index 2dea3b0c..23882c63 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -85,16 +85,24 @@ enum DatetimeField { kDatetimeYear, }; -enum FrameType { kRange, kRows, kGroups }; - // Description of the frame clause within a window expression. +enum FrameBoundType { kFollowing, kPreceding, kCurrentRow }; +struct FrameBound { + FrameBound(int64_t offset, FrameBoundType type, bool unbounded); + + int64_t offset; + FrameBoundType type; + bool unbounded; +}; + +enum FrameType { kRange, kRows, kGroups }; struct FrameDescription { - FrameDescription(FrameType type, char* start, char* end); + FrameDescription(FrameType type, FrameBound* start, FrameBound* end); virtual ~FrameDescription(); FrameType type; - char* start; - char* end; + FrameBound* start; + FrameBound* end; }; // Description of additional fields for a window expression. diff --git a/src/util/sqlhelper.cpp b/src/util/sqlhelper.cpp index 33ae9e88..f728859f 100644 --- a/src/util/sqlhelper.cpp +++ b/src/util/sqlhelper.cpp @@ -2,222 +2,271 @@ #include "sqlhelper.h" #include #include +#include #include namespace hsql { -void printOperatorExpression(Expr* expr, uintmax_t numIndent); -void printAlias(Alias* alias, uintmax_t numIndent); +void printOperatorExpression(Expr* expr, uintmax_t num_indent); +void printAlias(Alias* alias, uintmax_t num_indent); std::ostream& operator<<(std::ostream& os, const OperatorType& op); std::ostream& operator<<(std::ostream& os, const DatetimeField& op); -std::string indent(uintmax_t numIndent) { return std::string(numIndent, '\t'); } -void inprint(int64_t val, uintmax_t numIndent) { std::cout << indent(numIndent).c_str() << val << " " << std::endl; } -void inprint(double val, uintmax_t numIndent) { std::cout << indent(numIndent).c_str() << val << std::endl; } -void inprint(const char* val, uintmax_t numIndent) { std::cout << indent(numIndent).c_str() << val << std::endl; } -void inprint(const char* val, const char* val2, uintmax_t numIndent) { - std::cout << indent(numIndent).c_str() << val << "->" << val2 << std::endl; +std::string indent(uintmax_t num_indent) { return std::string(num_indent, '\t'); } +void inprint(int64_t val, uintmax_t num_indent) { std::cout << indent(num_indent).c_str() << val << " " << std::endl; } +void inprint(double val, uintmax_t num_indent) { std::cout << indent(num_indent).c_str() << val << std::endl; } +void inprint(const char* val, uintmax_t num_indent) { std::cout << indent(num_indent).c_str() << val << std::endl; } +void inprint(const char* val, const char* val2, uintmax_t num_indent) { + std::cout << indent(num_indent).c_str() << val << "->" << val2 << std::endl; } -void inprintC(char val, uintmax_t numIndent) { std::cout << indent(numIndent).c_str() << val << std::endl; } -void inprint(const OperatorType& op, uintmax_t numIndent) { std::cout << indent(numIndent) << op << std::endl; } -void inprint(const ColumnType& colType, uintmax_t numIndent) { std::cout << indent(numIndent) << colType << std::endl; } -void inprint(const DatetimeField& colType, uintmax_t numIndent) { - std::cout << indent(numIndent) << colType << std::endl; +void inprintC(char val, uintmax_t num_indent) { std::cout << indent(num_indent).c_str() << val << std::endl; } +void inprint(const OperatorType& op, uintmax_t num_indent) { std::cout << indent(num_indent) << op << std::endl; } +void inprint(const ColumnType& colType, uintmax_t num_indent) { + std::cout << indent(num_indent) << colType << std::endl; +} +void inprint(const DatetimeField& colType, uintmax_t num_indent) { + std::cout << indent(num_indent) << colType << std::endl; } -void printTableRefInfo(TableRef* table, uintmax_t numIndent) { +void printTableRefInfo(TableRef* table, uintmax_t num_indent) { switch (table->type) { case kTableName: - inprint(table->name, numIndent); + inprint(table->name, num_indent); if (table->schema) { - inprint("Schema", numIndent + 1); - inprint(table->schema, numIndent + 2); + inprint("Schema", num_indent + 1); + inprint(table->schema, num_indent + 2); } break; case kTableSelect: - printSelectStatementInfo(table->select, numIndent); + printSelectStatementInfo(table->select, num_indent); break; case kTableJoin: - inprint("Join Table", numIndent); - inprint("Left", numIndent + 1); - printTableRefInfo(table->join->left, numIndent + 2); - inprint("Right", numIndent + 1); - printTableRefInfo(table->join->right, numIndent + 2); - inprint("Join Condition", numIndent + 1); - printExpression(table->join->condition, numIndent + 2); + inprint("Join Table", num_indent); + inprint("Left", num_indent + 1); + printTableRefInfo(table->join->left, num_indent + 2); + inprint("Right", num_indent + 1); + printTableRefInfo(table->join->right, num_indent + 2); + inprint("Join Condition", num_indent + 1); + printExpression(table->join->condition, num_indent + 2); break; case kTableCrossProduct: - for (TableRef* tbl : *table->list) printTableRefInfo(tbl, numIndent); + for (TableRef* tbl : *table->list) printTableRefInfo(tbl, num_indent); break; } if (table->alias) { - printAlias(table->alias, numIndent); + printAlias(table->alias, num_indent); } } -void printAlias(Alias* alias, uintmax_t numIndent) { - inprint("Alias", numIndent + 1); - inprint(alias->name, numIndent + 2); +void printAlias(Alias* alias, uintmax_t num_indent) { + inprint("Alias", num_indent + 1); + inprint(alias->name, num_indent + 2); if (alias->columns) { for (char* column : *(alias->columns)) { - inprint(column, numIndent + 3); + inprint(column, num_indent + 3); } } } -void printOperatorExpression(Expr* expr, uintmax_t numIndent) { +void printOperatorExpression(Expr* expr, uintmax_t num_indent) { if (expr == nullptr) { - inprint("null", numIndent); + inprint("null", num_indent); return; } - inprint(expr->opType, numIndent); + inprint(expr->opType, num_indent); - printExpression(expr->expr, numIndent + 1); + printExpression(expr->expr, num_indent + 1); if (expr->expr2) { - printExpression(expr->expr2, numIndent + 1); + printExpression(expr->expr2, num_indent + 1); } else if (expr->exprList) { - for (Expr* e : *expr->exprList) printExpression(e, numIndent + 1); + for (Expr* e : *expr->exprList) printExpression(e, num_indent + 1); } } -void printExpression(Expr* expr, uintmax_t numIndent) { +void printExpression(Expr* expr, uintmax_t num_indent) { if (!expr) return; switch (expr->type) { case kExprStar: - inprint("*", numIndent); + inprint("*", num_indent); break; case kExprColumnRef: - inprint(expr->name, numIndent); + inprint(expr->name, num_indent); if (expr->table) { - inprint("Table:", numIndent + 1); - inprint(expr->table, numIndent + 2); + inprint("Table:", num_indent + 1); + inprint(expr->table, num_indent + 2); } break; - // case kExprTableColumnRef: inprint(expr->table, expr->name, numIndent); break; + // case kExprTableColumnRef: inprint(expr->table, expr->name, num_indent); break; case kExprLiteralFloat: - inprint(expr->fval, numIndent); + inprint(expr->fval, num_indent); break; case kExprLiteralInt: - inprint(expr->ival, numIndent); + inprint(expr->ival, num_indent); break; case kExprLiteralString: - inprint(expr->name, numIndent); + inprint(expr->name, num_indent); break; case kExprLiteralDate: - inprint(expr->name, numIndent); + inprint(expr->name, num_indent); break; case kExprLiteralNull: - inprint("NULL", numIndent); + inprint("NULL", num_indent); break; case kExprLiteralInterval: - inprint("INTERVAL", numIndent); - inprint(expr->ival, numIndent + 1); - inprint(expr->datetimeField, numIndent + 1); + inprint("INTERVAL", num_indent); + inprint(expr->ival, num_indent + 1); + inprint(expr->datetimeField, num_indent + 1); break; case kExprFunctionRef: - inprint(expr->name, numIndent); - for (Expr* e : *expr->exprList) printExpression(e, numIndent + 1); + inprint(expr->name, num_indent); + for (Expr* e : *expr->exprList) printExpression(e, num_indent + 1); break; case kExprExtract: - inprint("EXTRACT", numIndent); - inprint(expr->datetimeField, numIndent + 1); - printExpression(expr->expr, numIndent + 1); + inprint("EXTRACT", num_indent); + inprint(expr->datetimeField, num_indent + 1); + printExpression(expr->expr, num_indent + 1); break; case kExprCast: - inprint("CAST", numIndent); - inprint(expr->columnType, numIndent + 1); - printExpression(expr->expr, numIndent + 1); + inprint("CAST", num_indent); + inprint(expr->columnType, num_indent + 1); + printExpression(expr->expr, num_indent + 1); break; case kExprOperator: - printOperatorExpression(expr, numIndent); + printOperatorExpression(expr, num_indent); break; case kExprSelect: - printSelectStatementInfo(expr->select, numIndent); + printSelectStatementInfo(expr->select, num_indent); break; case kExprParameter: - inprint(expr->ival, numIndent); + inprint(expr->ival, num_indent); break; case kExprArray: - for (Expr* e : *expr->exprList) printExpression(e, numIndent + 1); + for (Expr* e : *expr->exprList) { + printExpression(e, num_indent + 1); + } break; case kExprArrayIndex: - printExpression(expr->expr, numIndent + 1); - inprint(expr->ival, numIndent); + printExpression(expr->expr, num_indent + 1); + inprint(expr->ival, num_indent); + break; + case kExprWindow: + printExpression(expr->expr, num_indent); + inprint("OVER", num_indent); + if (expr->exprList) { + inprint("PARTITION BY", num_indent + 1); + for (const auto e : *expr->exprList) { + printExpression(e, num_indent + 2); + } + } + if (expr->windowDescription) { + if (expr->windowDescription->orderList) { + inprint("ORDER BY", num_indent + 1); + printOrderBy(expr->windowDescription->orderList, num_indent + 2); + } + if (expr->windowDescription->frameDescription) { + printFrameDescription(expr->windowDescription->frameDescription, num_indent + 2); + } + } break; default: std::cerr << "Unrecognized expression type " << expr->type << std::endl; return; } if (expr->alias) { - inprint("Alias", numIndent + 1); - inprint(expr->alias, numIndent + 2); + inprint("Alias", num_indent + 1); + inprint(expr->alias, num_indent + 2); } } -void printOrderBy(const std::vector* expr, uintmax_t numIndent) { +void printOrderBy(const std::vector* expr, uintmax_t num_indent) { if (!expr) return; for (const auto& order_description : *expr) { - printExpression(order_description->expr, numIndent); + printExpression(order_description->expr, num_indent); if (order_description->type == kOrderAsc) { - inprint("ascending", numIndent); + inprint("ascending", num_indent); } else { - inprint("descending", numIndent); + inprint("descending", num_indent); } } } -void printSelectStatementInfo(const SelectStatement* stmt, uintmax_t numIndent) { - inprint("SelectStatement", numIndent); - inprint("Fields:", numIndent + 1); - for (Expr* expr : *stmt->selectList) printExpression(expr, numIndent + 2); +void printFrameDescription(FrameDescription* frame_description, uintmax_t num_indent) { + std::ostringstream stream; + stream << indent(num_indent); + switch (frame_description->type) { + case kRows: + stream << "ROWS"; + break; + case kRange: + stream << "RANGE"; + break; + case kGroups: + stream << "GROUPS"; + break; + } + + stream << " "; + + if (frame_description->end) { + stream << "BETWEEN " << frame_description->start << " AND " << frame_description->end; + } else { + stream << frame_description->start; + } + inprint(stream.str().c_str(), num_indent); +} + +void printSelectStatementInfo(const SelectStatement* stmt, uintmax_t num_indent) { + inprint("SelectStatement", num_indent); + inprint("Fields:", num_indent + 1); + for (Expr* expr : *stmt->selectList) printExpression(expr, num_indent + 2); if (stmt->fromTable) { - inprint("Sources:", numIndent + 1); - printTableRefInfo(stmt->fromTable, numIndent + 2); + inprint("Sources:", num_indent + 1); + printTableRefInfo(stmt->fromTable, num_indent + 2); } if (stmt->whereClause) { - inprint("Search Conditions:", numIndent + 1); - printExpression(stmt->whereClause, numIndent + 2); + inprint("Search Conditions:", num_indent + 1); + printExpression(stmt->whereClause, num_indent + 2); } if (stmt->groupBy) { - inprint("GroupBy:", numIndent + 1); - for (Expr* expr : *stmt->groupBy->columns) printExpression(expr, numIndent + 2); + inprint("GroupBy:", num_indent + 1); + for (Expr* expr : *stmt->groupBy->columns) printExpression(expr, num_indent + 2); if (stmt->groupBy->having) { - inprint("Having:", numIndent + 1); - printExpression(stmt->groupBy->having, numIndent + 2); + inprint("Having:", num_indent + 1); + printExpression(stmt->groupBy->having, num_indent + 2); } } if (stmt->lockings) { - inprint("Lock Info:", numIndent + 1); + inprint("Lock Info:", num_indent + 1); for (LockingClause* lockingClause : *stmt->lockings) { - inprint("Type", numIndent + 2); + inprint("Type", num_indent + 2); if (lockingClause->rowLockMode == RowLockMode::ForUpdate) { - inprint("FOR UPDATE", numIndent + 3); + inprint("FOR UPDATE", num_indent + 3); } else if (lockingClause->rowLockMode == RowLockMode::ForNoKeyUpdate) { - inprint("FOR NO KEY UPDATE", numIndent + 3); + inprint("FOR NO KEY UPDATE", num_indent + 3); } else if (lockingClause->rowLockMode == RowLockMode::ForShare) { - inprint("FOR SHARE", numIndent + 3); + inprint("FOR SHARE", num_indent + 3); } else if (lockingClause->rowLockMode == RowLockMode::ForKeyShare) { - inprint("FOR KEY SHARE", numIndent + 3); + inprint("FOR KEY SHARE", num_indent + 3); } if (lockingClause->tables) { - inprint("Target tables:", numIndent + 2); + inprint("Target tables:", num_indent + 2); for (char* dtable : *lockingClause->tables) { - inprint(dtable, numIndent + 3); + inprint(dtable, num_indent + 3); } } if (lockingClause->rowLockWaitPolicy != RowLockWaitPolicy::None) { - inprint("Waiting policy: ", numIndent + 2); + inprint("Waiting policy: ", num_indent + 2); if (lockingClause->rowLockWaitPolicy == RowLockWaitPolicy::NoWait) - inprint("NOWAIT", numIndent + 3); + inprint("NOWAIT", num_indent + 3); else - inprint("SKIP LOCKED", numIndent + 3); + inprint("SKIP LOCKED", num_indent + 3); } } } @@ -226,141 +275,141 @@ void printSelectStatementInfo(const SelectStatement* stmt, uintmax_t numIndent) for (SetOperation* setOperation : *stmt->setOperations) { switch (setOperation->setType) { case SetType::kSetIntersect: - inprint("Intersect:", numIndent + 1); + inprint("Intersect:", num_indent + 1); break; case SetType::kSetUnion: - inprint("Union:", numIndent + 1); + inprint("Union:", num_indent + 1); break; case SetType::kSetExcept: - inprint("Except:", numIndent + 1); + inprint("Except:", num_indent + 1); break; } - printSelectStatementInfo(setOperation->nestedSelectStatement, numIndent + 2); + printSelectStatementInfo(setOperation->nestedSelectStatement, num_indent + 2); if (setOperation->resultOrder) { - inprint("SetResultOrderBy:", numIndent + 1); - printOrderBy(setOperation->resultOrder, numIndent + 2); + inprint("SetResultOrderBy:", num_indent + 1); + printOrderBy(setOperation->resultOrder, num_indent + 2); } if (setOperation->resultLimit) { if (setOperation->resultLimit->limit) { - inprint("SetResultLimit:", numIndent + 1); - printExpression(setOperation->resultLimit->limit, numIndent + 2); + inprint("SetResultLimit:", num_indent + 1); + printExpression(setOperation->resultLimit->limit, num_indent + 2); } if (setOperation->resultLimit->offset) { - inprint("SetResultOffset:", numIndent + 1); - printExpression(setOperation->resultLimit->offset, numIndent + 2); + inprint("SetResultOffset:", num_indent + 1); + printExpression(setOperation->resultLimit->offset, num_indent + 2); } } } } if (stmt->order) { - inprint("OrderBy:", numIndent + 1); - printOrderBy(stmt->order, numIndent + 2); + inprint("OrderBy:", num_indent + 1); + printOrderBy(stmt->order, num_indent + 2); } if (stmt->limit && stmt->limit->limit) { - inprint("Limit:", numIndent + 1); - printExpression(stmt->limit->limit, numIndent + 2); + inprint("Limit:", num_indent + 1); + printExpression(stmt->limit->limit, num_indent + 2); } if (stmt->limit && stmt->limit->offset) { - inprint("Offset:", numIndent + 1); - printExpression(stmt->limit->offset, numIndent + 2); + inprint("Offset:", num_indent + 1); + printExpression(stmt->limit->offset, num_indent + 2); } } -void printImportStatementInfo(const ImportStatement* stmt, uintmax_t numIndent) { - inprint("ImportStatement", numIndent); - inprint(stmt->filePath, numIndent + 1); +void printImportStatementInfo(const ImportStatement* stmt, uintmax_t num_indent) { + inprint("ImportStatement", num_indent); + inprint(stmt->filePath, num_indent + 1); switch (stmt->type) { case ImportType::kImportCSV: - inprint("CSV", numIndent + 1); + inprint("CSV", num_indent + 1); break; case ImportType::kImportTbl: - inprint("TBL", numIndent + 1); + inprint("TBL", num_indent + 1); break; case ImportType::kImportBinary: - inprint("BINARY", numIndent + 1); + inprint("BINARY", num_indent + 1); break; case ImportType::kImportAuto: - inprint("AUTO", numIndent + 1); + inprint("AUTO", num_indent + 1); break; } - inprint(stmt->tableName, numIndent + 1); + inprint(stmt->tableName, num_indent + 1); if (stmt->whereClause) { - inprint("WHERE:", numIndent + 1); - printExpression(stmt->whereClause, numIndent + 2); + inprint("WHERE:", num_indent + 1); + printExpression(stmt->whereClause, num_indent + 2); } } -void printExportStatementInfo(const ExportStatement* stmt, uintmax_t numIndent) { - inprint("ExportStatement", numIndent); - inprint(stmt->filePath, numIndent + 1); +void printExportStatementInfo(const ExportStatement* stmt, uintmax_t num_indent) { + inprint("ExportStatement", num_indent); + inprint(stmt->filePath, num_indent + 1); switch (stmt->type) { case ImportType::kImportCSV: - inprint("CSV", numIndent + 1); + inprint("CSV", num_indent + 1); break; case ImportType::kImportTbl: - inprint("TBL", numIndent + 1); + inprint("TBL", num_indent + 1); break; case ImportType::kImportBinary: - inprint("BINARY", numIndent + 1); + inprint("BINARY", num_indent + 1); break; case ImportType::kImportAuto: - inprint("AUTO", numIndent + 1); + inprint("AUTO", num_indent + 1); break; } if (stmt->tableName) { - inprint(stmt->tableName, numIndent + 1); + inprint(stmt->tableName, num_indent + 1); } else { - printSelectStatementInfo(stmt->select, numIndent + 1); + printSelectStatementInfo(stmt->select, num_indent + 1); } } -void printCreateStatementInfo(const CreateStatement* stmt, uintmax_t numIndent) { - inprint("CreateStatement", numIndent); - inprint(stmt->tableName, numIndent + 1); - if (stmt->filePath) inprint(stmt->filePath, numIndent + 1); +void printCreateStatementInfo(const CreateStatement* stmt, uintmax_t num_indent) { + inprint("CreateStatement", num_indent); + inprint(stmt->tableName, num_indent + 1); + if (stmt->filePath) inprint(stmt->filePath, num_indent + 1); } -void printInsertStatementInfo(const InsertStatement* stmt, uintmax_t numIndent) { - inprint("InsertStatement", numIndent); - inprint(stmt->tableName, numIndent + 1); +void printInsertStatementInfo(const InsertStatement* stmt, uintmax_t num_indent) { + inprint("InsertStatement", num_indent); + inprint(stmt->tableName, num_indent + 1); if (stmt->columns) { - inprint("Columns", numIndent + 1); + inprint("Columns", num_indent + 1); for (char* col_name : *stmt->columns) { - inprint(col_name, numIndent + 2); + inprint(col_name, num_indent + 2); } } switch (stmt->type) { case kInsertValues: - inprint("Values", numIndent + 1); + inprint("Values", num_indent + 1); for (Expr* expr : *stmt->values) { - printExpression(expr, numIndent + 2); + printExpression(expr, num_indent + 2); } break; case kInsertSelect: - printSelectStatementInfo(stmt->select, numIndent + 1); + printSelectStatementInfo(stmt->select, num_indent + 1); break; } } -void printTransactionStatementInfo(const TransactionStatement* stmt, uintmax_t numIndent) { - inprint("TransactionStatement", numIndent); +void printTransactionStatementInfo(const TransactionStatement* stmt, uintmax_t num_indent) { + inprint("TransactionStatement", num_indent); switch (stmt->command) { case kBeginTransaction: - inprint("BEGIN", numIndent + 1); + inprint("BEGIN", num_indent + 1); break; case kCommitTransaction: - inprint("COMMIT", numIndent + 1); + inprint("COMMIT", num_indent + 1); break; case kRollbackTransaction: - inprint("ROLLBACK", numIndent + 1); + inprint("ROLLBACK", num_indent + 1); break; } } @@ -428,4 +477,27 @@ std::ostream& operator<<(std::ostream& os, const DatetimeField& datetime) { } } +std::ostream& operator<<(std::ostream& os, FrameBound* frame_bound) { + if (frame_bound->type == kCurrentRow) { + os << "CURRENT ROW"; + return os; + } + + if (frame_bound->unbounded) { + os << "UNBOUNDED"; + } else { + os << frame_bound->offset; + } + + os << " "; + + if (frame_bound->type == kPreceding) { + os << "PRECEDING"; + } else { + os << "FOLLOWING"; + } + + return os; +} + } // namespace hsql diff --git a/src/util/sqlhelper.h b/src/util/sqlhelper.h index 1c6deb7a..9ce7b5ec 100644 --- a/src/util/sqlhelper.h +++ b/src/util/sqlhelper.h @@ -1,6 +1,8 @@ #ifndef SQLPARSER_SQLHELPER_H #define SQLPARSER_SQLHELPER_H +#include + #include "../sql/statements.h" namespace hsql { @@ -32,6 +34,9 @@ void printExpression(Expr* expr, uintmax_t num_indent); // Prints an ORDER BY clause void printOrderBy(const std::vector* expr, uintmax_t num_indent); +// Prints the type and bounds of a WindowExpression's frame. +void printFrameDescription(FrameDescription* frame_description, uintmax_t num_indent); + } // namespace hsql #endif diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 44cc9baf..8052d96a 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -54,3 +54,7 @@ !SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN -1 PRECEDING AND CURRENT ROW) FROM test; !SELECT test1, rank() OVER (INVALID UNBOUNDED PRECEDING) FROM test; !SELECT rank() OVER (INVALID) FROM test; +!SELECT rank() OVER (ROWS UNBOUNDEDD PRECEDING) FROM test; +!SELECT rank() OVER (ROWS UNBOUNDED PRECEDINGG) FROM test; +!SELECT test1, rank() OVER (ROWS -1 PRECEDING) FROM test; +!SELECT test1, rank() OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND -1 FOLLOWING) FROM test; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index f2dab8f7..c99522de 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -994,9 +994,10 @@ TEST(WindowExpression) { TEST_PARSE_SQL_QUERY( "SELECT t2, avg(t1) OVER() FROM t;" "SELECT rank() OVER(ORDER BY t1) FROM t;" - "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5) FROM t;" - "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND CURRENT ROW) FROM t;" - "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t;" + "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5 ROWS UNBOUNDED PRECEDING) FROM t;" + "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND 2 FOLLOWING) FROM t;" + "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM " + "t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 GROUPS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t;", result, 6); @@ -1027,8 +1028,8 @@ TEST(WindowExpression) { ASSERT_TRUE(stmt->selectList->at(0)->expr); ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "rank"); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList) - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()) + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 1); @@ -1052,8 +1053,8 @@ TEST(WindowExpression) { ASSERT_TRUE(stmt->selectList->at(0)->expr); ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "avg"); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList) - ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->size(), 1) + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); + ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->size(), 1); ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->at(0)->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(0)->expr->exprList->at(0)->name, "t1"); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); @@ -1063,9 +1064,55 @@ TEST(WindowExpression) { ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t4"); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->name, "t5"); - ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->type, kRows); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->offset, 0); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->type, kPreceding); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start->unbounded); + ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription->end); ASSERT_TRUE(stmt->fromTable); ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); + const auto frame_starts = + std::vector{{25, kPreceding, false}, {0, kPreceding, true}, {0, kPreceding, true}}; + const auto frame_ends = + std::vector{{2, kFollowing, false}, {0, kFollowing, true}, {0, kCurrentRow, false}}; + + for (auto bound_index = 0; bound_index < frame_starts.size(); ++bound_index) { + stmt = (SelectStatement*)result.getStatement(3 + bound_index); + const auto& expected_start = frame_starts[bound_index]; + const auto& expected_end = frame_ends[bound_index]; + + ASSERT_TRUE(stmt->selectList); + ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); + ASSERT_TRUE(stmt->selectList->at(0)->exprList); + ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->exprList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(0)->name, "t1"); + ASSERT_TRUE(stmt->selectList->at(0)->expr); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "rank"); + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); + ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t2"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->offset, expected_start.offset); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->type, expected_start.type); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->unbounded, expected_start.unbounded); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->end); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->offset, expected_end.offset); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->type, expected_end.type); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->unbounded, expected_end.unbounded); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + } } From 0a6f86f74dc314492b76c50cf4ea4a67857e5ea2 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 22:24:45 +0200 Subject: [PATCH 05/12] remove debug include --- src/parser/bison_parser.cpp | 1795 +++++++++++++++++------------------ src/parser/bison_parser.h | 418 ++++---- src/parser/bison_parser.y | 1 - 3 files changed, 1110 insertions(+), 1104 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 9c9e24b2..d50e47f3 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -64,20 +64,20 @@ #define YYPULL 1 /* Substitute the type names. */ -#define YYSTYPE HSQL_STYPE -#define YYLTYPE HSQL_LTYPE +#define YYSTYPE HSQL_STYPE +#define YYLTYPE HSQL_LTYPE /* Substitute the variable and function names. */ -#define yyparse hsql_parse -#define yylex hsql_lex -#define yyerror hsql_error -#define yydebug hsql_debug -#define yynerrs hsql_nerrs +#define yyparse hsql_parse +#define yylex hsql_lex +#define yyerror hsql_error +#define yydebug hsql_debug +#define yynerrs hsql_nerrs /* First part of user prologue. */ #line 2 "bison_parser.y" -// clang-format on -/** + // clang-format on + /** * bison_parser.y * defines bison_parser.h * outputs bison_parser.c @@ -85,7 +85,7 @@ * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html * */ -/********************************* + /********************************* ** Section 1: C Declarations *********************************/ @@ -94,18 +94,17 @@ #include #include -#include -using namespace hsql; + using namespace hsql; -int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const char* msg) { - result->setIsValid(false); - result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); - return 0; -} -// clang-format off + int yyerror(YYLTYPE * llocp, SQLParserResult * result, yyscan_t scanner, const char* msg) { + result->setIsValid(false); + result->setErrorDetails(strdup(msg), llocp->first_line, llocp->first_column); + return 0; + } + // clang-format off -#line 109 "bison_parser.cpp" +#line 108 "bison_parser.cpp" # ifndef YY_CAST # ifdef __cplusplus @@ -865,40 +864,40 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 321, 321, 340, 346, 353, 357, 361, 362, 363, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 380, 381, 383, 387, 392, 396, 406, 407, 408, 410, - 410, 416, 422, 424, 428, 439, 445, 453, 468, 473, - 474, 480, 486, 497, 498, 503, 514, 527, 539, 546, - 553, 562, 563, 565, 569, 574, 575, 577, 584, 585, - 586, 587, 588, 589, 590, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 604, 606, 607, 609, 610, - 611, 613, 614, 616, 620, 625, 626, 627, 628, 630, - 631, 639, 645, 651, 657, 663, 664, 671, 677, 679, - 689, 696, 707, 714, 722, 723, 730, 737, 741, 746, - 756, 760, 764, 776, 776, 778, 779, 788, 789, 791, - 805, 817, 822, 826, 830, 835, 836, 838, 848, 849, - 851, 853, 854, 856, 858, 859, 861, 866, 868, 869, - 871, 872, 874, 878, 883, 885, 886, 887, 891, 892, - 894, 895, 896, 897, 898, 899, 904, 908, 913, 914, - 916, 920, 925, 933, 933, 933, 933, 933, 933, 935, - 936, 936, 936, 936, 936, 936, 936, 936, 937, 937, - 941, 941, 943, 944, 945, 946, 947, 949, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 960, 961, - 963, 964, 965, 966, 970, 972, 973, 975, 976, 977, - 979, 980, 981, 983, 984, 985, 986, 987, 992, 993, - 994, 995, 997, 998, 1000, 1001, 1003, 1004, 1005, 1006, - 1007, 1008, 1009, 1011, 1012, 1014, 1016, 1018, 1019, 1020, - 1021, 1022, 1023, 1025, 1026, 1027, 1028, 1029, 1030, 1032, - 1032, 1034, 1036, 1038, 1040, 1041, 1042, 1043, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1047, 1049, 1050, 1052, 1053, - 1055, 1057, 1059, 1070, 1074, 1085, 1117, 1126, 1126, 1133, - 1133, 1135, 1135, 1142, 1146, 1151, 1159, 1165, 1169, 1174, - 1175, 1177, 1177, 1179, 1179, 1181, 1182, 1184, 1184, 1190, - 1191, 1193, 1197, 1202, 1208, 1215, 1216, 1217, 1218, 1220, - 1221, 1222, 1228, 1228, 1230, 1232, 1236, 1241, 1251, 1258, - 1266, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 1299, 1301, 1307, 1307, 1310, 1314 + 0, 320, 320, 339, 345, 352, 356, 360, 361, 362, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 379, 380, 382, 386, 391, 395, 405, 406, 407, 409, + 409, 415, 421, 423, 427, 438, 444, 452, 467, 472, + 473, 479, 485, 496, 497, 502, 513, 526, 538, 545, + 552, 561, 562, 564, 568, 573, 574, 576, 583, 584, + 585, 586, 587, 588, 589, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 605, 606, 608, 609, + 610, 612, 613, 615, 619, 624, 625, 626, 627, 629, + 630, 638, 644, 650, 656, 662, 663, 670, 676, 678, + 688, 695, 706, 713, 721, 722, 729, 736, 740, 745, + 755, 759, 763, 775, 775, 777, 778, 787, 788, 790, + 804, 816, 821, 825, 829, 834, 835, 837, 847, 848, + 850, 852, 853, 855, 857, 858, 860, 865, 867, 868, + 870, 871, 873, 877, 882, 884, 885, 886, 890, 891, + 893, 894, 895, 896, 897, 898, 903, 907, 912, 913, + 915, 919, 924, 932, 932, 932, 932, 932, 932, 934, + 935, 935, 935, 935, 935, 935, 935, 935, 936, 936, + 940, 940, 942, 943, 944, 945, 946, 948, 948, 949, + 950, 951, 952, 953, 954, 955, 956, 957, 959, 960, + 962, 963, 964, 965, 969, 971, 972, 974, 975, 976, + 978, 979, 980, 982, 983, 984, 985, 986, 990, 991, + 992, 993, 995, 996, 998, 999, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1009, 1010, 1012, 1014, 1016, 1017, 1018, + 1019, 1020, 1021, 1023, 1024, 1025, 1026, 1027, 1028, 1030, + 1030, 1032, 1034, 1036, 1038, 1039, 1040, 1041, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1045, 1047, 1048, 1050, 1051, + 1053, 1055, 1057, 1068, 1072, 1083, 1115, 1124, 1124, 1131, + 1131, 1133, 1133, 1140, 1144, 1149, 1157, 1163, 1167, 1172, + 1173, 1175, 1175, 1177, 1177, 1179, 1180, 1182, 1182, 1188, + 1189, 1191, 1195, 1200, 1206, 1213, 1214, 1215, 1216, 1218, + 1219, 1220, 1226, 1226, 1228, 1230, 1234, 1239, 1249, 1256, + 1264, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, + 1297, 1299, 1305, 1305, 1308, 1312 }; #endif @@ -2061,31 +2060,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 181 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2067 "bison_parser.cpp" +#line 2066 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 181 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2073 "bison_parser.cpp" +#line 2072 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2079 "bison_parser.cpp" +#line 2078 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2085 "bison_parser.cpp" +#line 2084 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).stmt_vec)) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2094,23 +2093,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2098 "bison_parser.cpp" +#line 2097 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2104 "bison_parser.cpp" +#line 2103 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2110 "bison_parser.cpp" +#line 2109 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2119,11 +2118,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2123 "bison_parser.cpp" +#line 2122 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2132,89 +2131,89 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2136 "bison_parser.cpp" +#line 2135 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2142 "bison_parser.cpp" +#line 2141 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2148 "bison_parser.cpp" +#line 2147 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2154 "bison_parser.cpp" +#line 2153 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 181 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2160 "bison_parser.cpp" +#line 2159 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2166 "bison_parser.cpp" +#line 2165 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2172 "bison_parser.cpp" +#line 2171 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2178 "bison_parser.cpp" +#line 2177 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 181 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2184 "bison_parser.cpp" +#line 2183 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2190 "bison_parser.cpp" +#line 2189 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2196 "bison_parser.cpp" +#line 2195 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2202 "bison_parser.cpp" +#line 2201 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2208 "bison_parser.cpp" +#line 2207 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2214 "bison_parser.cpp" +#line 2213 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).table_element_vec)) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2223,113 +2222,113 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2227 "bison_parser.cpp" +#line 2226 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2233 "bison_parser.cpp" +#line 2232 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2239 "bison_parser.cpp" +#line 2238 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2245 "bison_parser.cpp" +#line 2244 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2251 "bison_parser.cpp" +#line 2250 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2257 "bison_parser.cpp" +#line 2256 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2263 "bison_parser.cpp" +#line 2262 "bison_parser.cpp" break; case YYSYMBOL_column_constraint_set: /* column_constraint_set */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2269 "bison_parser.cpp" +#line 2268 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2275 "bison_parser.cpp" +#line 2274 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2281 "bison_parser.cpp" +#line 2280 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2287 "bison_parser.cpp" +#line 2286 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2293 "bison_parser.cpp" +#line 2292 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2299 "bison_parser.cpp" +#line 2298 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2305 "bison_parser.cpp" +#line 2304 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2311 "bison_parser.cpp" +#line 2310 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2317 "bison_parser.cpp" +#line 2316 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2323 "bison_parser.cpp" +#line 2322 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2329 "bison_parser.cpp" +#line 2328 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 173 "bison_parser.y" +#line 172 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2338,17 +2337,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2342 "bison_parser.cpp" +#line 2341 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2348 "bison_parser.cpp" +#line 2347 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).update_vec)) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2357,77 +2356,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2361 "bison_parser.cpp" +#line 2360 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2367 "bison_parser.cpp" +#line 2366 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2373 "bison_parser.cpp" +#line 2372 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2379 "bison_parser.cpp" +#line 2378 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2385 "bison_parser.cpp" +#line 2384 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2391 "bison_parser.cpp" +#line 2390 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2397 "bison_parser.cpp" +#line 2396 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2403 "bison_parser.cpp" +#line 2402 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2409 "bison_parser.cpp" +#line 2408 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2415 "bison_parser.cpp" +#line 2414 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2421 "bison_parser.cpp" +#line 2420 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2427 "bison_parser.cpp" +#line 2426 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2436,41 +2435,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2440 "bison_parser.cpp" +#line 2439 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2446 "bison_parser.cpp" +#line 2445 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2452 "bison_parser.cpp" +#line 2451 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2458 "bison_parser.cpp" +#line 2457 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2464 "bison_parser.cpp" +#line 2463 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2470 "bison_parser.cpp" +#line 2469 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2479,11 +2478,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2483 "bison_parser.cpp" +#line 2482 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2492,35 +2491,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2496 "bison_parser.cpp" +#line 2495 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2502 "bison_parser.cpp" +#line 2501 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2508 "bison_parser.cpp" +#line 2507 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2514 "bison_parser.cpp" +#line 2513 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2520 "bison_parser.cpp" +#line 2519 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2529,11 +2528,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2533 "bison_parser.cpp" +#line 2532 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2542,11 +2541,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2546 "bison_parser.cpp" +#line 2545 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2555,65 +2554,65 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2559 "bison_parser.cpp" +#line 2558 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2565 "bison_parser.cpp" +#line 2564 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2571 "bison_parser.cpp" +#line 2570 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2577 "bison_parser.cpp" +#line 2576 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2583 "bison_parser.cpp" +#line 2582 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2589 "bison_parser.cpp" +#line 2588 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2595 "bison_parser.cpp" +#line 2594 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2601 "bison_parser.cpp" +#line 2600 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2607 "bison_parser.cpp" +#line 2606 "bison_parser.cpp" break; case YYSYMBOL_window_expr: /* window_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2613 "bison_parser.cpp" +#line 2612 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2622,185 +2621,185 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2626 "bison_parser.cpp" +#line 2625 "bison_parser.cpp" break; case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2632 "bison_parser.cpp" +#line 2631 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2638 "bison_parser.cpp" +#line 2637 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2644 "bison_parser.cpp" +#line 2643 "bison_parser.cpp" break; case YYSYMBOL_case_expr: /* case_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2650 "bison_parser.cpp" +#line 2649 "bison_parser.cpp" break; case YYSYMBOL_case_list: /* case_list */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2656 "bison_parser.cpp" +#line 2655 "bison_parser.cpp" break; case YYSYMBOL_exists_expr: /* exists_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2662 "bison_parser.cpp" +#line 2661 "bison_parser.cpp" break; case YYSYMBOL_comp_expr: /* comp_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2668 "bison_parser.cpp" +#line 2667 "bison_parser.cpp" break; case YYSYMBOL_function_expr: /* function_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2674 "bison_parser.cpp" +#line 2673 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2680 "bison_parser.cpp" +#line 2679 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2686 "bison_parser.cpp" +#line 2685 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2692 "bison_parser.cpp" +#line 2691 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2698 "bison_parser.cpp" +#line 2697 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2704 "bison_parser.cpp" +#line 2703 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2710 "bison_parser.cpp" +#line 2709 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2716 "bison_parser.cpp" +#line 2715 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2722 "bison_parser.cpp" +#line 2721 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2728 "bison_parser.cpp" +#line 2727 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2734 "bison_parser.cpp" +#line 2733 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2740 "bison_parser.cpp" +#line 2739 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2746 "bison_parser.cpp" +#line 2745 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2752 "bison_parser.cpp" +#line 2751 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2758 "bison_parser.cpp" +#line 2757 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2764 "bison_parser.cpp" +#line 2763 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2770 "bison_parser.cpp" +#line 2769 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2776 "bison_parser.cpp" +#line 2775 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2782 "bison_parser.cpp" +#line 2781 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2788 "bison_parser.cpp" +#line 2787 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2794 "bison_parser.cpp" +#line 2793 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2800 "bison_parser.cpp" +#line 2799 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 182 "bison_parser.y" +#line 181 "bison_parser.y" { if (((*yyvaluep).table_vec)) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2809,134 +2808,134 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2813 "bison_parser.cpp" +#line 2812 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2819 "bison_parser.cpp" +#line 2818 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2825 "bison_parser.cpp" +#line 2824 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 169 "bison_parser.y" +#line 168 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2834 "bison_parser.cpp" +#line 2833 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 181 "bison_parser.y" +#line 180 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2840 "bison_parser.cpp" +#line 2839 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2846 "bison_parser.cpp" +#line 2845 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2852 "bison_parser.cpp" +#line 2851 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2858 "bison_parser.cpp" +#line 2857 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2864 "bison_parser.cpp" +#line 2863 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2870 "bison_parser.cpp" +#line 2869 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2876 "bison_parser.cpp" +#line 2875 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2882 "bison_parser.cpp" +#line 2881 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2888 "bison_parser.cpp" +#line 2887 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2894 "bison_parser.cpp" +#line 2893 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2900 "bison_parser.cpp" +#line 2899 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2906 "bison_parser.cpp" +#line 2905 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2912 "bison_parser.cpp" +#line 2911 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2918 "bison_parser.cpp" +#line 2917 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2924 "bison_parser.cpp" +#line 2923 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 168 "bison_parser.y" +#line 167 "bison_parser.y" { } -#line 2930 "bison_parser.cpp" +#line 2929 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 190 "bison_parser.y" +#line 189 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2936 "bison_parser.cpp" +#line 2935 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 173 "bison_parser.y" +#line 172 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2945,7 +2944,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2949 "bison_parser.cpp" +#line 2948 "bison_parser.cpp" break; default: @@ -3042,7 +3041,7 @@ YYLTYPE yylloc = yyloc_default; /* User initialization code. */ -#line 76 "bison_parser.y" +#line 75 "bison_parser.y" { // Initialize yylloc.first_column = 0; @@ -3053,7 +3052,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3057 "bison_parser.cpp" +#line 3056 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3264,7 +3263,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 321 "bison_parser.y" +#line 320 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3282,236 +3281,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3286 "bison_parser.cpp" +#line 3285 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 340 "bison_parser.y" +#line 339 "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 3297 "bison_parser.cpp" +#line 3296 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 346 "bison_parser.y" +#line 345 "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 3308 "bison_parser.cpp" +#line 3307 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 353 "bison_parser.y" +#line 352 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3317 "bison_parser.cpp" +#line 3316 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 357 "bison_parser.y" +#line 356 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3326 "bison_parser.cpp" +#line 3325 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 361 "bison_parser.y" +#line 360 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3332 "bison_parser.cpp" +#line 3331 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 362 "bison_parser.y" +#line 361 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3338 "bison_parser.cpp" +#line 3337 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 363 "bison_parser.y" +#line 362 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3344 "bison_parser.cpp" +#line 3343 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 365 "bison_parser.y" +#line 364 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3350 "bison_parser.cpp" +#line 3349 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 366 "bison_parser.y" +#line 365 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3356 "bison_parser.cpp" +#line 3355 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 367 "bison_parser.y" +#line 366 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3362 "bison_parser.cpp" +#line 3361 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 368 "bison_parser.y" +#line 367 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3368 "bison_parser.cpp" +#line 3367 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 369 "bison_parser.y" +#line 368 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3374 "bison_parser.cpp" +#line 3373 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 370 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3380 "bison_parser.cpp" +#line 3379 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 371 "bison_parser.y" +#line 370 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3386 "bison_parser.cpp" +#line 3385 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 372 "bison_parser.y" +#line 371 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3392 "bison_parser.cpp" +#line 3391 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 373 "bison_parser.y" +#line 372 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3398 "bison_parser.cpp" +#line 3397 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 374 "bison_parser.y" +#line 373 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3404 "bison_parser.cpp" +#line 3403 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 380 "bison_parser.y" +#line 379 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3410 "bison_parser.cpp" +#line 3409 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 381 "bison_parser.y" +#line 380 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3416 "bison_parser.cpp" +#line 3415 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 383 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3425 "bison_parser.cpp" +#line 3424 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 387 "bison_parser.y" +#line 386 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3434 "bison_parser.cpp" +#line 3433 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 392 "bison_parser.y" +#line 391 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3443 "bison_parser.cpp" +#line 3442 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 396 "bison_parser.y" +#line 395 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3453 "bison_parser.cpp" +#line 3452 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 406 "bison_parser.y" +#line 405 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3459 "bison_parser.cpp" +#line 3458 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 407 "bison_parser.y" +#line 406 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3465 "bison_parser.cpp" +#line 3464 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 408 "bison_parser.y" +#line 407 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3471 "bison_parser.cpp" +#line 3470 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 416 "bison_parser.y" +#line 415 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3481 "bison_parser.cpp" +#line 3480 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 424 "bison_parser.y" +#line 423 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3490 "bison_parser.cpp" +#line 3489 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 428 "bison_parser.y" +#line 427 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3500 "bison_parser.cpp" +#line 3499 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 439 "bison_parser.y" +#line 438 "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 3511 "bison_parser.cpp" +#line 3510 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_file_type opt_where */ -#line 445 "bison_parser.y" +#line 444 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3519,11 +3518,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.import_stmt)->whereClause = (yyvsp[0].expr); } -#line 3523 "bison_parser.cpp" +#line 3522 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 453 "bison_parser.y" +#line 452 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3538,79 +3537,79 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3542 "bison_parser.cpp" +#line 3541 "bison_parser.cpp" break; case 38: /* file_path: string_literal */ -#line 468 "bison_parser.y" +#line 467 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3551 "bison_parser.cpp" +#line 3550 "bison_parser.cpp" break; case 39: /* opt_file_type: WITH FORMAT file_type */ -#line 473 "bison_parser.y" +#line 472 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3557 "bison_parser.cpp" +#line 3556 "bison_parser.cpp" break; case 40: /* opt_file_type: %empty */ -#line 474 "bison_parser.y" +#line 473 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3563 "bison_parser.cpp" +#line 3562 "bison_parser.cpp" break; case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 480 "bison_parser.y" +#line 479 "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 3574 "bison_parser.cpp" +#line 3573 "bison_parser.cpp" break; case 42: /* export_statement: COPY select_with_paren TO file_path opt_file_type */ -#line 486 "bison_parser.y" +#line 485 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->select = (yyvsp[-3].select_stmt); } -#line 3584 "bison_parser.cpp" +#line 3583 "bison_parser.cpp" break; case 43: /* show_statement: SHOW TABLES */ -#line 497 "bison_parser.y" +#line 496 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3590 "bison_parser.cpp" +#line 3589 "bison_parser.cpp" break; case 44: /* show_statement: SHOW COLUMNS table_name */ -#line 498 "bison_parser.y" +#line 497 "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 3600 "bison_parser.cpp" +#line 3599 "bison_parser.cpp" break; case 45: /* show_statement: DESCRIBE table_name */ -#line 503 "bison_parser.y" +#line 502 "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 3610 "bison_parser.cpp" +#line 3609 "bison_parser.cpp" break; case 46: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 514 "bison_parser.y" +#line 513 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3624,11 +3623,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3628 "bison_parser.cpp" +#line 3627 "bison_parser.cpp" break; case 47: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 527 "bison_parser.y" +#line 526 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3641,11 +3640,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3645 "bison_parser.cpp" +#line 3644 "bison_parser.cpp" break; case 48: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 539 "bison_parser.y" +#line 538 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3653,11 +3652,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3657 "bison_parser.cpp" +#line 3656 "bison_parser.cpp" break; case 49: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 546 "bison_parser.y" +#line 545 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3665,11 +3664,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3669 "bison_parser.cpp" +#line 3668 "bison_parser.cpp" break; case 50: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 553 "bison_parser.y" +#line 552 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3678,371 +3677,371 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3682 "bison_parser.cpp" +#line 3681 "bison_parser.cpp" break; case 51: /* opt_not_exists: IF NOT EXISTS */ -#line 562 "bison_parser.y" +#line 561 "bison_parser.y" { (yyval.bval) = true; } -#line 3688 "bison_parser.cpp" +#line 3687 "bison_parser.cpp" break; case 52: /* opt_not_exists: %empty */ -#line 563 "bison_parser.y" +#line 562 "bison_parser.y" { (yyval.bval) = false; } -#line 3694 "bison_parser.cpp" +#line 3693 "bison_parser.cpp" break; case 53: /* table_elem_commalist: table_elem */ -#line 565 "bison_parser.y" +#line 564 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3703 "bison_parser.cpp" +#line 3702 "bison_parser.cpp" break; case 54: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 569 "bison_parser.y" +#line 568 "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 3712 "bison_parser.cpp" +#line 3711 "bison_parser.cpp" break; case 55: /* table_elem: column_def */ -#line 574 "bison_parser.y" +#line 573 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3718 "bison_parser.cpp" +#line 3717 "bison_parser.cpp" break; case 56: /* table_elem: table_constraint */ -#line 575 "bison_parser.y" +#line 574 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3724 "bison_parser.cpp" +#line 3723 "bison_parser.cpp" break; case 57: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 577 "bison_parser.y" +#line 576 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_set)); if (!(yyval.column_t)->trySetNullableExplicit()) { yyerror(&yyloc, result, scanner, ("Conflicting nullability constraints for " + std::string{(yyvsp[-2].sval)}).c_str()); } } -#line 3735 "bison_parser.cpp" +#line 3734 "bison_parser.cpp" break; case 58: /* column_type: BIGINT */ -#line 584 "bison_parser.y" +#line 583 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3741 "bison_parser.cpp" +#line 3740 "bison_parser.cpp" break; case 59: /* column_type: BOOLEAN */ -#line 585 "bison_parser.y" +#line 584 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3747 "bison_parser.cpp" +#line 3746 "bison_parser.cpp" break; case 60: /* column_type: CHAR '(' INTVAL ')' */ -#line 586 "bison_parser.y" +#line 585 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3753 "bison_parser.cpp" +#line 3752 "bison_parser.cpp" break; case 61: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 587 "bison_parser.y" +#line 586 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3759 "bison_parser.cpp" +#line 3758 "bison_parser.cpp" break; case 62: /* column_type: DATE */ -#line 588 "bison_parser.y" +#line 587 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3765 "bison_parser.cpp" +#line 3764 "bison_parser.cpp" break; case 63: /* column_type: DATETIME */ -#line 589 "bison_parser.y" +#line 588 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3771 "bison_parser.cpp" +#line 3770 "bison_parser.cpp" break; case 64: /* column_type: DECIMAL opt_decimal_specification */ -#line 590 "bison_parser.y" +#line 589 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3780 "bison_parser.cpp" +#line 3779 "bison_parser.cpp" break; case 65: /* column_type: DOUBLE */ -#line 594 "bison_parser.y" +#line 593 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3786 "bison_parser.cpp" +#line 3785 "bison_parser.cpp" break; case 66: /* column_type: FLOAT */ -#line 595 "bison_parser.y" +#line 594 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3792 "bison_parser.cpp" +#line 3791 "bison_parser.cpp" break; case 67: /* column_type: INT */ -#line 596 "bison_parser.y" +#line 595 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3798 "bison_parser.cpp" +#line 3797 "bison_parser.cpp" break; case 68: /* column_type: INTEGER */ -#line 597 "bison_parser.y" +#line 596 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3804 "bison_parser.cpp" +#line 3803 "bison_parser.cpp" break; case 69: /* column_type: LONG */ -#line 598 "bison_parser.y" +#line 597 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3810 "bison_parser.cpp" +#line 3809 "bison_parser.cpp" break; case 70: /* column_type: REAL */ -#line 599 "bison_parser.y" +#line 598 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3816 "bison_parser.cpp" +#line 3815 "bison_parser.cpp" break; case 71: /* column_type: SMALLINT */ -#line 600 "bison_parser.y" +#line 599 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3822 "bison_parser.cpp" +#line 3821 "bison_parser.cpp" break; case 72: /* column_type: TEXT */ -#line 601 "bison_parser.y" +#line 600 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3828 "bison_parser.cpp" +#line 3827 "bison_parser.cpp" break; case 73: /* column_type: TIME opt_time_precision */ -#line 602 "bison_parser.y" +#line 601 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3834 "bison_parser.cpp" +#line 3833 "bison_parser.cpp" break; case 74: /* column_type: TIMESTAMP */ -#line 603 "bison_parser.y" +#line 602 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3840 "bison_parser.cpp" +#line 3839 "bison_parser.cpp" break; case 75: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 604 "bison_parser.y" +#line 603 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3846 "bison_parser.cpp" +#line 3845 "bison_parser.cpp" break; case 76: /* opt_time_precision: '(' INTVAL ')' */ -#line 606 "bison_parser.y" +#line 605 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3852 "bison_parser.cpp" +#line 3851 "bison_parser.cpp" break; case 77: /* opt_time_precision: %empty */ -#line 607 "bison_parser.y" +#line 606 "bison_parser.y" { (yyval.ival) = 0; } -#line 3858 "bison_parser.cpp" +#line 3857 "bison_parser.cpp" break; case 78: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 609 "bison_parser.y" +#line 608 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3864 "bison_parser.cpp" +#line 3863 "bison_parser.cpp" break; case 79: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 610 "bison_parser.y" +#line 609 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3870 "bison_parser.cpp" +#line 3869 "bison_parser.cpp" break; case 80: /* opt_decimal_specification: %empty */ -#line 611 "bison_parser.y" +#line 610 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3876 "bison_parser.cpp" +#line 3875 "bison_parser.cpp" break; case 81: /* opt_column_constraints: column_constraint_set */ -#line 613 "bison_parser.y" +#line 612 "bison_parser.y" { (yyval.column_constraint_set) = (yyvsp[0].column_constraint_set); } -#line 3882 "bison_parser.cpp" +#line 3881 "bison_parser.cpp" break; case 82: /* opt_column_constraints: %empty */ -#line 614 "bison_parser.y" +#line 613 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); } -#line 3888 "bison_parser.cpp" +#line 3887 "bison_parser.cpp" break; case 83: /* column_constraint_set: column_constraint */ -#line 616 "bison_parser.y" +#line 615 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); (yyval.column_constraint_set)->insert((yyvsp[0].column_constraint_t)); } -#line 3897 "bison_parser.cpp" +#line 3896 "bison_parser.cpp" break; case 84: /* column_constraint_set: column_constraint_set column_constraint */ -#line 620 "bison_parser.y" +#line 619 "bison_parser.y" { (yyvsp[-1].column_constraint_set)->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraint_set) = (yyvsp[-1].column_constraint_set); } -#line 3906 "bison_parser.cpp" +#line 3905 "bison_parser.cpp" break; case 85: /* column_constraint: PRIMARY KEY */ -#line 625 "bison_parser.y" +#line 624 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 3912 "bison_parser.cpp" +#line 3911 "bison_parser.cpp" break; case 86: /* column_constraint: UNIQUE */ -#line 626 "bison_parser.y" +#line 625 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 3918 "bison_parser.cpp" +#line 3917 "bison_parser.cpp" break; case 87: /* column_constraint: NULL */ -#line 627 "bison_parser.y" +#line 626 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 3924 "bison_parser.cpp" +#line 3923 "bison_parser.cpp" break; case 88: /* column_constraint: NOT NULL */ -#line 628 "bison_parser.y" +#line 627 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 3930 "bison_parser.cpp" +#line 3929 "bison_parser.cpp" break; case 89: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 630 "bison_parser.y" +#line 629 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 3936 "bison_parser.cpp" +#line 3935 "bison_parser.cpp" break; case 90: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 631 "bison_parser.y" +#line 630 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 3942 "bison_parser.cpp" +#line 3941 "bison_parser.cpp" break; case 91: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 639 "bison_parser.y" +#line 638 "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 3953 "bison_parser.cpp" +#line 3952 "bison_parser.cpp" break; case 92: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 645 "bison_parser.y" +#line 644 "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 3964 "bison_parser.cpp" +#line 3963 "bison_parser.cpp" break; case 93: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 651 "bison_parser.y" +#line 650 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3974 "bison_parser.cpp" +#line 3973 "bison_parser.cpp" break; case 94: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 657 "bison_parser.y" +#line 656 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 3984 "bison_parser.cpp" +#line 3983 "bison_parser.cpp" break; case 95: /* opt_exists: IF EXISTS */ -#line 663 "bison_parser.y" +#line 662 "bison_parser.y" { (yyval.bval) = true; } -#line 3990 "bison_parser.cpp" +#line 3989 "bison_parser.cpp" break; case 96: /* opt_exists: %empty */ -#line 664 "bison_parser.y" +#line 663 "bison_parser.y" { (yyval.bval) = false; } -#line 3996 "bison_parser.cpp" +#line 3995 "bison_parser.cpp" break; case 97: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 671 "bison_parser.y" +#line 670 "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 4006 "bison_parser.cpp" +#line 4005 "bison_parser.cpp" break; case 98: /* alter_action: drop_action */ -#line 677 "bison_parser.y" +#line 676 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4012 "bison_parser.cpp" +#line 4011 "bison_parser.cpp" break; case 99: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 679 "bison_parser.y" +#line 678 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4021 "bison_parser.cpp" +#line 4020 "bison_parser.cpp" break; case 100: /* delete_statement: DELETE FROM table_name opt_where */ -#line 689 "bison_parser.y" +#line 688 "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 4032 "bison_parser.cpp" +#line 4031 "bison_parser.cpp" break; case 101: /* truncate_statement: TRUNCATE table_name */ -#line 696 "bison_parser.y" +#line 695 "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 4042 "bison_parser.cpp" +#line 4041 "bison_parser.cpp" break; case 102: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 707 "bison_parser.y" +#line 706 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4050,11 +4049,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4054 "bison_parser.cpp" +#line 4053 "bison_parser.cpp" break; case 103: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 714 "bison_parser.y" +#line 713 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4062,80 +4061,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4066 "bison_parser.cpp" +#line 4065 "bison_parser.cpp" break; case 104: /* opt_column_list: '(' ident_commalist ')' */ -#line 722 "bison_parser.y" +#line 721 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4072 "bison_parser.cpp" +#line 4071 "bison_parser.cpp" break; case 105: /* opt_column_list: %empty */ -#line 723 "bison_parser.y" +#line 722 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4078 "bison_parser.cpp" +#line 4077 "bison_parser.cpp" break; case 106: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 730 "bison_parser.y" +#line 729 "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 4089 "bison_parser.cpp" +#line 4088 "bison_parser.cpp" break; case 107: /* update_clause_commalist: update_clause */ -#line 737 "bison_parser.y" +#line 736 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4098 "bison_parser.cpp" +#line 4097 "bison_parser.cpp" break; case 108: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 741 "bison_parser.y" +#line 740 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4107 "bison_parser.cpp" +#line 4106 "bison_parser.cpp" break; case 109: /* update_clause: IDENTIFIER '=' expr */ -#line 746 "bison_parser.y" +#line 745 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4117 "bison_parser.cpp" +#line 4116 "bison_parser.cpp" break; case 110: /* select_statement: opt_with_clause select_with_paren */ -#line 756 "bison_parser.y" +#line 755 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4126 "bison_parser.cpp" +#line 4125 "bison_parser.cpp" break; case 111: /* select_statement: opt_with_clause select_no_paren */ -#line 760 "bison_parser.y" +#line 759 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4135 "bison_parser.cpp" +#line 4134 "bison_parser.cpp" break; case 112: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 764 "bison_parser.y" +#line 763 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4147,17 +4146,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4151 "bison_parser.cpp" +#line 4150 "bison_parser.cpp" break; case 115: /* select_within_set_operation_no_parentheses: select_clause */ -#line 778 "bison_parser.y" +#line 777 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4157 "bison_parser.cpp" +#line 4156 "bison_parser.cpp" break; case 116: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 779 "bison_parser.y" +#line 778 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4166,23 +4165,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 4170 "bison_parser.cpp" +#line 4169 "bison_parser.cpp" break; case 117: /* select_with_paren: '(' select_no_paren ')' */ -#line 788 "bison_parser.y" +#line 787 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4176 "bison_parser.cpp" +#line 4175 "bison_parser.cpp" break; case 118: /* select_with_paren: '(' select_with_paren ')' */ -#line 789 "bison_parser.y" +#line 788 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4182 "bison_parser.cpp" +#line 4181 "bison_parser.cpp" break; case 119: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 791 "bison_parser.y" +#line 790 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4197,11 +4196,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4201 "bison_parser.cpp" +#line 4200 "bison_parser.cpp" break; case 120: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 805 "bison_parser.y" +#line 804 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4213,59 +4212,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4217 "bison_parser.cpp" +#line 4216 "bison_parser.cpp" break; case 121: /* set_operator: set_type opt_all */ -#line 817 "bison_parser.y" +#line 816 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4226 "bison_parser.cpp" +#line 4225 "bison_parser.cpp" break; case 122: /* set_type: UNION */ -#line 822 "bison_parser.y" +#line 821 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4235 "bison_parser.cpp" +#line 4234 "bison_parser.cpp" break; case 123: /* set_type: INTERSECT */ -#line 826 "bison_parser.y" +#line 825 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4244 "bison_parser.cpp" +#line 4243 "bison_parser.cpp" break; case 124: /* set_type: EXCEPT */ -#line 830 "bison_parser.y" +#line 829 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4253 "bison_parser.cpp" +#line 4252 "bison_parser.cpp" break; case 125: /* opt_all: ALL */ -#line 835 "bison_parser.y" +#line 834 "bison_parser.y" { (yyval.bval) = true; } -#line 4259 "bison_parser.cpp" +#line 4258 "bison_parser.cpp" break; case 126: /* opt_all: %empty */ -#line 836 "bison_parser.y" +#line 835 "bison_parser.y" { (yyval.bval) = false; } -#line 4265 "bison_parser.cpp" +#line 4264 "bison_parser.cpp" break; case 127: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 838 "bison_parser.y" +#line 837 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4275,231 +4274,231 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4279 "bison_parser.cpp" +#line 4278 "bison_parser.cpp" break; case 128: /* opt_distinct: DISTINCT */ -#line 848 "bison_parser.y" +#line 847 "bison_parser.y" { (yyval.bval) = true; } -#line 4285 "bison_parser.cpp" +#line 4284 "bison_parser.cpp" break; case 129: /* opt_distinct: %empty */ -#line 849 "bison_parser.y" +#line 848 "bison_parser.y" { (yyval.bval) = false; } -#line 4291 "bison_parser.cpp" +#line 4290 "bison_parser.cpp" break; case 131: /* opt_from_clause: from_clause */ -#line 853 "bison_parser.y" +#line 852 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4297 "bison_parser.cpp" +#line 4296 "bison_parser.cpp" break; case 132: /* opt_from_clause: %empty */ -#line 854 "bison_parser.y" +#line 853 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4303 "bison_parser.cpp" +#line 4302 "bison_parser.cpp" break; case 133: /* from_clause: FROM table_ref */ -#line 856 "bison_parser.y" +#line 855 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4309 "bison_parser.cpp" +#line 4308 "bison_parser.cpp" break; case 134: /* opt_where: WHERE expr */ -#line 858 "bison_parser.y" +#line 857 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4315 "bison_parser.cpp" +#line 4314 "bison_parser.cpp" break; case 135: /* opt_where: %empty */ -#line 859 "bison_parser.y" +#line 858 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4321 "bison_parser.cpp" +#line 4320 "bison_parser.cpp" break; case 136: /* opt_group: GROUP BY expr_list opt_having */ -#line 861 "bison_parser.y" +#line 860 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4331 "bison_parser.cpp" +#line 4330 "bison_parser.cpp" break; case 137: /* opt_group: %empty */ -#line 866 "bison_parser.y" +#line 865 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4337 "bison_parser.cpp" +#line 4336 "bison_parser.cpp" break; case 138: /* opt_having: HAVING expr */ -#line 868 "bison_parser.y" +#line 867 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4343 "bison_parser.cpp" +#line 4342 "bison_parser.cpp" break; case 139: /* opt_having: %empty */ -#line 869 "bison_parser.y" +#line 868 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4349 "bison_parser.cpp" +#line 4348 "bison_parser.cpp" break; case 140: /* opt_order: ORDER BY order_list */ -#line 871 "bison_parser.y" +#line 870 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4355 "bison_parser.cpp" +#line 4354 "bison_parser.cpp" break; case 141: /* opt_order: %empty */ -#line 872 "bison_parser.y" +#line 871 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4361 "bison_parser.cpp" +#line 4360 "bison_parser.cpp" break; case 142: /* order_list: order_desc */ -#line 874 "bison_parser.y" +#line 873 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4370 "bison_parser.cpp" +#line 4369 "bison_parser.cpp" break; case 143: /* order_list: order_list ',' order_desc */ -#line 878 "bison_parser.y" +#line 877 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4379 "bison_parser.cpp" +#line 4378 "bison_parser.cpp" break; case 144: /* order_desc: expr opt_order_type */ -#line 883 "bison_parser.y" +#line 882 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4385 "bison_parser.cpp" +#line 4384 "bison_parser.cpp" break; case 145: /* opt_order_type: ASC */ -#line 885 "bison_parser.y" +#line 884 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4391 "bison_parser.cpp" +#line 4390 "bison_parser.cpp" break; case 146: /* opt_order_type: DESC */ -#line 886 "bison_parser.y" +#line 885 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4397 "bison_parser.cpp" +#line 4396 "bison_parser.cpp" break; case 147: /* opt_order_type: %empty */ -#line 887 "bison_parser.y" +#line 886 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4403 "bison_parser.cpp" +#line 4402 "bison_parser.cpp" break; case 148: /* opt_top: TOP int_literal */ -#line 891 "bison_parser.y" +#line 890 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4409 "bison_parser.cpp" +#line 4408 "bison_parser.cpp" break; case 149: /* opt_top: %empty */ -#line 892 "bison_parser.y" +#line 891 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4415 "bison_parser.cpp" +#line 4414 "bison_parser.cpp" break; case 150: /* opt_limit: LIMIT expr */ -#line 894 "bison_parser.y" +#line 893 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4421 "bison_parser.cpp" +#line 4420 "bison_parser.cpp" break; case 151: /* opt_limit: OFFSET expr */ -#line 895 "bison_parser.y" +#line 894 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4427 "bison_parser.cpp" +#line 4426 "bison_parser.cpp" break; case 152: /* opt_limit: LIMIT expr OFFSET expr */ -#line 896 "bison_parser.y" +#line 895 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4433 "bison_parser.cpp" +#line 4432 "bison_parser.cpp" break; case 153: /* opt_limit: LIMIT ALL */ -#line 897 "bison_parser.y" +#line 896 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4439 "bison_parser.cpp" +#line 4438 "bison_parser.cpp" break; case 154: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 898 "bison_parser.y" +#line 897 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4445 "bison_parser.cpp" +#line 4444 "bison_parser.cpp" break; case 155: /* opt_limit: %empty */ -#line 899 "bison_parser.y" +#line 898 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4451 "bison_parser.cpp" +#line 4450 "bison_parser.cpp" break; case 156: /* expr_list: expr_alias */ -#line 904 "bison_parser.y" +#line 903 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4460 "bison_parser.cpp" +#line 4459 "bison_parser.cpp" break; case 157: /* expr_list: expr_list ',' expr_alias */ -#line 908 "bison_parser.y" +#line 907 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4469 "bison_parser.cpp" +#line 4468 "bison_parser.cpp" break; case 158: /* opt_literal_list: literal_list */ -#line 913 "bison_parser.y" +#line 912 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4475 "bison_parser.cpp" +#line 4474 "bison_parser.cpp" break; case 159: /* opt_literal_list: %empty */ -#line 914 "bison_parser.y" +#line 913 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4481 "bison_parser.cpp" +#line 4480 "bison_parser.cpp" break; case 160: /* literal_list: literal */ -#line 916 "bison_parser.y" +#line 915 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4490 "bison_parser.cpp" +#line 4489 "bison_parser.cpp" break; case 161: /* literal_list: literal_list ',' literal */ -#line 920 "bison_parser.y" +#line 919 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4499 "bison_parser.cpp" +#line 4498 "bison_parser.cpp" break; case 162: /* expr_alias: expr opt_alias */ -#line 925 "bison_parser.y" +#line 924 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4507,499 +4506,499 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4511 "bison_parser.cpp" +#line 4510 "bison_parser.cpp" break; case 169: /* operand: '(' expr ')' */ -#line 935 "bison_parser.y" +#line 934 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4517 "bison_parser.cpp" +#line 4516 "bison_parser.cpp" break; case 179: /* operand: '(' select_no_paren ')' */ -#line 937 "bison_parser.y" +#line 936 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4525 "bison_parser.cpp" +#line 4524 "bison_parser.cpp" break; case 182: /* unary_expr: '-' operand */ -#line 943 "bison_parser.y" +#line 942 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4531 "bison_parser.cpp" +#line 4530 "bison_parser.cpp" break; case 183: /* unary_expr: NOT operand */ -#line 944 "bison_parser.y" +#line 943 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4537 "bison_parser.cpp" +#line 4536 "bison_parser.cpp" break; case 184: /* unary_expr: operand ISNULL */ -#line 945 "bison_parser.y" +#line 944 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4543 "bison_parser.cpp" +#line 4542 "bison_parser.cpp" break; case 185: /* unary_expr: operand IS NULL */ -#line 946 "bison_parser.y" +#line 945 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4549 "bison_parser.cpp" +#line 4548 "bison_parser.cpp" break; case 186: /* unary_expr: operand IS NOT NULL */ -#line 947 "bison_parser.y" +#line 946 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4555 "bison_parser.cpp" +#line 4554 "bison_parser.cpp" break; case 188: /* binary_expr: operand '-' operand */ -#line 949 "bison_parser.y" +#line 948 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4561 "bison_parser.cpp" +#line 4560 "bison_parser.cpp" break; case 189: /* binary_expr: operand '+' operand */ -#line 950 "bison_parser.y" +#line 949 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4567 "bison_parser.cpp" +#line 4566 "bison_parser.cpp" break; case 190: /* binary_expr: operand '/' operand */ -#line 951 "bison_parser.y" +#line 950 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4573 "bison_parser.cpp" +#line 4572 "bison_parser.cpp" break; case 191: /* binary_expr: operand '*' operand */ -#line 952 "bison_parser.y" +#line 951 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4579 "bison_parser.cpp" +#line 4578 "bison_parser.cpp" break; case 192: /* binary_expr: operand '%' operand */ -#line 953 "bison_parser.y" +#line 952 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4585 "bison_parser.cpp" +#line 4584 "bison_parser.cpp" break; case 193: /* binary_expr: operand '^' operand */ -#line 954 "bison_parser.y" +#line 953 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4591 "bison_parser.cpp" +#line 4590 "bison_parser.cpp" break; case 194: /* binary_expr: operand LIKE operand */ -#line 955 "bison_parser.y" +#line 954 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4597 "bison_parser.cpp" +#line 4596 "bison_parser.cpp" break; case 195: /* binary_expr: operand NOT LIKE operand */ -#line 956 "bison_parser.y" +#line 955 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4603 "bison_parser.cpp" +#line 4602 "bison_parser.cpp" break; case 196: /* binary_expr: operand ILIKE operand */ -#line 957 "bison_parser.y" +#line 956 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4609 "bison_parser.cpp" +#line 4608 "bison_parser.cpp" break; case 197: /* binary_expr: operand CONCAT operand */ -#line 958 "bison_parser.y" +#line 957 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4615 "bison_parser.cpp" +#line 4614 "bison_parser.cpp" break; case 198: /* logic_expr: expr AND expr */ -#line 960 "bison_parser.y" +#line 959 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4621 "bison_parser.cpp" +#line 4620 "bison_parser.cpp" break; case 199: /* logic_expr: expr OR expr */ -#line 961 "bison_parser.y" +#line 960 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4627 "bison_parser.cpp" +#line 4626 "bison_parser.cpp" break; case 200: /* in_expr: operand IN '(' expr_list ')' */ -#line 963 "bison_parser.y" +#line 962 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4633 "bison_parser.cpp" +#line 4632 "bison_parser.cpp" break; case 201: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 964 "bison_parser.y" +#line 963 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4639 "bison_parser.cpp" +#line 4638 "bison_parser.cpp" break; case 202: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 965 "bison_parser.y" +#line 964 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4645 "bison_parser.cpp" +#line 4644 "bison_parser.cpp" break; case 203: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 966 "bison_parser.y" +#line 965 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4651 "bison_parser.cpp" +#line 4650 "bison_parser.cpp" break; case 204: /* window_expr: operand OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 970 "bison_parser.y" +#line 969 "bison_parser.y" { (yyval.expr) = Expr::makeWindow((yyvsp[-6].expr), (yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 4657 "bison_parser.cpp" +#line 4656 "bison_parser.cpp" break; case 205: /* opt_partition: PARTITION BY expr_list */ -#line 972 "bison_parser.y" +#line 971 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4663 "bison_parser.cpp" +#line 4662 "bison_parser.cpp" break; case 206: /* opt_partition: %empty */ -#line 973 "bison_parser.y" +#line 972 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4669 "bison_parser.cpp" +#line 4668 "bison_parser.cpp" break; case 207: /* opt_frame_clause: frame_type frame_bound */ -#line 975 "bison_parser.y" +#line 974 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), nullptr}; } -#line 4675 "bison_parser.cpp" +#line 4674 "bison_parser.cpp" break; case 208: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 976 "bison_parser.y" +#line 975 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 4681 "bison_parser.cpp" +#line 4680 "bison_parser.cpp" break; case 209: /* opt_frame_clause: %empty */ -#line 977 "bison_parser.y" +#line 976 "bison_parser.y" { (yyval.frame_description) = nullptr; } -#line 4687 "bison_parser.cpp" +#line 4686 "bison_parser.cpp" break; case 210: /* frame_type: RANGE */ -#line 979 "bison_parser.y" +#line 978 "bison_parser.y" { (yyval.frame_type) = FrameType::kRange; } -#line 4693 "bison_parser.cpp" +#line 4692 "bison_parser.cpp" break; case 211: /* frame_type: ROWS */ -#line 980 "bison_parser.y" +#line 979 "bison_parser.y" { (yyval.frame_type) = FrameType::kRows; } -#line 4699 "bison_parser.cpp" +#line 4698 "bison_parser.cpp" break; case 212: /* frame_type: GROUPS */ -#line 981 "bison_parser.y" +#line 980 "bison_parser.y" { (yyval.frame_type) = FrameType::kGroups; } -#line 4705 "bison_parser.cpp" +#line 4704 "bison_parser.cpp" break; case 213: /* frame_bound: UNBOUNDED PRECEDING */ -#line 983 "bison_parser.y" +#line 982 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 4711 "bison_parser.cpp" +#line 4710 "bison_parser.cpp" break; case 214: /* frame_bound: INTVAL PRECEDING */ -#line 984 "bison_parser.y" +#line 983 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 4717 "bison_parser.cpp" +#line 4716 "bison_parser.cpp" break; case 215: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 985 "bison_parser.y" +#line 984 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 4723 "bison_parser.cpp" +#line 4722 "bison_parser.cpp" break; case 216: /* frame_bound: INTVAL FOLLOWING */ -#line 986 "bison_parser.y" +#line 985 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 4729 "bison_parser.cpp" +#line 4728 "bison_parser.cpp" break; case 217: /* frame_bound: CURRENT_ROW */ -#line 987 "bison_parser.y" +#line 986 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 4735 "bison_parser.cpp" +#line 4734 "bison_parser.cpp" break; case 218: /* case_expr: CASE expr case_list END */ -#line 992 "bison_parser.y" +#line 990 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4741 "bison_parser.cpp" +#line 4740 "bison_parser.cpp" break; case 219: /* case_expr: CASE expr case_list ELSE expr END */ -#line 993 "bison_parser.y" +#line 991 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4747 "bison_parser.cpp" +#line 4746 "bison_parser.cpp" break; case 220: /* case_expr: CASE case_list END */ -#line 994 "bison_parser.y" +#line 992 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4753 "bison_parser.cpp" +#line 4752 "bison_parser.cpp" break; case 221: /* case_expr: CASE case_list ELSE expr END */ -#line 995 "bison_parser.y" +#line 993 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4759 "bison_parser.cpp" +#line 4758 "bison_parser.cpp" break; case 222: /* case_list: WHEN expr THEN expr */ -#line 997 "bison_parser.y" +#line 995 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4765 "bison_parser.cpp" +#line 4764 "bison_parser.cpp" break; case 223: /* case_list: case_list WHEN expr THEN expr */ -#line 998 "bison_parser.y" +#line 996 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4771 "bison_parser.cpp" +#line 4770 "bison_parser.cpp" break; case 224: /* exists_expr: EXISTS '(' select_no_paren ')' */ -#line 1000 "bison_parser.y" +#line 998 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4777 "bison_parser.cpp" +#line 4776 "bison_parser.cpp" break; case 225: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ -#line 1001 "bison_parser.y" +#line 999 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4783 "bison_parser.cpp" +#line 4782 "bison_parser.cpp" break; case 226: /* comp_expr: operand '=' operand */ -#line 1003 "bison_parser.y" +#line 1001 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4789 "bison_parser.cpp" +#line 4788 "bison_parser.cpp" break; case 227: /* comp_expr: operand EQUALS operand */ -#line 1004 "bison_parser.y" +#line 1002 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4795 "bison_parser.cpp" +#line 4794 "bison_parser.cpp" break; case 228: /* comp_expr: operand NOTEQUALS operand */ -#line 1005 "bison_parser.y" +#line 1003 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4801 "bison_parser.cpp" +#line 4800 "bison_parser.cpp" break; case 229: /* comp_expr: operand '<' operand */ -#line 1006 "bison_parser.y" +#line 1004 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4807 "bison_parser.cpp" +#line 4806 "bison_parser.cpp" break; case 230: /* comp_expr: operand '>' operand */ -#line 1007 "bison_parser.y" +#line 1005 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4813 "bison_parser.cpp" +#line 4812 "bison_parser.cpp" break; case 231: /* comp_expr: operand LESSEQ operand */ -#line 1008 "bison_parser.y" +#line 1006 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4819 "bison_parser.cpp" +#line 4818 "bison_parser.cpp" break; case 232: /* comp_expr: operand GREATEREQ operand */ -#line 1009 "bison_parser.y" +#line 1007 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4825 "bison_parser.cpp" +#line 4824 "bison_parser.cpp" break; case 233: /* function_expr: IDENTIFIER '(' ')' */ -#line 1011 "bison_parser.y" +#line 1009 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4831 "bison_parser.cpp" +#line 4830 "bison_parser.cpp" break; case 234: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 1012 "bison_parser.y" +#line 1010 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4837 "bison_parser.cpp" +#line 4836 "bison_parser.cpp" break; case 235: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1014 "bison_parser.y" +#line 1012 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4843 "bison_parser.cpp" +#line 4842 "bison_parser.cpp" break; case 236: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1016 "bison_parser.y" +#line 1014 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4849 "bison_parser.cpp" +#line 4848 "bison_parser.cpp" break; case 237: /* datetime_field: SECOND */ -#line 1018 "bison_parser.y" +#line 1016 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4855 "bison_parser.cpp" +#line 4854 "bison_parser.cpp" break; case 238: /* datetime_field: MINUTE */ -#line 1019 "bison_parser.y" +#line 1017 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4861 "bison_parser.cpp" +#line 4860 "bison_parser.cpp" break; case 239: /* datetime_field: HOUR */ -#line 1020 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4867 "bison_parser.cpp" +#line 4866 "bison_parser.cpp" break; case 240: /* datetime_field: DAY */ -#line 1021 "bison_parser.y" +#line 1019 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4873 "bison_parser.cpp" +#line 4872 "bison_parser.cpp" break; case 241: /* datetime_field: MONTH */ -#line 1022 "bison_parser.y" +#line 1020 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4879 "bison_parser.cpp" +#line 4878 "bison_parser.cpp" break; case 242: /* datetime_field: YEAR */ -#line 1023 "bison_parser.y" +#line 1021 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4885 "bison_parser.cpp" +#line 4884 "bison_parser.cpp" break; case 243: /* datetime_field_plural: SECONDS */ -#line 1025 "bison_parser.y" +#line 1023 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4891 "bison_parser.cpp" +#line 4890 "bison_parser.cpp" break; case 244: /* datetime_field_plural: MINUTES */ -#line 1026 "bison_parser.y" +#line 1024 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4897 "bison_parser.cpp" +#line 4896 "bison_parser.cpp" break; case 245: /* datetime_field_plural: HOURS */ -#line 1027 "bison_parser.y" +#line 1025 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4903 "bison_parser.cpp" +#line 4902 "bison_parser.cpp" break; case 246: /* datetime_field_plural: DAYS */ -#line 1028 "bison_parser.y" +#line 1026 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4909 "bison_parser.cpp" +#line 4908 "bison_parser.cpp" break; case 247: /* datetime_field_plural: MONTHS */ -#line 1029 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4915 "bison_parser.cpp" +#line 4914 "bison_parser.cpp" break; case 248: /* datetime_field_plural: YEARS */ -#line 1030 "bison_parser.y" +#line 1028 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4921 "bison_parser.cpp" +#line 4920 "bison_parser.cpp" break; case 251: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1034 "bison_parser.y" +#line 1032 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4927 "bison_parser.cpp" +#line 4926 "bison_parser.cpp" break; case 252: /* array_index: operand '[' int_literal ']' */ -#line 1036 "bison_parser.y" +#line 1034 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4933 "bison_parser.cpp" +#line 4932 "bison_parser.cpp" break; case 253: /* between_expr: operand BETWEEN operand AND operand */ -#line 1038 "bison_parser.y" +#line 1036 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4939 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; case 254: /* column_name: IDENTIFIER */ -#line 1040 "bison_parser.y" +#line 1038 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4945 "bison_parser.cpp" +#line 4944 "bison_parser.cpp" break; case 255: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1041 "bison_parser.y" +#line 1039 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4951 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; case 256: /* column_name: '*' */ -#line 1042 "bison_parser.y" +#line 1040 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4957 "bison_parser.cpp" +#line 4956 "bison_parser.cpp" break; case 257: /* column_name: IDENTIFIER '.' '*' */ -#line 1043 "bison_parser.y" +#line 1041 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4963 "bison_parser.cpp" +#line 4962 "bison_parser.cpp" break; case 265: /* string_literal: STRING */ -#line 1047 "bison_parser.y" +#line 1045 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4969 "bison_parser.cpp" +#line 4968 "bison_parser.cpp" break; case 266: /* bool_literal: TRUE */ -#line 1049 "bison_parser.y" +#line 1047 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4975 "bison_parser.cpp" +#line 4974 "bison_parser.cpp" break; case 267: /* bool_literal: FALSE */ -#line 1050 "bison_parser.y" +#line 1048 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4981 "bison_parser.cpp" +#line 4980 "bison_parser.cpp" break; case 268: /* num_literal: FLOATVAL */ -#line 1052 "bison_parser.y" +#line 1050 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4987 "bison_parser.cpp" +#line 4986 "bison_parser.cpp" break; case 270: /* int_literal: INTVAL */ -#line 1055 "bison_parser.y" +#line 1053 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4993 "bison_parser.cpp" +#line 4992 "bison_parser.cpp" break; case 271: /* null_literal: NULL */ -#line 1057 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4999 "bison_parser.cpp" +#line 4998 "bison_parser.cpp" break; case 272: /* date_literal: DATE STRING */ -#line 1059 "bison_parser.y" +#line 1057 "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 @@ -5010,20 +5009,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5014 "bison_parser.cpp" +#line 5013 "bison_parser.cpp" break; case 273: /* interval_literal: int_literal duration_field */ -#line 1070 "bison_parser.y" +#line 1068 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 5023 "bison_parser.cpp" +#line 5022 "bison_parser.cpp" break; case 274: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1074 "bison_parser.y" +#line 1072 "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 @@ -5035,11 +5034,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5039 "bison_parser.cpp" +#line 5038 "bison_parser.cpp" break; case 275: /* interval_literal: INTERVAL STRING */ -#line 1085 "bison_parser.y" +#line 1083 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5071,61 +5070,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5075 "bison_parser.cpp" +#line 5074 "bison_parser.cpp" break; case 276: /* param_expr: '?' */ -#line 1117 "bison_parser.y" +#line 1115 "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 5085 "bison_parser.cpp" +#line 5084 "bison_parser.cpp" break; case 278: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1126 "bison_parser.y" +#line 1124 "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 5096 "bison_parser.cpp" +#line 5095 "bison_parser.cpp" break; case 282: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1135 "bison_parser.y" +#line 1133 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5107 "bison_parser.cpp" +#line 5106 "bison_parser.cpp" break; case 283: /* table_ref_commalist: table_ref_atomic */ -#line 1142 "bison_parser.y" +#line 1140 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5116 "bison_parser.cpp" +#line 5115 "bison_parser.cpp" break; case 284: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1146 "bison_parser.y" +#line 1144 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5125 "bison_parser.cpp" +#line 5124 "bison_parser.cpp" break; case 285: /* table_ref_name: table_name opt_table_alias */ -#line 1151 "bison_parser.y" +#line 1149 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5133,215 +5132,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5137 "bison_parser.cpp" +#line 5136 "bison_parser.cpp" break; case 286: /* table_ref_name_no_alias: table_name */ -#line 1159 "bison_parser.y" +#line 1157 "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 5147 "bison_parser.cpp" +#line 5146 "bison_parser.cpp" break; case 287: /* table_name: IDENTIFIER */ -#line 1165 "bison_parser.y" +#line 1163 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5156 "bison_parser.cpp" +#line 5155 "bison_parser.cpp" break; case 288: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1169 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5165 "bison_parser.cpp" +#line 5164 "bison_parser.cpp" break; case 289: /* opt_index_name: IDENTIFIER */ -#line 1174 "bison_parser.y" +#line 1172 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5171 "bison_parser.cpp" +#line 5170 "bison_parser.cpp" break; case 290: /* opt_index_name: %empty */ -#line 1175 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5177 "bison_parser.cpp" +#line 5176 "bison_parser.cpp" break; case 292: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1177 "bison_parser.y" +#line 1175 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5183 "bison_parser.cpp" +#line 5182 "bison_parser.cpp" break; case 294: /* opt_table_alias: %empty */ -#line 1179 "bison_parser.y" +#line 1177 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5189 "bison_parser.cpp" +#line 5188 "bison_parser.cpp" break; case 295: /* alias: AS IDENTIFIER */ -#line 1181 "bison_parser.y" +#line 1179 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5195 "bison_parser.cpp" +#line 5194 "bison_parser.cpp" break; case 296: /* alias: IDENTIFIER */ -#line 1182 "bison_parser.y" +#line 1180 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5201 "bison_parser.cpp" +#line 5200 "bison_parser.cpp" break; case 298: /* opt_alias: %empty */ -#line 1184 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5207 "bison_parser.cpp" +#line 5206 "bison_parser.cpp" break; case 299: /* opt_locking_clause: opt_locking_clause_list */ -#line 1190 "bison_parser.y" +#line 1188 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5213 "bison_parser.cpp" +#line 5212 "bison_parser.cpp" break; case 300: /* opt_locking_clause: %empty */ -#line 1191 "bison_parser.y" +#line 1189 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5219 "bison_parser.cpp" +#line 5218 "bison_parser.cpp" break; case 301: /* opt_locking_clause_list: locking_clause */ -#line 1193 "bison_parser.y" +#line 1191 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5228 "bison_parser.cpp" +#line 5227 "bison_parser.cpp" break; case 302: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1197 "bison_parser.y" +#line 1195 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5237 "bison_parser.cpp" +#line 5236 "bison_parser.cpp" break; case 303: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1202 "bison_parser.y" +#line 1200 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5248 "bison_parser.cpp" +#line 5247 "bison_parser.cpp" break; case 304: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1208 "bison_parser.y" +#line 1206 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5259 "bison_parser.cpp" +#line 5258 "bison_parser.cpp" break; case 305: /* row_lock_mode: UPDATE */ -#line 1215 "bison_parser.y" +#line 1213 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5265 "bison_parser.cpp" +#line 5264 "bison_parser.cpp" break; case 306: /* row_lock_mode: NO KEY UPDATE */ -#line 1216 "bison_parser.y" +#line 1214 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5271 "bison_parser.cpp" +#line 5270 "bison_parser.cpp" break; case 307: /* row_lock_mode: SHARE */ -#line 1217 "bison_parser.y" +#line 1215 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5277 "bison_parser.cpp" +#line 5276 "bison_parser.cpp" break; case 308: /* row_lock_mode: KEY SHARE */ -#line 1218 "bison_parser.y" +#line 1216 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5283 "bison_parser.cpp" +#line 5282 "bison_parser.cpp" break; case 309: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1220 "bison_parser.y" +#line 1218 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5289 "bison_parser.cpp" +#line 5288 "bison_parser.cpp" break; case 310: /* opt_row_lock_policy: NOWAIT */ -#line 1221 "bison_parser.y" +#line 1219 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5295 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; case 311: /* opt_row_lock_policy: %empty */ -#line 1222 "bison_parser.y" +#line 1220 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5301 "bison_parser.cpp" +#line 5300 "bison_parser.cpp" break; case 313: /* opt_with_clause: %empty */ -#line 1228 "bison_parser.y" +#line 1226 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5307 "bison_parser.cpp" +#line 5306 "bison_parser.cpp" break; case 314: /* with_clause: WITH with_description_list */ -#line 1230 "bison_parser.y" +#line 1228 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5313 "bison_parser.cpp" +#line 5312 "bison_parser.cpp" break; case 315: /* with_description_list: with_description */ -#line 1232 "bison_parser.y" +#line 1230 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5322 "bison_parser.cpp" +#line 5321 "bison_parser.cpp" break; case 316: /* with_description_list: with_description_list ',' with_description */ -#line 1236 "bison_parser.y" +#line 1234 "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 5331 "bison_parser.cpp" +#line 5330 "bison_parser.cpp" break; case 317: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1241 "bison_parser.y" +#line 1239 "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 5341 "bison_parser.cpp" +#line 5340 "bison_parser.cpp" break; case 318: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1251 "bison_parser.y" +#line 1249 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5349,11 +5348,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5353 "bison_parser.cpp" +#line 5352 "bison_parser.cpp" break; case 319: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1258 "bison_parser.y" +#line 1256 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5362,11 +5361,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5366 "bison_parser.cpp" +#line 5365 "bison_parser.cpp" break; case 320: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1266 "bison_parser.y" +#line 1264 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5390,89 +5389,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5394 "bison_parser.cpp" +#line 5393 "bison_parser.cpp" break; case 321: /* opt_join_type: INNER */ -#line 1290 "bison_parser.y" +#line 1288 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5400 "bison_parser.cpp" +#line 5399 "bison_parser.cpp" break; case 322: /* opt_join_type: LEFT OUTER */ -#line 1291 "bison_parser.y" +#line 1289 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5406 "bison_parser.cpp" +#line 5405 "bison_parser.cpp" break; case 323: /* opt_join_type: LEFT */ -#line 1292 "bison_parser.y" +#line 1290 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5412 "bison_parser.cpp" +#line 5411 "bison_parser.cpp" break; case 324: /* opt_join_type: RIGHT OUTER */ -#line 1293 "bison_parser.y" +#line 1291 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5418 "bison_parser.cpp" +#line 5417 "bison_parser.cpp" break; case 325: /* opt_join_type: RIGHT */ -#line 1294 "bison_parser.y" +#line 1292 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5424 "bison_parser.cpp" +#line 5423 "bison_parser.cpp" break; case 326: /* opt_join_type: FULL OUTER */ -#line 1295 "bison_parser.y" +#line 1293 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5430 "bison_parser.cpp" +#line 5429 "bison_parser.cpp" break; case 327: /* opt_join_type: OUTER */ -#line 1296 "bison_parser.y" +#line 1294 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5436 "bison_parser.cpp" +#line 5435 "bison_parser.cpp" break; case 328: /* opt_join_type: FULL */ -#line 1297 "bison_parser.y" +#line 1295 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5442 "bison_parser.cpp" +#line 5441 "bison_parser.cpp" break; case 329: /* opt_join_type: CROSS */ -#line 1298 "bison_parser.y" +#line 1296 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5448 "bison_parser.cpp" +#line 5447 "bison_parser.cpp" break; case 330: /* opt_join_type: %empty */ -#line 1299 "bison_parser.y" +#line 1297 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5454 "bison_parser.cpp" +#line 5453 "bison_parser.cpp" break; case 334: /* ident_commalist: IDENTIFIER */ -#line 1310 "bison_parser.y" +#line 1308 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5463 "bison_parser.cpp" +#line 5462 "bison_parser.cpp" break; case 335: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1314 "bison_parser.y" +#line 1312 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5472 "bison_parser.cpp" +#line 5471 "bison_parser.cpp" break; -#line 5476 "bison_parser.cpp" +#line 5475 "bison_parser.cpp" default: break; } @@ -5701,11 +5700,11 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1320 "bison_parser.y" +#line 1318 "bison_parser.y" -// clang-format on -/********************************* + // clang-format on + /********************************* ** Section 4: Additional C code *********************************/ -/* empty */ + /* empty */ diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 90000367..286eabda 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -36,24 +36,24 @@ private implementation details that can be changed or removed. */ #ifndef YY_HSQL_BISON_PARSER_H_INCLUDED -#define YY_HSQL_BISON_PARSER_H_INCLUDED +# define YY_HSQL_BISON_PARSER_H_INCLUDED /* Debug traces. */ #ifndef HSQL_DEBUG -#if defined YYDEBUG +# if defined YYDEBUG #if YYDEBUG -#define HSQL_DEBUG 1 -#else -#define HSQL_DEBUG 0 -#endif -#else /* ! defined YYDEBUG */ -#define HSQL_DEBUG 0 -#endif /* ! defined YYDEBUG */ -#endif /* ! defined HSQL_DEBUG */ +# define HSQL_DEBUG 1 +# else +# define HSQL_DEBUG 0 +# endif +# else /* ! defined YYDEBUG */ +# define HSQL_DEBUG 0 +# endif /* ! defined YYDEBUG */ +#endif /* ! defined HSQL_DEBUG */ #if HSQL_DEBUG extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 39 "bison_parser.y" +#line 38 "bison_parser.y" // %code requires block @@ -80,196 +80,198 @@ extern int hsql_debug; /* Token kinds. */ #ifndef HSQL_TOKENTYPE -#define HSQL_TOKENTYPE -enum hsql_tokentype { - SQL_HSQL_EMPTY = -2, - SQL_YYEOF = 0, /* "end of file" */ - SQL_HSQL_error = 256, /* error */ - SQL_HSQL_UNDEF = 257, /* "invalid token" */ - SQL_IDENTIFIER = 258, /* IDENTIFIER */ - SQL_STRING = 259, /* STRING */ - SQL_FLOATVAL = 260, /* FLOATVAL */ - SQL_INTVAL = 261, /* INTVAL */ - SQL_DEALLOCATE = 262, /* DEALLOCATE */ - SQL_PARAMETERS = 263, /* PARAMETERS */ - SQL_INTERSECT = 264, /* INTERSECT */ - SQL_TEMPORARY = 265, /* TEMPORARY */ - SQL_TIMESTAMP = 266, /* TIMESTAMP */ - SQL_DISTINCT = 267, /* DISTINCT */ - SQL_NVARCHAR = 268, /* NVARCHAR */ - SQL_RESTRICT = 269, /* RESTRICT */ - SQL_TRUNCATE = 270, /* TRUNCATE */ - SQL_ANALYZE = 271, /* ANALYZE */ - SQL_BETWEEN = 272, /* BETWEEN */ - SQL_CASCADE = 273, /* CASCADE */ - SQL_COLUMNS = 274, /* COLUMNS */ - SQL_CONTROL = 275, /* CONTROL */ - SQL_DEFAULT = 276, /* DEFAULT */ - SQL_EXECUTE = 277, /* EXECUTE */ - SQL_EXPLAIN = 278, /* EXPLAIN */ - SQL_INTEGER = 279, /* INTEGER */ - SQL_NATURAL = 280, /* NATURAL */ - SQL_PREPARE = 281, /* PREPARE */ - SQL_PRIMARY = 282, /* PRIMARY */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ - SQL_REAL = 285, /* REAL */ - SQL_DECIMAL = 286, /* DECIMAL */ - SQL_SMALLINT = 287, /* SMALLINT */ - SQL_BIGINT = 288, /* BIGINT */ - SQL_SPATIAL = 289, /* SPATIAL */ - SQL_VARCHAR = 290, /* VARCHAR */ - SQL_VIRTUAL = 291, /* VIRTUAL */ - SQL_DESCRIBE = 292, /* DESCRIBE */ - SQL_BEFORE = 293, /* BEFORE */ - SQL_COLUMN = 294, /* COLUMN */ - SQL_CREATE = 295, /* CREATE */ - SQL_DELETE = 296, /* DELETE */ - SQL_DIRECT = 297, /* DIRECT */ - SQL_DOUBLE = 298, /* DOUBLE */ - SQL_ESCAPE = 299, /* ESCAPE */ - SQL_EXCEPT = 300, /* EXCEPT */ - SQL_EXISTS = 301, /* EXISTS */ - SQL_EXTRACT = 302, /* EXTRACT */ - SQL_CAST = 303, /* CAST */ - SQL_FORMAT = 304, /* FORMAT */ - SQL_GLOBAL = 305, /* GLOBAL */ - SQL_HAVING = 306, /* HAVING */ - SQL_IMPORT = 307, /* IMPORT */ - SQL_INSERT = 308, /* INSERT */ - SQL_ISNULL = 309, /* ISNULL */ - SQL_OFFSET = 310, /* OFFSET */ - SQL_RENAME = 311, /* RENAME */ - SQL_SCHEMA = 312, /* SCHEMA */ - SQL_SELECT = 313, /* SELECT */ - SQL_SORTED = 314, /* SORTED */ - SQL_TABLES = 315, /* TABLES */ - SQL_UNIQUE = 316, /* UNIQUE */ - SQL_UNLOAD = 317, /* UNLOAD */ - SQL_UPDATE = 318, /* UPDATE */ - SQL_VALUES = 319, /* VALUES */ - SQL_AFTER = 320, /* AFTER */ - SQL_ALTER = 321, /* ALTER */ - SQL_CROSS = 322, /* CROSS */ - SQL_DELTA = 323, /* DELTA */ - SQL_FLOAT = 324, /* FLOAT */ - SQL_GROUP = 325, /* GROUP */ - SQL_INDEX = 326, /* INDEX */ - SQL_INNER = 327, /* INNER */ - SQL_LIMIT = 328, /* LIMIT */ - SQL_LOCAL = 329, /* LOCAL */ - SQL_MERGE = 330, /* MERGE */ - SQL_MINUS = 331, /* MINUS */ - SQL_ORDER = 332, /* ORDER */ - SQL_OVER = 333, /* OVER */ - SQL_OUTER = 334, /* OUTER */ - SQL_RIGHT = 335, /* RIGHT */ - SQL_TABLE = 336, /* TABLE */ - SQL_UNION = 337, /* UNION */ - SQL_USING = 338, /* USING */ - SQL_WHERE = 339, /* WHERE */ - SQL_CALL = 340, /* CALL */ - SQL_CASE = 341, /* CASE */ - SQL_CHAR = 342, /* CHAR */ - SQL_COPY = 343, /* COPY */ - SQL_DATE = 344, /* DATE */ - SQL_DATETIME = 345, /* DATETIME */ - SQL_DESC = 346, /* DESC */ - SQL_DROP = 347, /* DROP */ - SQL_ELSE = 348, /* ELSE */ - SQL_FILE = 349, /* FILE */ - SQL_FROM = 350, /* FROM */ - SQL_FULL = 351, /* FULL */ - SQL_HASH = 352, /* HASH */ - SQL_HINT = 353, /* HINT */ - SQL_INTO = 354, /* INTO */ - SQL_JOIN = 355, /* JOIN */ - SQL_LEFT = 356, /* LEFT */ - SQL_LIKE = 357, /* LIKE */ - SQL_LOAD = 358, /* LOAD */ - SQL_LONG = 359, /* LONG */ - SQL_NULL = 360, /* NULL */ - SQL_PARTITION = 361, /* PARTITION */ - SQL_PLAN = 362, /* PLAN */ - SQL_SHOW = 363, /* SHOW */ - SQL_TEXT = 364, /* TEXT */ - SQL_THEN = 365, /* THEN */ - SQL_TIME = 366, /* TIME */ - SQL_VIEW = 367, /* VIEW */ - SQL_WHEN = 368, /* WHEN */ - SQL_WITH = 369, /* WITH */ - SQL_ADD = 370, /* ADD */ - SQL_ALL = 371, /* ALL */ - SQL_AND = 372, /* AND */ - SQL_ASC = 373, /* ASC */ - SQL_END = 374, /* END */ - SQL_FOR = 375, /* FOR */ - SQL_INT = 376, /* INT */ - SQL_KEY = 377, /* KEY */ - SQL_NOT = 378, /* NOT */ - SQL_OFF = 379, /* OFF */ - SQL_SET = 380, /* SET */ - SQL_TOP = 381, /* TOP */ - SQL_AS = 382, /* AS */ - SQL_BY = 383, /* BY */ - SQL_IF = 384, /* IF */ - SQL_IN = 385, /* IN */ - SQL_IS = 386, /* IS */ - SQL_OF = 387, /* OF */ - SQL_ON = 388, /* ON */ - SQL_OR = 389, /* OR */ - SQL_TO = 390, /* TO */ - SQL_NO = 391, /* NO */ - SQL_ARRAY = 392, /* ARRAY */ - SQL_CONCAT = 393, /* CONCAT */ - SQL_ILIKE = 394, /* ILIKE */ - SQL_SECOND = 395, /* SECOND */ - SQL_MINUTE = 396, /* MINUTE */ - SQL_HOUR = 397, /* HOUR */ - SQL_DAY = 398, /* DAY */ - SQL_MONTH = 399, /* MONTH */ - SQL_YEAR = 400, /* YEAR */ - SQL_SECONDS = 401, /* SECONDS */ - SQL_MINUTES = 402, /* MINUTES */ - SQL_HOURS = 403, /* HOURS */ - SQL_DAYS = 404, /* DAYS */ - SQL_MONTHS = 405, /* MONTHS */ - SQL_YEARS = 406, /* YEARS */ - SQL_INTERVAL = 407, /* INTERVAL */ - SQL_TRUE = 408, /* TRUE */ - SQL_FALSE = 409, /* FALSE */ - SQL_BOOLEAN = 410, /* BOOLEAN */ - SQL_TRANSACTION = 411, /* TRANSACTION */ - SQL_BEGIN = 412, /* BEGIN */ - SQL_COMMIT = 413, /* COMMIT */ - SQL_ROLLBACK = 414, /* ROLLBACK */ - SQL_NOWAIT = 415, /* NOWAIT */ - SQL_SKIP = 416, /* SKIP */ - SQL_LOCKED = 417, /* LOCKED */ - SQL_SHARE = 418, /* SHARE */ - SQL_RANGE = 419, /* RANGE */ - SQL_ROWS = 420, /* ROWS */ - SQL_GROUPS = 421, /* GROUPS */ - SQL_UNBOUNDED = 422, /* UNBOUNDED */ - SQL_FOLLOWING = 423, /* FOLLOWING */ - SQL_PRECEDING = 424, /* PRECEDING */ - SQL_CURRENT_ROW = 425, /* CURRENT_ROW */ - SQL_EQUALS = 426, /* EQUALS */ - SQL_NOTEQUALS = 427, /* NOTEQUALS */ - SQL_LESS = 428, /* LESS */ - SQL_GREATER = 429, /* GREATER */ - SQL_LESSEQ = 430, /* LESSEQ */ - SQL_GREATEREQ = 431, /* GREATEREQ */ - SQL_NOTNULL = 432, /* NOTNULL */ - SQL_UMINUS = 433 /* UMINUS */ -}; -typedef enum hsql_tokentype hsql_token_kind_t; +# define HSQL_TOKENTYPE + enum hsql_tokentype + { + SQL_HSQL_EMPTY = -2, + SQL_YYEOF = 0, /* "end of file" */ + SQL_HSQL_error = 256, /* error */ + SQL_HSQL_UNDEF = 257, /* "invalid token" */ + SQL_IDENTIFIER = 258, /* IDENTIFIER */ + SQL_STRING = 259, /* STRING */ + SQL_FLOATVAL = 260, /* FLOATVAL */ + SQL_INTVAL = 261, /* INTVAL */ + SQL_DEALLOCATE = 262, /* DEALLOCATE */ + SQL_PARAMETERS = 263, /* PARAMETERS */ + SQL_INTERSECT = 264, /* INTERSECT */ + SQL_TEMPORARY = 265, /* TEMPORARY */ + SQL_TIMESTAMP = 266, /* TIMESTAMP */ + SQL_DISTINCT = 267, /* DISTINCT */ + SQL_NVARCHAR = 268, /* NVARCHAR */ + SQL_RESTRICT = 269, /* RESTRICT */ + SQL_TRUNCATE = 270, /* TRUNCATE */ + SQL_ANALYZE = 271, /* ANALYZE */ + SQL_BETWEEN = 272, /* BETWEEN */ + SQL_CASCADE = 273, /* CASCADE */ + SQL_COLUMNS = 274, /* COLUMNS */ + SQL_CONTROL = 275, /* CONTROL */ + SQL_DEFAULT = 276, /* DEFAULT */ + SQL_EXECUTE = 277, /* EXECUTE */ + SQL_EXPLAIN = 278, /* EXPLAIN */ + SQL_INTEGER = 279, /* INTEGER */ + SQL_NATURAL = 280, /* NATURAL */ + SQL_PREPARE = 281, /* PREPARE */ + SQL_PRIMARY = 282, /* PRIMARY */ + SQL_SCHEMAS = 283, /* SCHEMAS */ + SQL_CHARACTER_VARYING = 284, /* CHARACTER_VARYING */ + SQL_REAL = 285, /* REAL */ + SQL_DECIMAL = 286, /* DECIMAL */ + SQL_SMALLINT = 287, /* SMALLINT */ + SQL_BIGINT = 288, /* BIGINT */ + SQL_SPATIAL = 289, /* SPATIAL */ + SQL_VARCHAR = 290, /* VARCHAR */ + SQL_VIRTUAL = 291, /* VIRTUAL */ + SQL_DESCRIBE = 292, /* DESCRIBE */ + SQL_BEFORE = 293, /* BEFORE */ + SQL_COLUMN = 294, /* COLUMN */ + SQL_CREATE = 295, /* CREATE */ + SQL_DELETE = 296, /* DELETE */ + SQL_DIRECT = 297, /* DIRECT */ + SQL_DOUBLE = 298, /* DOUBLE */ + SQL_ESCAPE = 299, /* ESCAPE */ + SQL_EXCEPT = 300, /* EXCEPT */ + SQL_EXISTS = 301, /* EXISTS */ + SQL_EXTRACT = 302, /* EXTRACT */ + SQL_CAST = 303, /* CAST */ + SQL_FORMAT = 304, /* FORMAT */ + SQL_GLOBAL = 305, /* GLOBAL */ + SQL_HAVING = 306, /* HAVING */ + SQL_IMPORT = 307, /* IMPORT */ + SQL_INSERT = 308, /* INSERT */ + SQL_ISNULL = 309, /* ISNULL */ + SQL_OFFSET = 310, /* OFFSET */ + SQL_RENAME = 311, /* RENAME */ + SQL_SCHEMA = 312, /* SCHEMA */ + SQL_SELECT = 313, /* SELECT */ + SQL_SORTED = 314, /* SORTED */ + SQL_TABLES = 315, /* TABLES */ + SQL_UNIQUE = 316, /* UNIQUE */ + SQL_UNLOAD = 317, /* UNLOAD */ + SQL_UPDATE = 318, /* UPDATE */ + SQL_VALUES = 319, /* VALUES */ + SQL_AFTER = 320, /* AFTER */ + SQL_ALTER = 321, /* ALTER */ + SQL_CROSS = 322, /* CROSS */ + SQL_DELTA = 323, /* DELTA */ + SQL_FLOAT = 324, /* FLOAT */ + SQL_GROUP = 325, /* GROUP */ + SQL_INDEX = 326, /* INDEX */ + SQL_INNER = 327, /* INNER */ + SQL_LIMIT = 328, /* LIMIT */ + SQL_LOCAL = 329, /* LOCAL */ + SQL_MERGE = 330, /* MERGE */ + SQL_MINUS = 331, /* MINUS */ + SQL_ORDER = 332, /* ORDER */ + SQL_OVER = 333, /* OVER */ + SQL_OUTER = 334, /* OUTER */ + SQL_RIGHT = 335, /* RIGHT */ + SQL_TABLE = 336, /* TABLE */ + SQL_UNION = 337, /* UNION */ + SQL_USING = 338, /* USING */ + SQL_WHERE = 339, /* WHERE */ + SQL_CALL = 340, /* CALL */ + SQL_CASE = 341, /* CASE */ + SQL_CHAR = 342, /* CHAR */ + SQL_COPY = 343, /* COPY */ + SQL_DATE = 344, /* DATE */ + SQL_DATETIME = 345, /* DATETIME */ + SQL_DESC = 346, /* DESC */ + SQL_DROP = 347, /* DROP */ + SQL_ELSE = 348, /* ELSE */ + SQL_FILE = 349, /* FILE */ + SQL_FROM = 350, /* FROM */ + SQL_FULL = 351, /* FULL */ + SQL_HASH = 352, /* HASH */ + SQL_HINT = 353, /* HINT */ + SQL_INTO = 354, /* INTO */ + SQL_JOIN = 355, /* JOIN */ + SQL_LEFT = 356, /* LEFT */ + SQL_LIKE = 357, /* LIKE */ + SQL_LOAD = 358, /* LOAD */ + SQL_LONG = 359, /* LONG */ + SQL_NULL = 360, /* NULL */ + SQL_PARTITION = 361, /* PARTITION */ + SQL_PLAN = 362, /* PLAN */ + SQL_SHOW = 363, /* SHOW */ + SQL_TEXT = 364, /* TEXT */ + SQL_THEN = 365, /* THEN */ + SQL_TIME = 366, /* TIME */ + SQL_VIEW = 367, /* VIEW */ + SQL_WHEN = 368, /* WHEN */ + SQL_WITH = 369, /* WITH */ + SQL_ADD = 370, /* ADD */ + SQL_ALL = 371, /* ALL */ + SQL_AND = 372, /* AND */ + SQL_ASC = 373, /* ASC */ + SQL_END = 374, /* END */ + SQL_FOR = 375, /* FOR */ + SQL_INT = 376, /* INT */ + SQL_KEY = 377, /* KEY */ + SQL_NOT = 378, /* NOT */ + SQL_OFF = 379, /* OFF */ + SQL_SET = 380, /* SET */ + SQL_TOP = 381, /* TOP */ + SQL_AS = 382, /* AS */ + SQL_BY = 383, /* BY */ + SQL_IF = 384, /* IF */ + SQL_IN = 385, /* IN */ + SQL_IS = 386, /* IS */ + SQL_OF = 387, /* OF */ + SQL_ON = 388, /* ON */ + SQL_OR = 389, /* OR */ + SQL_TO = 390, /* TO */ + SQL_NO = 391, /* NO */ + SQL_ARRAY = 392, /* ARRAY */ + SQL_CONCAT = 393, /* CONCAT */ + SQL_ILIKE = 394, /* ILIKE */ + SQL_SECOND = 395, /* SECOND */ + SQL_MINUTE = 396, /* MINUTE */ + SQL_HOUR = 397, /* HOUR */ + SQL_DAY = 398, /* DAY */ + SQL_MONTH = 399, /* MONTH */ + SQL_YEAR = 400, /* YEAR */ + SQL_SECONDS = 401, /* SECONDS */ + SQL_MINUTES = 402, /* MINUTES */ + SQL_HOURS = 403, /* HOURS */ + SQL_DAYS = 404, /* DAYS */ + SQL_MONTHS = 405, /* MONTHS */ + SQL_YEARS = 406, /* YEARS */ + SQL_INTERVAL = 407, /* INTERVAL */ + SQL_TRUE = 408, /* TRUE */ + SQL_FALSE = 409, /* FALSE */ + SQL_BOOLEAN = 410, /* BOOLEAN */ + SQL_TRANSACTION = 411, /* TRANSACTION */ + SQL_BEGIN = 412, /* BEGIN */ + SQL_COMMIT = 413, /* COMMIT */ + SQL_ROLLBACK = 414, /* ROLLBACK */ + SQL_NOWAIT = 415, /* NOWAIT */ + SQL_SKIP = 416, /* SKIP */ + SQL_LOCKED = 417, /* LOCKED */ + SQL_SHARE = 418, /* SHARE */ + SQL_RANGE = 419, /* RANGE */ + SQL_ROWS = 420, /* ROWS */ + SQL_GROUPS = 421, /* GROUPS */ + SQL_UNBOUNDED = 422, /* UNBOUNDED */ + SQL_FOLLOWING = 423, /* FOLLOWING */ + SQL_PRECEDING = 424, /* PRECEDING */ + SQL_CURRENT_ROW = 425, /* CURRENT_ROW */ + SQL_EQUALS = 426, /* EQUALS */ + SQL_NOTEQUALS = 427, /* NOTEQUALS */ + SQL_LESS = 428, /* LESS */ + SQL_GREATER = 429, /* GREATER */ + SQL_LESSEQ = 430, /* LESSEQ */ + SQL_GREATEREQ = 431, /* GREATEREQ */ + SQL_NOTNULL = 432, /* NOTNULL */ + SQL_UMINUS = 433 /* UMINUS */ + }; + typedef enum hsql_tokentype hsql_token_kind_t; #endif /* Value type. */ -#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED -union HSQL_STYPE { -#line 97 "bison_parser.y" +#if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED +union HSQL_STYPE +{ +#line 96 "bison_parser.y" // clang-format on bool bval; @@ -337,25 +339,31 @@ union HSQL_STYPE { hsql::RowLockWaitPolicy lock_wait_policy_t; #line 342 "bison_parser.h" + }; typedef union HSQL_STYPE HSQL_STYPE; -#define HSQL_STYPE_IS_TRIVIAL 1 -#define HSQL_STYPE_IS_DECLARED 1 +# define HSQL_STYPE_IS_TRIVIAL 1 +# define HSQL_STYPE_IS_DECLARED 1 #endif /* Location type. */ -#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED +#if ! defined HSQL_LTYPE && ! defined HSQL_LTYPE_IS_DECLARED typedef struct HSQL_LTYPE HSQL_LTYPE; -struct HSQL_LTYPE { +struct HSQL_LTYPE +{ int first_line; int first_column; int last_line; int last_column; }; -#define HSQL_LTYPE_IS_DECLARED 1 -#define HSQL_LTYPE_IS_TRIVIAL 1 +# define HSQL_LTYPE_IS_DECLARED 1 +# define HSQL_LTYPE_IS_TRIVIAL 1 #endif -int hsql_parse(hsql::SQLParserResult* result, yyscan_t scanner); + + + +int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); + #endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 82a8ccbd..21e6bf3c 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -18,7 +18,6 @@ #include #include -#include using namespace hsql; From 10908ec48aa836151c45646329e0c142c2b24a7f Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Tue, 30 May 2023 22:30:16 +0200 Subject: [PATCH 06/12] <3 gcc --- test/select_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/select_tests.cpp b/test/select_tests.cpp index c99522de..3d93b4ca 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -1080,7 +1080,7 @@ TEST(WindowExpression) { const auto frame_ends = std::vector{{2, kFollowing, false}, {0, kFollowing, true}, {0, kCurrentRow, false}}; - for (auto bound_index = 0; bound_index < frame_starts.size(); ++bound_index) { + for (auto bound_index = size_t{0}; bound_index < frame_starts.size(); ++bound_index) { stmt = (SelectStatement*)result.getStatement(3 + bound_index); const auto& expected_start = frame_starts[bound_index]; const auto& expected_end = frame_ends[bound_index]; From 1318536a448e892b0618825d056c7a2ee7bdb141 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Wed, 31 May 2023 14:32:11 +0200 Subject: [PATCH 07/12] review --- src/parser/flex_lexer.cpp | 7523 +++++++++++++++++++++---------------- src/parser/flex_lexer.h | 167 +- src/parser/flex_lexer.l | 1 - src/util/sqlhelper.h | 2 - test/select_tests.cpp | 40 +- 5 files changed, 4395 insertions(+), 3338 deletions(-) diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index c66a1e07..7845ebad 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -2,7 +2,7 @@ #line 3 "flex_lexer.cpp" -#define YY_INT_ALIGNED short int +#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ @@ -251,10 +251,10 @@ /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ -#include #include -#include #include +#include +#include /* end standard C headers. */ @@ -265,7 +265,7 @@ /* C99 systems have . Non-C99 systems may or may not. */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -285,41 +285,41 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN -#define INT8_MIN (-128) +#define INT8_MIN (-128) #endif #ifndef INT16_MIN -#define INT16_MIN (-32767 - 1) +#define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN -#define INT32_MIN (-2147483647 - 1) +#define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX -#define INT8_MAX (127) +#define INT8_MAX (127) #endif #ifndef INT16_MAX -#define INT16_MAX (32767) +#define INT16_MAX (32767) #endif #ifndef INT32_MAX -#define INT32_MAX (2147483647) +#define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX -#define UINT8_MAX (255U) +#define UINT8_MAX (255U) #endif #ifndef UINT16_MAX -#define UINT16_MAX (65535U) +#define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) +#define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) +#define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ @@ -343,7 +343,7 @@ typedef unsigned int flex_uint32_t; /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((YY_CHAR)(c)) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -376,7 +376,7 @@ typedef void* yyscan_t; /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin, yyscanner) +#define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -394,11 +394,11 @@ typedef void* yyscan_t; /* The state buf must be large enough to hold one state per character in the main buffer. */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state* YY_BUFFER_STATE; +typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T @@ -409,73 +409,76 @@ typedef size_t yy_size_t; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - -#define YY_LESS_LINENO(n) -#define YY_LINENO_REWIND_TO(ptr) - + + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) + /* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg); \ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } while (0) -#define unput(c) yyunput(c, yyg->yytext_ptr, yyscanner) +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state { - FILE* yy_input_file; +struct yy_buffer_state + { + FILE *yy_input_file; - char* yy_ch_buf; /* input buffer */ - char* yy_buf_pos; /* current position in input buffer */ + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ - /* Size of input buffer in bytes, not including room for EOB + /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + int yy_buf_size; - /* Number of characters read into yy_ch_buf, not including EOB + /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + int yy_n_chars; - /* Whether we "own" the buffer - i.e., we know we created it, + /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ - int yy_is_our_buffer; + int yy_is_our_buffer; - /* Whether this is an "interactive" input source; if so, and + /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ - int yy_is_interactive; + int yy_is_interactive; - /* Whether we're considered to be at the beginning of a line. + /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ - int yy_at_bol; + int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the + /* Whether to try to fill the input buffer when we reach the * end of it. */ - int yy_fill_buffer; + int yy_fill_buffer; - int yy_buffer_status; + int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process + /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of @@ -486,7 +489,8 @@ struct yy_buffer_state { * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 -}; + + }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the @@ -495,55 +499,59 @@ struct yy_buffer_state { * * Returns the top of the stack, or NULL. */ -#define YY_CURRENT_BUFFER (yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL) +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] -void yyrestart(FILE* input_file, yyscan_t yyscanner); -void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); -YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner); -void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); -void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); -void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); -void yypop_buffer_state(yyscan_t yyscanner); +void yyrestart ( FILE *input_file , yyscan_t yyscanner ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); +void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); +void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); +void yypop_buffer_state ( yyscan_t yyscanner ); -static void yyensure_buffer_stack(yyscan_t yyscanner); -static void yy_load_buffer_state(yyscan_t yyscanner); -static void yy_init_buffer(YY_BUFFER_STATE b, FILE* file, yyscan_t yyscanner); -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER, yyscanner) +static void yyensure_buffer_stack ( yyscan_t yyscanner ); +static void yy_load_buffer_state ( yyscan_t yyscanner ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) -YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner); -YY_BUFFER_STATE yy_scan_string(const char* yy_str, yyscan_t yyscanner); -YY_BUFFER_STATE yy_scan_bytes(const char* bytes, int len, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); -void* yyalloc(yy_size_t, yyscan_t yyscanner); -void* yyrealloc(void*, yy_size_t, yyscan_t yyscanner); -void yyfree(void*, yyscan_t yyscanner); +void *yyalloc ( yy_size_t , yyscan_t yyscanner ); +void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); +void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if (!YY_CURRENT_BUFFER) { \ - yyensure_buffer_stack(yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if (!YY_CURRENT_BUFFER) { \ - yyensure_buffer_stack(yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1) +#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP typedef flex_uint8_t YY_CHAR; @@ -551,1559 +559,2479 @@ typedef int yy_state_type; #define yytext_ptr yytext_r -static yy_state_type yy_get_previous_state(yyscan_t yyscanner); -static yy_state_type yy_try_NUL_trans(yy_state_type current_state, yyscan_t yyscanner); -static int yy_get_next_buffer(yyscan_t yyscanner); -static void yynoreturn yy_fatal_error(const char* msg, yyscan_t yyscanner); +static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); +static int yy_get_next_buffer ( yyscan_t yyscanner ); +static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (int)(yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 186 #define YY_END_OF_BUFFER 187 /* This struct is not used in this scanner, but its presence is necessary. */ -struct yy_trans_info { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; -}; -static const flex_int16_t yy_accept[1332] = { - 0, 0, 0, 183, 183, 2, 2, 187, 185, 4, 4, 185, 185, 174, 181, 174, 174, 178, 174, 174, 174, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 174, 183, 184, 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, 169, 0, 1, 0, 176, 175, 178, 171, 170, 168, 172, 180, 180, 180, - - 180, 180, 180, 12, 180, 180, 180, 19, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 71, 180, 180, 74, 83, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 101, 180, 180, 106, 109, 110, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 146, 180, 180, 180, 180, 180, 180, 180, 180, 180, 173, - 183, 182, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 179, 0, 175, 5, 180, 7, 180, 180, 10, 180, 13, 180, 180, 180, - - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 34, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 48, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 59, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 78, 180, 180, 86, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 102, 180, 180, 180, 107, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 132, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 147, 180, 180, - - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 20, 180, 22, 23, 24, 180, 180, 180, 29, 180, 180, 180, 32, 35, 180, - 180, 180, 180, 180, 41, 180, 180, 180, 46, 47, 180, 180, 180, 180, 180, 180, 180, 56, 180, 180, 180, - 61, 62, 180, 180, 66, 180, 68, 69, 180, 180, 180, 180, 180, 180, 82, 180, - - 85, 87, 88, 180, 90, 180, 180, 93, 180, 180, 180, 180, 180, 104, 180, 180, 180, 180, 113, 180, 180, - 116, 180, 180, 180, 180, 121, 180, 180, 180, 180, 126, 180, 180, 180, 180, 134, 135, 180, 180, 180, 180, - 180, 142, 143, 144, 180, 149, 180, 180, 180, 180, 180, 180, 180, 180, 180, 159, 180, 161, 180, 163, 164, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 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, 6, 8, 180, 11, 180, 15, 180, 180, 180, 180, 180, - - 180, 180, 180, 180, 31, 180, 180, 180, 180, 180, 180, 40, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 55, 57, 180, 180, 180, 64, 180, 70, 72, 180, 75, 76, 180, 180, 180, 180, 89, 91, 180, 94, - 95, 180, 98, 180, 180, 180, 180, 111, 112, 180, 180, 180, 180, 180, 120, 180, 180, 124, 180, 180, 180, - 180, 133, 180, 180, 180, 139, 180, 180, 180, 180, 180, 152, 180, 180, 180, 156, 180, 180, 180, 162, 165, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 14, 180, - 17, 180, 180, 180, 25, 27, 180, 30, 180, 180, 180, 180, 180, 39, 180, 43, - - 180, 45, 49, 50, 180, 52, 180, 180, 180, 60, 63, 65, 67, 73, 77, 180, 180, 180, 84, 92, 96, - 99, 180, 103, 180, 108, 180, 180, 180, 180, 180, 122, 180, 180, 127, 129, 131, 180, 137, 180, 140, 180, - 180, 180, 180, 180, 153, 154, 155, 157, 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 0, 9, 16, 18, 21, 180, 26, 28, 180, 180, 180, 37, 38, 180, 180, 51, 53, 54, - 180, 79, 180, 180, 97, 100, 180, 180, 180, 180, 118, 119, 180, 180, 128, 130, 180, 138, 180, 180, 180, - 180, 180, 158, 160, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 0, 33, 180, 42, 44, 180, 180, 81, 105, - 180, 180, 180, 123, 125, 136, 180, 180, 180, 150, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 180, 0, 180, 58, 80, 180, 115, 117, - 141, 145, 180, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 36, - 114, 180, 2, 2, 2, 2, 2, 2, 0, 0, 166, 148, 2, 2, 2, 2, - - 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, - 167, 2, 2, 0, 2, 0, 2, 177, 2, 0}; - -static const YY_CHAR yy_ec[256] = { - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, 6, 6, 6, 6, 8, 9, 6, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 6, 6, 20, 21, 22, 6, 1, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 6, 1, 6, 6, 49, 1, 50, 51, 52, 53, - - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 6, 76, 6, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - -static const YY_CHAR yy_meta[77] = {0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1}; - -static const flex_int16_t yy_base[1339] = { - 0, 0, 0, 839, 837, 76, 0, 842, 8771, 151, 153, 785, 0, 8771, 8771, 149, 148, 160, 159, - 783, 782, 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, 171, 215, 218, 244, 295, 257, 0, - 309, 349, 392, 163, 279, 226, 180, 723, 0, 791, 0, 237, 251, 775, 743, 0, 0, 243, 378, - 451, 237, 682, 680, 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, 532, 533, 534, 846, 895, - 944, 547, 602, 990, 1042, 307, 650, 587, 651, 596, 301, 8771, 666, 8771, 657, 1107, 1117, 1128, 8771, - 8771, 8771, 8771, 0, 218, 243, - - 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, 694, 389, 345, 440, 710, 387, 388, 436, 439, - 462, 469, 763, 465, 467, 465, 542, 480, 484, 498, 521, 531, 553, 572, 0, 588, 588, 654, 592, - 601, 588, 608, 651, 717, 598, 649, 655, 651, 707, 660, 716, 715, 0, 719, 708, 754, 744, 762, - 760, 757, 802, 768, 792, 770, 846, 810, 776, 812, 799, 817, 821, 838, 821, 816, 816, 854, 861, - 829, 848, 853, 894, 872, 859, 879, 8771, 0, 8771, 0, 396, 0, 663, 0, 636, 1138, 1148, 1159, - 0, 0, 0, 0, 906, - - 942, 955, 1015, 1156, 1034, 1155, 1202, 1152, 1040, 1195, 1199, 1232, 1272, 1257, 1272, 1301, 1353, 1350, 1361, - 1388, 1402, 1413, 1443, 1492, 1437, 1479, 1491, 1528, 1536, 1536, 1561, 1575, 1577, 1590, 1618, 1621, 1629, 1668, - 1717, 1639, 1682, 1683, 1707, 1764, 1816, 1762, 1714, 1808, 1817, 1857, 1860, 1881, 1904, 1873, 1917, 1940, 1773, - 1952, 1984, 1993, 1991, 2027, 2040, 2046, 2076, 2125, 2098, 2089, 2137, 2138, 2176, 2173, 2207, 2191, 2225, 2247, - 2263, 2310, 2271, 2295, 2314, 2325, 2339, 2363, 2375, 0, 8771, 601, 2440, 0, 882, 0, 900, 896, 0, - 921, 0, 912, 925, 918, - - 941, 943, 951, 1158, 951, 960, 972, 984, 984, 1009, 992, 995, 1009, 998, 1047, 1054, 1063, 1210, 1159, - 1160, 1152, 1210, 1209, 1223, 0, 1231, 1229, 1262, 1248, 1256, 1256, 1256, 1271, 1279, 1286, 1287, 1292, 1307, - 1318, 1301, 1320, 1321, 1311, 1316, 1325, 1324, 1339, 1346, 1347, 1403, 1339, 1370, 0, 1368, 1401, 1414, 1427, - 1464, 1429, 1432, 1421, 1427, 1439, 0, 1471, 1465, 1468, 1486, 1504, 1505, 1493, 1648, 1512, 1555, 1516, 1547, - 1553, 1582, 1574, 1587, 1607, 1601, 1620, 1628, 1643, 0, 1637, 1651, 1663, 1684, 1683, 1697, 1715, 1729, 1737, - 1752, 1762, 0, 1756, 1807, - - 1768, 1809, 1772, 1790, 1797, 1802, 1830, 1811, 1823, 1872, 1867, 1870, 0, 600, 2450, 2443, 2444, 2445, 2446, - 2373, 2480, 2488, 2489, 2500, 2528, 2536, 2541, 2543, 2557, 2606, 2582, 2607, 2620, 2656, 2632, 2668, 2666, 2697, - 2709, 2711, 2725, 2750, 2768, 2765, 2800, 2809, 2818, 2844, 2859, 2857, 2862, 2907, 2898, 2912, 2912, 2933, 2957, - 2954, 2982, 3008, 2980, 3029, 3033, 3037, 3075, 3079, 3078, 3123, 3126, 3135, 3161, 3176, 3179, 3191, 3205, 3217, - 3229, 3244, 3248, 3272, 3273, 3292, 3317, 3369, 3295, 3331, 3366, 3330, 3391, 3394, 3419, 3426, 3440, 3454, 3465, - 3479, 3494, 3546, 3494, 3596, - - 3529, 3572, 3513, 3624, 3583, 3632, 3645, 3668, 3680, 3685, 3688, 3693, 3729, 3734, 3737, 3736, 3744, 3780, 3784, - 3793, 3826, 3829, 3846, 3849, 3875, 3878, 3898, 3903, 3900, 3948, 3919, 3947, 3975, 3989, 4003, 4019, 4033, 4057, - 582, 1908, 1917, 1913, 1914, 1924, 1930, 1941, 1933, 1944, 0, 1950, 0, 0, 1979, 1977, 1983, 1977, 0, - 1976, 1981, 2001, 1991, 0, 2001, 2008, 2013, 2024, 2048, 2032, 2050, 2047, 2050, 0, 0, 2059, 2066, 2072, - 2085, 2105, 2107, 2119, 0, 2137, 2144, 2159, 0, 0, 2166, 2152, 0, 2183, 0, 2191, 2209, 2199, 2198, - 2214, 2221, 2311, 0, 2230, - - 0, 0, 0, 2235, 0, 2248, 2263, 0, 2265, 2374, 2266, 2276, 2300, 0, 2311, 2319, 2351, 2356, 0, - 2366, 2373, 0, 2381, 2388, 2397, 2451, 0, 2444, 2445, 2444, 2464, 0, 2498, 2503, 2517, 2517, 0, 0, - 2536, 2553, 2554, 2560, 2559, 0, 0, 2560, 2594, 0, 2614, 2598, 2609, 2646, 2669, 2655, 2672, 2681, 2687, - 0, 2678, 0, 2696, 0, 2700, 544, 4068, 4071, 4096, 4115, 4118, 4125, 4120, 4161, 4169, 4172, 4181, 4210, - 4211, 4229, 4251, 4263, 4264, 4265, 4293, 4300, 4317, 4318, 4343, 4343, 4359, 4390, 4401, 4425, 4443, 4451, 4468, - 4484, 4487, 4493, 4529, 4535, - - 4543, 4573, 4576, 4597, 4504, 4598, 4624, 4626, 4652, 4650, 4664, 4682, 4696, 4694, 4701, 4731, 4737, 4748, 4749, - 4783, 4791, 4794, 4839, 4835, 4836, 4877, 4880, 4881, 4921, 4924, 4925, 4964, 4969, 4972, 4971, 4974, 5014, 5014, - 5022, 5058, 5066, 5067, 5096, 5108, 5111, 5120, 5149, 5150, 5168, 5194, 5202, 5203, 5216, 5242, 5244, 5268, 5256, - 5290, 5295, 5299, 5312, 5334, 5342, 5341, 5347, 5366, 5388, 5391, 5396, 5410, 5398, 5417, 5441, 5447, 5455, 5471, - 5490, 5504, 5501, 5532, 5544, 5549, 5583, 5584, 5585, 5597, 5598, 5629, 543, 0, 0, 2701, 0, 2724, 0, - 2726, 2713, 2739, 2764, 2769, - - 2765, 2761, 2769, 2784, 0, 2780, 2804, 2813, 2828, 2819, 2858, 0, 2869, 2859, 2869, 2887, 2923, 2909, 2913, - 2919, 2952, 2959, 0, 0, 2960, 2965, 2989, 2992, 3020, 0, 0, 3012, 0, 0, 3015, 3032, 3036, 3027, - 0, 0, 3077, 0, 0, 3090, 3077, 3105, 3087, 3101, 3090, 0, 0, 3107, 3095, 3143, 3134, 3138, 0, - 3158, 3173, 0, 3191, 3197, 3198, 3204, 0, 3230, 3242, 3247, 3233, 3258, 3286, 3313, 3315, 3316, 0, 3347, - 3354, 3356, 0, 3349, 3385, 3389, 0, 0, 536, 5632, 5633, 5673, 5674, 5685, 5686, 5724, 5725, 5743, 5738, - 5778, 5770, 5793, 5810, 5813, - - 5818, 5812, 5832, 5862, 5871, 5869, 5870, 5896, 5920, 5921, 5925, 5945, 5950, 5969, 5994, 5971, 6018, 6042, 6023, - 6064, 6072, 6098, 6025, 6107, 6113, 6137, 6143, 6151, 6167, 6181, 6195, 6220, 6209, 6225, 6249, 6255, 6273, 6279, - 6297, 6308, 6315, 6345, 6351, 6364, 6392, 6395, 6406, 6412, 6446, 6454, 6482, 6490, 6504, 6516, 6528, 6540, 6558, - 6570, 6584, 6598, 6572, 6596, 6637, 6628, 6635, 6653, 6671, 6695, 6701, 6714, 6725, 6752, 6754, 6778, 6786, 6788, - 6807, 6831, 6828, 6837, 526, 3399, 0, 3396, 0, 3401, 3417, 3409, 3416, 0, 3436, 0, 3440, 3456, 3480, - 3477, 3482, 0, 3520, 0, - - 3520, 0, 0, 0, 3533, 0, 3542, 3538, 3551, 0, 0, 0, 0, 0, 0, 3544, 3558, 3566, 0, - 0, 3554, 0, 3565, 0, 3591, 0, 3581, 3596, 3605, 3622, 3606, 0, 3630, 3642, 3630, 3631, 0, 3647, - 0, 3662, 0, 3678, 3698, 3701, 3731, 3784, 0, 0, 0, 0, 3775, 3785, 525, 6866, 6875, 6873, 6882, - 6891, 6884, 6920, 6927, 6935, 6936, 6971, 6977, 6980, 7022, 7018, 7031, 7062, 7073, 7076, 7104, 7117, 7118, 7148, - 7156, 7161, 7161, 7197, 7205, 7210, 7224, 7246, 7249, 7254, 7268, 7290, 7298, 7316, 7324, 7338, 7343, 7359, 7367, - 7373, 7403, 7397, 7421, 7441, - - 7446, 7454, 7476, 7490, 7504, 7518, 7525, 7533, 7539, 7563, 7569, 7577, 7593, 7612, 7636, 7635, 7659, 7680, 7677, - 7683, 7701, 7724, 7727, 7743, 529, 0, 0, 0, 0, 3796, 0, 0, 436, 3797, 3805, 0, 0, 3805, - 3802, 0, 0, 0, 3828, 0, 3849, 3845, 0, 0, 3841, 3861, 3880, 3886, 0, 0, 3917, 3937, 0, - 0, 3934, 0, 3938, 3956, 3957, 3974, 3977, 0, 0, 527, 7757, 7771, 7785, 7799, 7620, 7810, 7824, 7863, - 7848, 7866, 7878, 7892, 7904, 7907, 7916, 7942, 7955, 7957, 7971, 7990, 7987, 8011, 8020, 8046, 8058, 8063, 8062, - 8065, 8095, 8106, 8137, 8119, - - 8150, 8173, 8186, 8197, 8194, 8227, 8244, 8245, 8247, 8279, 526, 3973, 4081, 0, 3972, 0, 0, 3990, 3982, - 0, 0, 3989, 4018, 4029, 0, 0, 0, 4021, 4035, 4057, 0, 4063, 524, 8298, 4259, 8293, 8317, 8342, - 8343, 8356, 8357, 8371, 8396, 8397, 8406, 8412, 8442, 8448, 8456, 8481, 8495, 8500, 8503, 8525, 514, 438, 4062, - 4083, 0, 0, 4072, 0, 0, 0, 0, 4116, 0, 506, 8563, 4119, 8544, 8549, 8578, 8551, 8570, 8594, - 8605, 8613, 8633, 8638, 470, 4161, 4142, 0, 0, 4154, 468, 4396, 4168, 8652, 8657, 8659, 465, 4221, 8771, - 0, 418, 4227, 0, 8667, - - 418, 4213, 390, 4214, 388, 4223, 386, 4242, 347, 4275, 343, 4301, 338, 4306, 335, 4320, 334, 4329, 332, - 4357, 303, 8771, 293, 0, 299, 286, 248, 243, 8771, 0, 8771, 8740, 8745, 201, 8750, 8755, 8760, 8765}; - -static const flex_int16_t yy_def[1339] = { - 0, 1331, 1, 1332, 1332, 1331, 5, 1331, 1331, 1331, 1331, 1331, 1333, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1331, 1336, 1337, 1336, 1336, 1336, 1336, - 1336, 1336, 1336, 1336, 1338, 1338, 62, 62, 62, 63, 65, 62, 65, 62, 62, 62, 62, 63, 63, - 63, 62, 62, 62, 62, 65, 62, 62, 62, 1336, 1331, 1331, 1333, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1336, 1337, 1336, 1336, 1336, 1336, 1336, - 1336, 1336, 1336, 1336, 62, - - 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, 65, 62, 62, 62, 65, 65, 65, - 62, 65, 65, 65, 62, 65, 65, 62, 65, 62, 65, 62, 62, 65, 65, 65, 65, 62, 62, - 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, - 62, 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, - 63, 62, 62, 62, 65, 62, 62, 62, 62, 1336, 1331, 1331, 1331, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 1336, 1336, 62, 62, 62, 62, - 65, 65, 65, 65, 62, 62, 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, - 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 62, - 62, 62, 62, 65, 65, - - 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, - 65, 65, 65, 62, 62, 65, 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, - 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 62, 62, 62, 65, 62, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, - 65, 65, 65, 65, 65, - - 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 62, 62, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, - 62, 65, 65, 62, 62, - - 62, 65, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, 62, 65, 62, 62, 62, - 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, 65, - 65, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 65, - 65, 65, 65, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, - - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 62, 65, 65, - 65, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 62, 62, 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 62, - - 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, 65, 65, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, 62, 65, - 65, 65, 65, 65, 65, - - 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, 1331, 1334, 1331, 1334, 1334, 1334, 1334, 1334, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 1336, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, 62, 62, 62, 62, 62, 1331, 1334, 1331, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 1336, 62, 62, 62, 65, 65, 65, - 65, 65, 62, 62, 1331, 1331, 1331, 1334, 1334, 1334, 1336, 1336, 1336, 62, 62, 65, 1331, 1331, 1331, - 1334, 1336, 1336, 1336, 65, - - 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, - 1336, 1331, 1331, 1336, 1336, 1331, 1336, 1331, 1336, 1331, 1336, 0, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; - -static const flex_int16_t yy_nxt[8848] = { - 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, - - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, 77, - 85, 86, 86, 86, 86, 89, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 90, - 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 99, 105, 100, 129, - 131, 106, 109, 139, 101, 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, - - 177, 111, 108, 178, 112, 98, 183, 113, 99, 105, 100, 129, 131, 106, 109, 139, 101, - 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, 177, 111, 108, 178, 112, 114, 183, - 113, 119, 115, 120, 188, 86, 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, 191, - 143, 86, 86, 146, 181, 182, 196, 197, 114, 1330, 192, 119, 115, 120, 1329, 147, 116, - 141, 121, 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, 148, 146, 181, 182, 291, - 124, 149, 150, 125, 296, 157, 126, 134, 147, 127, 1328, 158, 128, 135, 136, - - 137, 179, 86, 86, 123, 138, 156, 148, 1327, 180, 1326, 291, 124, 149, 150, 125, 296, - 157, 126, 134, 1325, 127, 151, 158, 128, 135, 136, 137, 179, 297, 152, 159, 138, 292, - 153, 160, 180, 154, 155, 161, 200, 293, 278, 301, 279, 162, 1323, 280, 1321, 151, 294, - 1319, 200, 295, 1317, 302, 297, 152, 159, 1315, 292, 153, 160, 1313, 154, 155, 161, 200, - 293, 278, 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, 295, 166, 302, 167, 312, - 168, 169, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 188, 86, 1311, - - 163, 1309, 164, 305, 1307, 165, 298, 299, 166, 303, 167, 312, 168, 169, 170, 310, 304, - 231, 171, 200, 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, 322, 175, 1305, 298, - 299, 1303, 303, 1213, 1213, 1282, 1282, 170, 310, 304, 231, 171, 200, 300, 172, 173, 232, - 200, 311, 320, 321, 174, 200, 322, 175, 194, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, 233, 313, 1301, 1297, 200, - 1293, 314, 325, 234, 187, 187, 187, 200, 326, 235, 201, 200, 202, 332, 323, - - 333, 334, 241, 203, 200, 204, 324, 233, 313, 205, 206, 200, 200, 314, 325, 234, 337, - 338, 1287, 200, 326, 235, 201, 200, 202, 332, 1281, 333, 334, 241, 203, 200, 204, 1268, - 339, 1255, 205, 206, 1233, 200, 1211, 1168, 1125, 337, 338, 187, 187, 187, 1053, 187, 187, - 187, 187, 187, 187, 981, 885, 340, 242, 243, 246, 339, 200, 244, 247, 187, 187, 187, - 200, 245, 248, 341, 207, 200, 342, 335, 208, 200, 200, 200, 200, 336, 209, 200, 340, - 242, 243, 246, 343, 200, 244, 247, 210, 200, 789, 200, 245, 248, 341, 207, - - 200, 342, 335, 208, 200, 200, 200, 200, 336, 209, 200, 664, 539, 200, 344, 343, 283, - 284, 345, 210, 200, 187, 211, 200, 261, 346, 200, 351, 262, 212, 200, 352, 263, 200, - 353, 354, 213, 360, 264, 214, 200, 344, 215, 283, 284, 345, 200, 414, 200, 211, 200, - 261, 346, 200, 351, 262, 212, 200, 352, 263, 200, 353, 354, 213, 360, 264, 214, 413, - 288, 215, 287, 286, 281, 200, 216, 200, 200, 285, 217, 347, 282, 200, 218, 355, 361, - 356, 200, 200, 219, 348, 362, 220, 363, 366, 349, 350, 200, 200, 200, 281, - - 199, 216, 198, 200, 285, 217, 347, 282, 200, 218, 355, 361, 356, 200, 200, 219, 348, - 362, 220, 363, 366, 349, 350, 200, 200, 200, 200, 306, 307, 308, 200, 309, 315, 221, - 316, 222, 200, 317, 367, 357, 223, 358, 368, 318, 369, 224, 200, 187, 364, 370, 319, - 365, 359, 200, 306, 307, 308, 200, 309, 315, 221, 316, 222, 200, 317, 367, 357, 223, - 358, 368, 318, 369, 224, 200, 225, 364, 370, 319, 365, 359, 371, 200, 226, 372, 373, - 227, 374, 327, 228, 328, 375, 229, 376, 329, 230, 189, 380, 186, 184, 383, - - 330, 225, 97, 96, 331, 87, 389, 371, 200, 226, 372, 373, 227, 374, 327, 228, 328, - 375, 229, 376, 329, 230, 236, 380, 377, 381, 383, 330, 237, 238, 239, 331, 387, 389, - 390, 240, 382, 378, 391, 392, 200, 1331, 379, 47, 393, 47, 388, 396, 1331, 236, 397, - 377, 381, 398, 404, 237, 238, 239, 1331, 387, 1331, 390, 240, 382, 378, 391, 392, 200, - 249, 379, 384, 393, 394, 388, 396, 200, 399, 397, 405, 385, 398, 404, 250, 395, 401, - 200, 406, 386, 251, 252, 1331, 402, 407, 1331, 403, 249, 400, 384, 410, 394, - - 411, 412, 200, 399, 1331, 405, 385, 1331, 540, 250, 395, 401, 200, 406, 386, 251, 252, - 200, 402, 407, 408, 403, 253, 400, 200, 410, 541, 411, 412, 542, 254, 200, 200, 409, - 255, 540, 200, 256, 257, 1331, 1331, 1331, 200, 543, 200, 1331, 1331, 408, 544, 253, 1331, - 200, 200, 541, 1331, 545, 542, 254, 200, 200, 409, 255, 546, 200, 256, 257, 258, 416, - 200, 200, 543, 547, 200, 200, 1331, 544, 548, 259, 200, 200, 200, 200, 545, 260, 549, - 200, 200, 1331, 200, 546, 553, 200, 1331, 258, 416, 200, 417, 1331, 547, 200, - - 200, 200, 554, 548, 259, 200, 555, 200, 200, 1331, 260, 549, 200, 200, 265, 200, 266, - 553, 200, 267, 200, 1331, 268, 417, 269, 556, 270, 271, 200, 554, 557, 558, 559, 555, - 560, 561, 200, 1331, 562, 1331, 1331, 265, 1331, 266, 1331, 1331, 267, 200, 418, 268, 200, - 269, 556, 270, 271, 200, 419, 557, 558, 559, 200, 560, 561, 200, 272, 562, 200, 200, - 273, 200, 200, 274, 275, 422, 200, 418, 428, 200, 276, 200, 563, 277, 200, 419, 564, - 565, 200, 200, 200, 1331, 1331, 272, 1331, 200, 200, 273, 200, 200, 274, 275, - - 422, 200, 1331, 428, 1331, 276, 200, 563, 277, 1331, 1331, 564, 565, 200, 1331, 200, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 194, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 420, 423, 427, 421, 550, 568, 551, - 200, 569, 200, 200, 200, 200, 200, 200, 570, 1331, 200, 200, 200, 1331, 552, - - 200, 200, 1331, 1331, 1331, 420, 423, 427, 421, 550, 568, 551, 200, 569, 200, 200, 200, - 200, 200, 200, 570, 200, 200, 200, 200, 200, 552, 200, 200, 424, 425, 200, 429, 571, - 200, 200, 566, 200, 1331, 430, 1331, 200, 200, 426, 200, 1331, 572, 200, 200, 573, 1331, - 567, 200, 574, 431, 575, 424, 425, 200, 429, 571, 200, 200, 566, 200, 200, 430, 200, - 200, 200, 426, 200, 200, 572, 200, 1331, 573, 200, 567, 1331, 574, 431, 575, 436, 1331, - 1331, 576, 200, 577, 578, 1331, 1331, 200, 437, 200, 579, 580, 581, 200, 200, - - 1331, 582, 200, 200, 200, 432, 433, 434, 200, 435, 436, 438, 200, 576, 200, 577, 578, - 200, 200, 583, 437, 584, 579, 580, 581, 200, 585, 200, 582, 200, 200, 200, 432, 433, - 434, 200, 435, 200, 438, 200, 586, 587, 439, 588, 200, 200, 583, 440, 584, 589, 1331, - 590, 591, 585, 200, 592, 1331, 593, 200, 1331, 594, 1331, 1331, 1331, 200, 595, 1331, 586, - 587, 439, 588, 1331, 596, 597, 440, 441, 589, 442, 590, 591, 443, 600, 592, 200, 593, - 200, 444, 594, 200, 446, 447, 1331, 595, 445, 200, 200, 200, 1331, 200, 596, - - 597, 200, 441, 448, 442, 601, 200, 443, 600, 602, 200, 1331, 200, 444, 200, 200, 446, - 447, 200, 1331, 445, 200, 200, 200, 449, 200, 1331, 603, 200, 598, 448, 1331, 601, 200, - 200, 200, 602, 200, 451, 599, 1331, 200, 450, 1331, 604, 200, 200, 200, 200, 1331, 1331, - 449, 605, 200, 603, 1331, 598, 608, 200, 1331, 609, 200, 200, 610, 200, 451, 599, 452, - 611, 450, 458, 604, 200, 200, 200, 200, 200, 200, 200, 605, 200, 612, 200, 200, 608, - 200, 606, 609, 200, 1331, 610, 1331, 1331, 613, 452, 611, 607, 458, 614, 200, - - 1331, 1331, 1331, 200, 200, 200, 1331, 615, 612, 200, 200, 1331, 459, 606, 200, 200, 453, - 200, 454, 200, 613, 200, 455, 607, 200, 614, 616, 460, 200, 456, 617, 618, 619, 457, - 615, 1331, 1331, 200, 200, 459, 1331, 200, 1331, 453, 200, 454, 200, 622, 200, 455, 625, - 200, 1331, 616, 460, 200, 456, 617, 618, 619, 457, 461, 200, 200, 200, 200, 200, 462, - 200, 464, 1331, 200, 463, 200, 622, 626, 200, 625, 1331, 623, 1331, 200, 200, 1331, 1331, - 1331, 627, 200, 461, 200, 200, 200, 624, 200, 462, 200, 464, 465, 200, 463, - - 200, 200, 626, 200, 628, 200, 623, 200, 200, 200, 200, 466, 200, 627, 200, 629, 630, - 467, 200, 624, 468, 200, 200, 200, 465, 469, 1331, 1331, 200, 1331, 200, 628, 200, 1331, - 200, 200, 1331, 200, 466, 200, 631, 632, 629, 630, 467, 1331, 633, 468, 200, 200, 200, - 200, 469, 200, 200, 200, 200, 200, 200, 471, 470, 200, 200, 200, 634, 200, 200, 631, - 632, 635, 620, 1331, 200, 633, 477, 200, 636, 1331, 200, 200, 200, 200, 200, 200, 200, - 200, 471, 470, 200, 621, 200, 634, 200, 200, 200, 637, 635, 620, 200, 200, - - 638, 477, 200, 636, 200, 472, 200, 1331, 200, 200, 1331, 200, 478, 200, 200, 1331, 621, - 639, 200, 200, 1331, 200, 637, 1331, 640, 200, 1331, 638, 200, 479, 1331, 200, 472, 200, - 480, 200, 200, 200, 641, 478, 200, 200, 473, 200, 639, 200, 200, 200, 642, 487, 200, - 640, 474, 200, 200, 200, 479, 475, 476, 200, 200, 480, 200, 1331, 200, 641, 643, 1331, - 1331, 473, 200, 1331, 1331, 1331, 200, 642, 487, 200, 644, 474, 200, 200, 1331, 1331, 475, - 476, 200, 645, 646, 200, 200, 647, 1331, 643, 200, 200, 481, 200, 482, 497, - - 200, 486, 200, 200, 650, 644, 1331, 200, 653, 200, 200, 1331, 654, 1331, 645, 646, 1331, - 200, 647, 200, 1331, 200, 200, 481, 200, 482, 497, 200, 486, 200, 200, 650, 655, 648, - 200, 653, 200, 200, 483, 654, 484, 200, 649, 488, 656, 651, 200, 652, 200, 200, 200, - 485, 200, 200, 657, 658, 200, 200, 489, 655, 648, 200, 200, 1331, 659, 483, 1331, 484, - 200, 649, 488, 656, 651, 1331, 652, 200, 200, 200, 485, 200, 200, 657, 658, 200, 200, - 489, 1331, 1331, 200, 200, 200, 659, 200, 492, 1331, 200, 662, 200, 490, 1331, - - 200, 491, 200, 493, 1331, 200, 200, 660, 200, 663, 1331, 661, 1331, 200, 200, 1331, 200, - 200, 200, 200, 492, 200, 200, 662, 200, 490, 200, 200, 491, 200, 493, 494, 200, 200, - 660, 200, 663, 200, 661, 200, 200, 200, 495, 200, 200, 200, 1331, 790, 200, 200, 200, - 1331, 200, 200, 1331, 1331, 791, 200, 494, 792, 793, 1331, 200, 794, 200, 795, 200, 796, - 797, 495, 798, 200, 799, 200, 790, 200, 200, 200, 200, 200, 200, 496, 200, 791, 200, - 200, 792, 793, 200, 200, 794, 498, 795, 1331, 796, 797, 1331, 798, 200, 799, - - 200, 800, 200, 1331, 1331, 200, 499, 200, 496, 200, 200, 801, 200, 802, 200, 200, 803, - 804, 498, 500, 200, 805, 1331, 501, 200, 200, 502, 806, 800, 200, 200, 200, 807, 499, - 808, 1331, 200, 200, 801, 200, 802, 200, 809, 803, 804, 1331, 500, 200, 805, 503, 501, - 200, 1331, 502, 806, 810, 200, 200, 200, 807, 200, 808, 504, 200, 1331, 811, 200, 505, - 506, 809, 812, 813, 200, 200, 814, 200, 503, 815, 1331, 507, 200, 200, 810, 816, 1331, - 200, 200, 200, 1331, 504, 508, 200, 811, 1331, 505, 506, 817, 812, 813, 200, - - 200, 814, 200, 818, 815, 509, 507, 200, 200, 200, 816, 200, 200, 200, 819, 200, 200, - 508, 200, 515, 513, 200, 1331, 817, 200, 200, 820, 821, 200, 822, 818, 1331, 509, 1331, - 514, 200, 200, 1331, 200, 1331, 1331, 819, 200, 200, 200, 823, 515, 513, 200, 510, 1331, - 200, 200, 820, 821, 200, 822, 1331, 511, 516, 200, 514, 200, 200, 200, 200, 512, 200, - 200, 1331, 200, 200, 823, 200, 200, 1331, 510, 517, 824, 1331, 825, 826, 1331, 200, 200, - 511, 516, 200, 827, 828, 200, 200, 200, 512, 200, 200, 519, 200, 518, 200, - - 200, 200, 200, 200, 517, 824, 200, 825, 826, 200, 200, 200, 200, 1331, 1331, 827, 828, - 522, 829, 200, 1331, 200, 200, 519, 1331, 518, 200, 200, 1331, 200, 200, 830, 1331, 200, - 1331, 831, 200, 200, 832, 200, 200, 520, 200, 833, 522, 829, 200, 200, 200, 200, 1331, - 200, 521, 834, 200, 200, 1331, 1331, 830, 523, 835, 200, 831, 838, 200, 832, 1331, 200, - 520, 200, 833, 200, 1331, 200, 200, 1331, 839, 200, 200, 521, 834, 840, 200, 200, 524, - 525, 523, 835, 200, 841, 838, 842, 200, 200, 1331, 845, 530, 200, 200, 200, - - 200, 200, 200, 839, 200, 526, 1331, 200, 840, 1331, 200, 524, 525, 1331, 1331, 846, 841, - 200, 842, 200, 200, 200, 845, 530, 200, 531, 200, 1331, 200, 200, 847, 200, 526, 527, - 200, 848, 200, 1331, 1331, 836, 528, 200, 846, 529, 200, 849, 200, 532, 200, 200, 837, - 534, 531, 533, 200, 200, 200, 847, 200, 200, 527, 200, 848, 200, 535, 536, 836, 528, - 200, 200, 529, 200, 849, 200, 532, 200, 200, 837, 534, 1331, 533, 200, 200, 200, 1331, - 200, 200, 1331, 200, 200, 850, 535, 536, 200, 1331, 851, 200, 538, 200, 200, - - 852, 200, 200, 853, 537, 200, 667, 854, 200, 200, 855, 200, 200, 200, 843, 844, 200, - 850, 200, 856, 200, 200, 851, 1331, 538, 1331, 200, 852, 200, 1331, 853, 537, 200, 667, - 854, 200, 200, 855, 200, 1331, 200, 843, 844, 1331, 1331, 200, 856, 1331, 200, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 200, 665, 200, 666, 200, 200, 200, 200, 857, 858, 200, 200, 200, 200, 1331, 859, - 860, 1331, 861, 1331, 200, 200, 200, 200, 1331, 1331, 1331, 200, 665, 200, 666, - - 200, 200, 200, 200, 857, 858, 200, 200, 200, 200, 668, 859, 860, 200, 861, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 862, 200, - 200, 1331, 669, 668, 863, 1331, 200, 864, 200, 865, 1331, 1331, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 670, 862, 200, 200, 200, 669, 200, 863, 200, 200, - 864, 866, 865, 672, 200, 200, 200, 1331, 673, 200, 200, 867, 671, 200, 200, 200, 868, - 670, 869, 200, 200, 200, 674, 200, 200, 200, 200, 870, 866, 200, 672, 200, - - 871, 200, 200, 673, 200, 200, 867, 671, 200, 200, 200, 868, 200, 869, 200, 200, 1331, - 674, 200, 200, 1331, 678, 870, 1331, 200, 1331, 1331, 871, 200, 200, 675, 1331, 676, 200, - 872, 200, 200, 200, 873, 200, 874, 1331, 200, 200, 875, 200, 200, 677, 678, 679, 200, - 1331, 200, 200, 680, 200, 200, 675, 200, 676, 200, 872, 200, 200, 200, 873, 200, 874, - 200, 200, 200, 875, 1331, 200, 677, 1331, 679, 200, 682, 200, 200, 680, 200, 200, 1331, - 200, 200, 1331, 876, 200, 683, 877, 200, 200, 200, 200, 878, 681, 200, 200, - - 879, 200, 200, 1331, 200, 682, 684, 880, 1331, 200, 1331, 200, 1331, 200, 200, 876, 881, - 683, 877, 200, 882, 200, 883, 878, 681, 200, 200, 879, 200, 200, 200, 200, 200, 684, - 880, 686, 685, 200, 200, 200, 884, 200, 200, 881, 200, 200, 200, 882, 982, 883, 983, - 687, 984, 1331, 985, 200, 200, 200, 688, 200, 200, 986, 686, 685, 200, 200, 200, 884, - 1331, 200, 200, 200, 200, 200, 1331, 982, 200, 983, 687, 984, 689, 985, 200, 200, 1331, - 688, 200, 200, 986, 987, 690, 691, 200, 988, 200, 200, 200, 200, 200, 1331, - - 989, 200, 990, 200, 200, 991, 692, 689, 1331, 1331, 992, 200, 1331, 200, 200, 993, 987, - 690, 691, 1331, 988, 200, 200, 200, 693, 200, 200, 989, 200, 990, 200, 200, 991, 692, - 994, 694, 200, 992, 200, 200, 1331, 200, 993, 1331, 200, 200, 200, 1331, 200, 995, 996, - 693, 997, 200, 200, 200, 1331, 200, 1331, 695, 1331, 994, 694, 200, 200, 1331, 200, 696, - 1331, 1331, 200, 200, 200, 200, 200, 200, 995, 996, 1331, 997, 200, 200, 200, 698, 998, - 200, 695, 200, 200, 200, 200, 200, 200, 200, 696, 200, 697, 200, 200, 999, - - 1000, 200, 1331, 200, 1001, 200, 1331, 200, 200, 1331, 698, 998, 200, 1002, 200, 200, 200, - 200, 1331, 200, 200, 1331, 200, 697, 700, 200, 999, 1000, 200, 699, 200, 1001, 200, 200, - 200, 200, 701, 200, 200, 1331, 1002, 1331, 200, 200, 200, 200, 1331, 200, 200, 1003, 1004, - 700, 702, 200, 1005, 200, 699, 200, 200, 1006, 200, 200, 1331, 701, 200, 200, 703, 1331, - 200, 200, 200, 200, 200, 200, 200, 200, 1003, 1004, 200, 702, 200, 1005, 1007, 1008, 200, - 200, 1006, 200, 1331, 200, 200, 1331, 200, 703, 705, 200, 704, 200, 1331, 200, - - 200, 1331, 200, 1331, 1009, 200, 1010, 1331, 706, 1007, 1008, 1331, 200, 708, 200, 200, 200, - 200, 200, 200, 200, 705, 1011, 704, 200, 200, 200, 1331, 200, 200, 707, 1009, 1012, 1010, - 200, 706, 1331, 1331, 200, 200, 708, 1331, 200, 1331, 200, 200, 1331, 200, 1013, 1011, 1331, - 1331, 200, 1014, 200, 200, 1015, 707, 1016, 1012, 1019, 200, 200, 709, 200, 200, 200, 710, - 200, 200, 711, 200, 200, 200, 200, 1013, 1017, 200, 200, 1018, 1014, 200, 200, 1015, 1331, - 1016, 1331, 1019, 1331, 200, 709, 200, 1331, 200, 710, 200, 200, 711, 712, 200, - - 200, 200, 1020, 1017, 200, 200, 1018, 714, 200, 200, 200, 200, 200, 200, 200, 200, 1021, - 1022, 200, 200, 200, 713, 1331, 200, 200, 712, 1331, 1023, 1024, 1020, 1025, 1026, 1331, 1027, - 714, 200, 1028, 200, 200, 200, 200, 200, 200, 1021, 1022, 200, 200, 200, 713, 200, 200, - 200, 200, 715, 1023, 1024, 200, 1025, 1026, 200, 1027, 200, 200, 1028, 1331, 200, 1331, 716, - 1029, 200, 1331, 200, 200, 1030, 717, 1331, 200, 1031, 1331, 200, 715, 200, 1331, 200, 1032, - 1331, 200, 200, 200, 200, 1331, 200, 200, 718, 716, 1029, 200, 200, 200, 200, - - 1030, 717, 200, 1033, 1031, 720, 200, 200, 200, 200, 1331, 1032, 719, 1034, 200, 200, 1331, - 721, 200, 1035, 718, 200, 200, 1036, 200, 200, 1331, 200, 1331, 200, 1033, 722, 720, 200, - 200, 200, 200, 200, 1331, 719, 1034, 200, 200, 723, 721, 1037, 1035, 200, 200, 200, 1036, - 200, 200, 724, 200, 200, 1331, 1331, 722, 200, 1038, 1331, 200, 200, 200, 200, 1331, 1039, - 200, 1040, 723, 725, 1037, 1041, 200, 200, 1331, 200, 200, 726, 724, 200, 200, 200, 200, - 1331, 200, 1038, 200, 200, 200, 1331, 200, 200, 1039, 1331, 1040, 1042, 725, 728, - - 1041, 1331, 200, 200, 200, 200, 726, 200, 200, 200, 200, 200, 200, 727, 1331, 200, 200, - 200, 200, 200, 200, 200, 729, 733, 1042, 200, 728, 1043, 200, 1331, 200, 200, 200, 1331, - 200, 1044, 200, 1045, 200, 200, 727, 200, 730, 200, 200, 200, 200, 200, 200, 729, 733, - 1046, 200, 200, 1043, 200, 200, 200, 200, 734, 200, 200, 1044, 200, 1045, 200, 200, 200, - 200, 730, 200, 736, 1331, 1047, 200, 1331, 200, 200, 1046, 1048, 200, 1331, 1049, 200, 200, - 1331, 734, 200, 200, 1050, 200, 731, 200, 200, 200, 200, 200, 1331, 736, 200, - - 1047, 732, 200, 200, 200, 200, 1048, 1051, 735, 1049, 1331, 1052, 200, 1331, 1331, 200, 1050, - 200, 731, 200, 200, 200, 200, 200, 200, 1126, 200, 200, 732, 200, 200, 1127, 200, 737, - 1051, 735, 1128, 200, 1052, 200, 200, 738, 200, 1129, 200, 200, 1331, 200, 200, 200, 1130, - 200, 1126, 1331, 200, 200, 1131, 200, 1127, 739, 737, 200, 1331, 1128, 200, 200, 200, 200, - 738, 1132, 1129, 200, 200, 200, 1331, 200, 200, 1130, 1331, 740, 200, 1133, 200, 1131, 1331, - 200, 739, 200, 200, 200, 1134, 742, 200, 200, 741, 200, 1132, 1331, 200, 200, - - 200, 200, 200, 1331, 1135, 743, 740, 200, 1133, 200, 1136, 200, 200, 1331, 200, 200, 200, - 1134, 742, 1331, 200, 741, 200, 1137, 200, 200, 200, 200, 200, 747, 200, 1135, 743, 744, - 200, 1331, 200, 1136, 200, 200, 200, 1331, 200, 1138, 1139, 1331, 752, 200, 200, 1331, 1137, - 200, 200, 200, 200, 1331, 747, 200, 200, 1140, 744, 200, 200, 750, 200, 1331, 200, 200, - 745, 200, 1138, 1139, 200, 752, 200, 200, 200, 1141, 1331, 1142, 200, 1143, 200, 1144, 1145, - 200, 1140, 746, 1146, 200, 750, 200, 200, 1331, 1147, 745, 200, 1331, 1148, 200, - - 751, 200, 1331, 200, 1141, 200, 1142, 200, 1143, 200, 1144, 1145, 200, 1149, 746, 1146, 200, - 200, 200, 200, 748, 1147, 1150, 200, 754, 1148, 1151, 751, 200, 200, 1331, 200, 200, 749, - 200, 1152, 200, 1331, 1331, 200, 1149, 200, 1331, 200, 200, 200, 753, 748, 1153, 1150, 200, - 754, 1154, 1151, 1155, 200, 200, 200, 200, 200, 749, 755, 1152, 200, 200, 200, 1156, 200, - 200, 200, 1157, 1158, 200, 753, 1331, 1153, 1331, 200, 756, 1154, 200, 1155, 1159, 1331, 200, - 200, 200, 1331, 755, 1331, 200, 200, 200, 1156, 200, 1160, 200, 1157, 1158, 200, - - 1161, 200, 1331, 200, 200, 756, 758, 200, 757, 1159, 200, 200, 200, 200, 760, 200, 200, - 200, 200, 200, 1162, 759, 1160, 200, 200, 1163, 200, 1161, 200, 200, 200, 200, 1331, 758, - 200, 757, 1331, 200, 200, 200, 200, 760, 200, 200, 1331, 200, 200, 1162, 759, 1331, 200, - 200, 1163, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, - 761, 764, 200, 200, 1164, 200, 763, 200, 200, 200, 762, 200, 200, 200, 200, 200, 200, - 765, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 761, 764, 200, 200, 1164, - - 200, 763, 200, 200, 200, 762, 200, 200, 200, 1165, 200, 200, 765, 200, 1166, 200, 200, - 767, 1167, 200, 200, 766, 1212, 1214, 200, 200, 200, 1215, 200, 200, 768, 1216, 1331, 200, - 1331, 1331, 1165, 1331, 200, 1331, 200, 1166, 200, 1217, 767, 1167, 200, 200, 766, 1212, 1214, - 200, 200, 200, 1215, 200, 200, 768, 1216, 200, 200, 200, 200, 1218, 770, 200, 200, 769, - 1331, 200, 1217, 200, 771, 1219, 200, 200, 200, 1331, 1220, 200, 1221, 1331, 200, 1331, 1331, - 200, 200, 1222, 200, 200, 1218, 770, 200, 200, 769, 200, 200, 1331, 200, 771, - - 1219, 200, 200, 200, 773, 1220, 200, 1221, 200, 200, 772, 200, 200, 774, 1222, 200, 1223, - 1331, 200, 200, 200, 1224, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 773, 1331, 200, - 775, 200, 778, 772, 200, 776, 774, 777, 200, 1223, 200, 200, 200, 200, 1224, 200, 200, - 200, 200, 200, 780, 200, 200, 200, 1225, 200, 200, 775, 1331, 778, 200, 1331, 776, 1331, - 777, 1226, 779, 200, 1331, 200, 200, 1227, 200, 1228, 200, 200, 200, 780, 200, 1331, 200, - 1225, 200, 200, 1331, 781, 1229, 200, 200, 1331, 200, 1331, 1226, 779, 1230, 782, - - 1231, 200, 1227, 1232, 1228, 200, 1331, 200, 200, 200, 200, 200, 1256, 1258, 200, 200, 781, - 1229, 1259, 200, 200, 200, 200, 1260, 200, 1230, 782, 1231, 1261, 200, 1232, 1331, 1331, 783, - 200, 200, 200, 200, 200, 1256, 1258, 1331, 200, 200, 784, 1259, 1331, 200, 200, 200, 1260, - 200, 200, 1262, 785, 1261, 200, 1263, 786, 200, 783, 200, 787, 200, 200, 200, 200, 1264, - 200, 1331, 200, 784, 1265, 200, 1331, 200, 1331, 1331, 200, 200, 1262, 785, 1213, 1213, 1263, - 786, 200, 1266, 1267, 787, 200, 200, 200, 200, 1264, 200, 788, 200, 1283, 1265, - - 200, 200, 200, 200, 200, 200, 200, 886, 200, 1284, 887, 200, 1285, 200, 1266, 1267, 200, - 200, 1331, 200, 1257, 1331, 200, 788, 200, 1283, 200, 1331, 200, 200, 200, 200, 200, 200, - 886, 200, 1284, 887, 200, 1285, 200, 200, 888, 200, 200, 200, 892, 1257, 200, 200, 200, - 200, 1286, 200, 200, 1289, 200, 890, 200, 200, 891, 889, 1282, 1282, 200, 200, 200, 1331, - 200, 888, 200, 200, 200, 892, 1331, 200, 1331, 200, 200, 1286, 1331, 200, 1289, 200, 890, - 200, 1295, 891, 889, 1296, 1331, 200, 200, 200, 200, 894, 893, 200, 200, 200, - - 1331, 200, 200, 895, 1294, 200, 200, 200, 200, 1331, 1331, 200, 1299, 1295, 1331, 200, 1296, - 200, 200, 1331, 1331, 200, 894, 893, 1331, 200, 200, 200, 200, 200, 895, 1294, 200, 200, - 200, 200, 200, 200, 200, 1299, 200, 200, 200, 1302, 200, 200, 200, 200, 1331, 1304, 1331, - 896, 1306, 1308, 200, 200, 200, 200, 1331, 200, 1235, 1213, 1331, 200, 200, 200, 1331, 200, - 200, 1310, 1302, 1331, 1331, 200, 200, 200, 1304, 200, 896, 1306, 1308, 200, 200, 200, 200, - 897, 200, 200, 1312, 200, 200, 200, 200, 898, 200, 200, 1310, 200, 1270, 200, - - 200, 200, 200, 899, 200, 1314, 1331, 1331, 200, 200, 200, 200, 897, 1331, 200, 1312, 200, - 200, 200, 200, 898, 200, 200, 200, 200, 1270, 200, 200, 200, 200, 899, 1316, 1314, 200, - 900, 200, 200, 200, 200, 200, 901, 1318, 1331, 902, 200, 200, 200, 200, 200, 1331, 200, - 1331, 1331, 200, 200, 1320, 200, 1322, 1316, 903, 200, 900, 200, 200, 200, 1331, 200, 901, - 1318, 200, 902, 200, 200, 200, 200, 200, 904, 1331, 200, 200, 200, 200, 1320, 200, 1322, - 1324, 903, 1331, 200, 200, 200, 200, 200, 905, 200, 1331, 200, 1288, 1282, 200, - - 200, 1331, 1331, 904, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 1324, 1331, 1331, 200, 200, - 1331, 1331, 200, 905, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 906, 1331, - 200, 200, 200, 1331, 1331, 1298, 1331, 200, 907, 1331, 1331, 1331, 200, 908, 1331, 1331, 200, - 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 906, 200, 200, 200, 200, 1331, 200, 1298, 1331, - 200, 907, 200, 1331, 1331, 200, 908, 910, 200, 1331, 200, 1331, 1331, 1331, 909, 200, 200, - 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 200, 200, 911, 1331, - - 1331, 1331, 910, 200, 200, 200, 1331, 1331, 1331, 909, 200, 200, 1331, 200, 200, 200, 1331, - 912, 200, 200, 200, 200, 200, 200, 200, 911, 200, 200, 200, 200, 919, 200, 200, 200, - 200, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 912, 1331, 200, 200, 1331, 200, 200, - 200, 1331, 200, 200, 200, 200, 919, 1331, 200, 200, 200, 200, 1331, 200, 200, 913, 200, - 200, 200, 200, 1331, 914, 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, - 915, 1331, 1331, 200, 200, 1331, 200, 1331, 913, 1331, 200, 200, 200, 917, 914, - - 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 915, 200, 916, 200, 200, - 1331, 200, 918, 1331, 200, 1331, 1331, 200, 917, 1331, 1331, 200, 1331, 200, 1331, 200, 200, - 200, 200, 200, 200, 200, 1331, 200, 916, 200, 200, 200, 200, 918, 1331, 200, 1331, 200, - 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 921, 1331, 200, 920, 1331, 1331, - 1331, 200, 200, 200, 200, 1331, 922, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 1331, - 1331, 200, 200, 200, 921, 200, 1331, 920, 1331, 200, 1331, 200, 200, 200, 200, - - 200, 922, 1331, 200, 923, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, - 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 923, 200, 924, - 200, 200, 925, 200, 1331, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 200, 1331, - 200, 1331, 200, 1331, 200, 1331, 200, 1331, 200, 924, 200, 1331, 925, 200, 1331, 200, 200, - 200, 200, 200, 200, 200, 200, 927, 200, 200, 926, 200, 200, 1331, 1331, 200, 1331, 200, - 200, 1331, 1331, 928, 1331, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, - - 1331, 927, 200, 200, 926, 200, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 928, 200, - 1331, 200, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 929, 200, 930, 200, 1331, 931, - 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, - 200, 1331, 200, 200, 929, 200, 930, 200, 1331, 931, 200, 1331, 200, 1331, 1331, 200, 932, - 200, 934, 200, 200, 200, 1331, 200, 200, 200, 1331, 933, 200, 200, 200, 1331, 1331, 200, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 932, 200, 934, 200, 200, 200, - - 1331, 200, 200, 200, 1331, 933, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, - 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, - 1331, 200, 200, 200, 1331, 200, 200, 936, 200, 200, 200, 935, 1331, 200, 200, 200, 1331, - 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, - 936, 200, 200, 200, 935, 937, 200, 200, 200, 200, 200, 200, 200, 938, 200, - - 200, 1331, 200, 941, 200, 200, 200, 200, 200, 200, 200, 939, 940, 1331, 200, 200, 200, - 937, 200, 200, 1331, 200, 200, 1331, 1331, 938, 200, 200, 1331, 200, 941, 200, 200, 200, - 200, 200, 200, 200, 939, 940, 200, 200, 200, 200, 943, 200, 200, 200, 200, 200, 200, - 1331, 200, 942, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, - 200, 1331, 1331, 943, 1331, 1331, 200, 200, 200, 200, 1331, 200, 942, 200, 944, 1331, 200, - 200, 200, 200, 200, 1331, 1331, 1331, 945, 200, 200, 200, 200, 200, 1331, 1331, - - 1331, 1331, 200, 200, 200, 1331, 946, 1331, 1331, 944, 1331, 200, 200, 200, 1331, 200, 1331, - 1331, 1331, 945, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 946, - 200, 947, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 948, 200, 200, 1331, 200, 949, - 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 947, 1331, 200, 200, 200, 1331, - 200, 200, 1331, 200, 948, 200, 200, 200, 950, 949, 1331, 200, 200, 200, 1331, 200, 200, - 200, 200, 1331, 1331, 1331, 951, 1331, 1331, 200, 200, 200, 200, 1331, 200, 1331, - - 1331, 1331, 200, 950, 200, 1331, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 1331, 952, - 951, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 953, 200, 200, 200, 200, 200, - 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 952, 1331, 1331, 200, 200, 200, 200, 954, - 200, 200, 1331, 1331, 953, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, - 200, 200, 200, 1331, 200, 200, 200, 200, 200, 954, 200, 200, 200, 955, 200, 1331, 1331, - 956, 200, 1331, 200, 200, 200, 957, 200, 1331, 200, 200, 1331, 200, 200, 200, - - 1331, 200, 200, 1331, 200, 200, 1331, 200, 955, 200, 1331, 1331, 956, 200, 200, 200, 200, - 200, 957, 200, 200, 200, 1331, 960, 958, 200, 200, 1331, 200, 200, 959, 200, 200, 1331, - 200, 200, 200, 1331, 961, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 960, - 958, 1331, 200, 1331, 200, 1331, 959, 200, 200, 200, 200, 200, 200, 200, 961, 200, 200, - 200, 200, 200, 200, 200, 963, 962, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, - 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 200, 964, 200, 1331, 200, - - 963, 962, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 965, 200, 1331, - 200, 200, 200, 200, 200, 200, 964, 200, 1331, 200, 966, 1331, 200, 1331, 200, 200, 200, - 200, 1331, 200, 200, 967, 200, 200, 965, 200, 200, 200, 200, 200, 1331, 200, 200, 200, - 200, 200, 200, 966, 1331, 200, 968, 200, 200, 200, 200, 200, 200, 200, 967, 1331, 200, - 1331, 200, 200, 969, 1331, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 968, - 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 970, 969, 1331, - - 200, 200, 1331, 200, 200, 1331, 971, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, - 200, 1331, 200, 1331, 1331, 200, 200, 970, 200, 973, 200, 1331, 1331, 200, 200, 972, 971, - 200, 200, 200, 200, 200, 200, 1331, 200, 974, 200, 200, 1331, 200, 1331, 1331, 200, 200, - 1331, 200, 973, 1331, 1331, 1331, 200, 1331, 972, 975, 200, 200, 200, 200, 200, 200, 200, - 200, 974, 976, 200, 200, 200, 200, 200, 200, 200, 977, 200, 200, 1331, 1331, 1331, 1331, - 200, 1331, 975, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1331, 976, 1331, 200, - - 1331, 200, 200, 1331, 200, 977, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, - 200, 1331, 200, 200, 200, 200, 979, 200, 1331, 978, 200, 200, 200, 200, 200, 1331, 200, - 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 979, - 200, 1331, 978, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, - 200, 980, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 980, 1331, 1331, 200, - - 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1055, 200, 200, 200, 200, 200, - 1331, 200, 200, 1054, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 200, 200, - 200, 200, 200, 1331, 1055, 200, 200, 200, 200, 200, 1331, 200, 200, 1054, 200, 200, 1056, - 200, 1331, 1331, 200, 200, 1331, 1331, 200, 200, 200, 200, 1331, 1059, 200, 1058, 1057, 1331, - 200, 200, 200, 200, 1331, 200, 200, 1331, 1331, 1056, 200, 200, 1331, 200, 200, 1331, 200, - 1331, 1331, 200, 200, 200, 1059, 200, 1058, 1057, 1331, 200, 200, 200, 200, 1331, - - 200, 200, 1060, 200, 200, 1061, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 200, 200, 200, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 1060, 200, 200, 1061, 200, - 1062, 200, 200, 200, 200, 1064, 200, 200, 200, 200, 200, 200, 1063, 1065, 200, 200, 1331, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1062, 1066, 200, 200, 200, 1064, 200, - 200, 1331, 200, 200, 200, 1063, 1065, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, - 200, 200, 1331, 200, 1066, 1331, 200, 200, 1068, 1331, 200, 1070, 200, 1067, 1331, - - 200, 200, 1069, 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, - 200, 1331, 200, 1068, 1331, 200, 1070, 200, 1067, 200, 200, 200, 1069, 1331, 200, 200, 200, - 200, 200, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1071, - 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 1073, 1331, 1072, 1331, 1331, 200, 200, 200, - 1331, 200, 200, 1074, 1331, 200, 200, 200, 1075, 1071, 200, 1331, 200, 200, 1331, 200, 200, - 200, 200, 1073, 1331, 1072, 1331, 200, 200, 200, 200, 200, 200, 200, 1074, 200, - - 1331, 1331, 200, 1075, 200, 200, 200, 200, 200, 1331, 1076, 1078, 1331, 200, 1331, 200, 200, - 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 1331, 200, 200, 200, 200, - 1331, 1077, 1331, 1076, 1078, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 200, 1079, 200, 1331, - 200, 1331, 200, 200, 1331, 1331, 200, 1083, 200, 200, 1331, 1077, 1331, 200, 200, 1080, 200, - 200, 200, 200, 200, 200, 1331, 1331, 1079, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, - 1083, 200, 200, 200, 1331, 200, 200, 200, 1080, 200, 200, 200, 200, 200, 200, - - 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 1081, - 200, 200, 1331, 1331, 200, 1331, 1331, 200, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, - 200, 200, 1331, 200, 1331, 1082, 200, 1085, 200, 1081, 200, 200, 200, 1084, 200, 1331, 1331, - 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 1082, 200, - 1085, 200, 200, 200, 200, 200, 1084, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, - 200, 200, 1331, 200, 1331, 1331, 200, 1086, 1331, 1331, 1331, 200, 200, 1331, 200, - - 200, 1331, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, - 1331, 200, 1086, 1331, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, - 200, 200, 1087, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 1088, 1331, 200, 1089, 200, - 1331, 1090, 200, 200, 200, 200, 200, 1091, 1331, 200, 1331, 200, 1087, 1331, 200, 200, 200, - 1331, 200, 200, 200, 1331, 1088, 1331, 1331, 1089, 200, 1331, 1090, 1331, 200, 200, 200, 200, - 1091, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1092, 1331, - - 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 1331, 200, 200, 1331, 200, 1092, 1331, 200, 1331, 1331, 200, 1331, 200, 200, - 1093, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 200, - 200, 1331, 1331, 200, 1094, 1331, 200, 1331, 200, 200, 1093, 1331, 1331, 200, 200, 1331, 1095, - 1331, 200, 1331, 200, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, 200, 200, 1094, 1331, 200, - 200, 200, 200, 1331, 1331, 200, 200, 1096, 1097, 1095, 1331, 200, 200, 1331, 200, - - 1331, 1331, 1331, 1331, 200, 200, 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 1331, - 200, 200, 1096, 1097, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1098, - 1331, 200, 200, 200, 1099, 200, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, - 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 1098, 1331, 200, 1331, 200, 1099, 200, 200, - 200, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1101, 200, 1331, 200, 1331, 200, - 200, 1331, 1100, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, - - 200, 1331, 1331, 200, 1331, 1331, 1101, 200, 200, 200, 1331, 200, 200, 1331, 1100, 1331, 200, - 200, 200, 200, 200, 1102, 1331, 1331, 1331, 1331, 200, 200, 200, 1103, 200, 1331, 1331, 1331, - 200, 200, 200, 1331, 1331, 200, 200, 1331, 1104, 200, 1331, 200, 200, 200, 1102, 1331, 200, - 1331, 200, 200, 200, 200, 1103, 200, 1105, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, - 1331, 1104, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1106, 200, 1331, 1331, 200, - 1105, 200, 1331, 200, 200, 1331, 200, 1107, 200, 200, 1331, 200, 200, 200, 1331, - - 200, 200, 200, 200, 200, 1331, 200, 1106, 200, 1108, 200, 200, 1331, 200, 200, 200, 200, - 1331, 200, 1107, 200, 200, 200, 200, 200, 200, 1110, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 1108, 200, 1331, 1109, 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 1112, - 200, 1331, 1110, 200, 200, 1331, 200, 200, 200, 1331, 200, 1111, 200, 200, 1331, 1109, 200, - 200, 200, 200, 200, 1331, 200, 200, 1113, 1331, 1112, 1331, 1331, 200, 200, 1331, 200, 1331, - 200, 200, 1331, 200, 1111, 200, 200, 1114, 200, 200, 200, 1331, 200, 200, 1331, - - 200, 200, 1113, 1331, 200, 1331, 200, 200, 1331, 1331, 200, 200, 1115, 200, 1331, 200, 200, - 1116, 1331, 1114, 200, 1331, 1331, 1117, 1331, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 200, - 200, 200, 200, 1331, 200, 1115, 200, 200, 1331, 200, 1116, 1331, 200, 200, 1331, 1118, 1117, - 1331, 1331, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, - 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1118, 1331, 1119, 1120, 200, 200, 200, 1331, 200, - 200, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 1331, - - 200, 1331, 1331, 1331, 1121, 1119, 1120, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, - 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1331, 200, 1122, 1123, 1331, 1121, 200, 200, - 1331, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 200, 200, - 200, 200, 1124, 1331, 1122, 1123, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1124, 1331, 200, 1331, 1331, - 1331, 1331, 1331, 200, 1331, 200, 200, 1169, 200, 1331, 200, 200, 200, 200, 200, - - 200, 200, 200, 200, 200, 200, 200, 1331, 1170, 200, 1172, 200, 200, 200, 200, 200, 1331, - 200, 200, 1169, 200, 200, 200, 200, 200, 1331, 1171, 200, 200, 200, 200, 200, 200, 200, - 1331, 1170, 200, 1172, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, - 200, 1331, 1171, 200, 1331, 200, 200, 200, 1331, 200, 1173, 200, 200, 1331, 1331, 200, 1174, - 200, 1175, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, - 1331, 1331, 200, 1173, 200, 1331, 1331, 1331, 200, 1174, 200, 1175, 200, 200, 200, - - 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 1177, 200, 200, - 200, 1176, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, - 1331, 1331, 1331, 200, 200, 200, 200, 1177, 200, 200, 200, 1176, 1178, 200, 1331, 200, 1331, - 1179, 200, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, - 1331, 1331, 1331, 200, 1180, 1178, 1331, 1331, 200, 1331, 1179, 1331, 200, 1331, 200, 1331, 200, - 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1181, 200, 200, 1180, - - 1331, 1331, 200, 200, 1331, 1331, 200, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, - 1331, 200, 1331, 1331, 200, 200, 1181, 200, 1331, 1331, 1331, 1182, 200, 1331, 1331, 1331, 200, - 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 200, - 200, 200, 200, 1331, 1182, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 1331, - 1331, 1331, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 1183, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1184, 200, 1331, 1331, - - 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1183, 200, 1331, 1331, 200, 200, 200, 1331, - 1331, 200, 200, 200, 200, 1331, 1184, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, - 200, 1186, 200, 200, 1185, 1331, 200, 200, 200, 1331, 1331, 1331, 200, 1331, 1331, 1331, 200, - 200, 1331, 1331, 200, 1331, 200, 200, 200, 200, 200, 1331, 1186, 200, 200, 1185, 1331, 200, - 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, - - 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, - 200, 1331, 200, 200, 200, 200, 1331, 1188, 200, 200, 200, 200, 1187, 1331, 200, 1331, 1331, - 200, 1331, 200, 1331, 1189, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 1331, 200, - 1188, 200, 200, 200, 200, 1187, 1331, 1331, 1331, 200, 200, 200, 200, 200, 1189, 1331, 1331, - 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1331, 1190, 200, - 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, - - 1191, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1190, 200, 200, 200, 1331, 200, 1331, - 1331, 200, 200, 1331, 200, 1331, 1331, 1331, 1192, 200, 1191, 1331, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, - 1331, 1192, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, 1193, 200, 200, 200, 200, 200, - 1331, 200, 200, 1194, 200, 1331, 1331, 200, 1195, 200, 1331, 1331, 1196, 200, 200, 200, 200, - 1331, 1331, 200, 200, 1193, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1194, 200, - - 200, 1331, 200, 1195, 200, 1331, 200, 1196, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, - 200, 1331, 200, 200, 1331, 1197, 1331, 1331, 1331, 200, 200, 1198, 200, 200, 1331, 1331, 200, - 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1199, 200, 200, 1331, 1331, 200, 200, 1197, 200, - 1331, 1331, 200, 200, 1198, 1331, 200, 200, 1331, 200, 200, 1331, 200, 200, 1200, 200, 200, - 200, 1199, 200, 200, 200, 1201, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 200, - 200, 1331, 200, 1331, 1331, 1331, 200, 1200, 200, 1331, 200, 200, 200, 1202, 200, - - 1201, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1203, 200, 200, 1331, 200, 1331, 1331, - 200, 1331, 1331, 1331, 1331, 200, 200, 1331, 1202, 200, 1331, 200, 200, 200, 200, 1331, 200, - 1204, 200, 200, 1203, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1234, 200, 1331, 200, 200, - 1331, 200, 200, 1331, 200, 200, 200, 1205, 1206, 200, 1204, 1331, 1331, 1331, 200, 200, 1331, - 200, 200, 200, 200, 200, 1234, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, - 1205, 1206, 1331, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 200, 200, - - 1207, 1331, 200, 200, 200, 1208, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1207, 200, 1331, 1331, 200, 1208, 1331, - 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, - 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 1331, 1209, 200, - 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1210, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, - 1331, 200, 200, 200, 200, 200, 200, 200, 1209, 200, 1331, 200, 200, 1331, 200, - - 1331, 1331, 200, 1210, 200, 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 200, - 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, - 200, 1331, 200, 1331, 200, 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 200, - 1331, 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, 1331, 200, 1235, 1213, 200, 200, - 1331, 1331, 200, 200, 1331, 200, 1236, 1331, 1331, 200, 200, 1331, 1331, 200, 1331, 200, 200, - 1331, 1331, 200, 1237, 200, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, - - 1331, 1236, 200, 1331, 200, 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1237, 200, - 1331, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, 1238, 200, 1331, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 1239, 200, 200, - 200, 200, 200, 1331, 200, 1331, 1238, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, - 200, 200, 200, 1331, 200, 200, 1331, 1239, 1331, 200, 200, 200, 200, 200, 1331, 1331, 1331, - 200, 1331, 1331, 200, 200, 200, 200, 1240, 1331, 1331, 200, 1331, 200, 1331, 200, - - 1331, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1331, 1241, 200, 200, - 200, 200, 1240, 1242, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, 200, - 1331, 200, 1331, 1331, 200, 1331, 1331, 1241, 1331, 200, 200, 1331, 200, 1242, 1331, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, - 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 1244, - 1243, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 200, 1331, 1246, 200, 1245, - - 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1244, 1243, 200, 1331, 200, 200, - 1331, 200, 1331, 200, 200, 200, 1331, 1246, 200, 1245, 200, 200, 200, 200, 200, 200, 1331, - 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 1247, 1331, 1331, 1331, - 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, - 200, 1248, 200, 1331, 200, 200, 1247, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, - 200, 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, 1248, 200, 1331, 200, - - 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1249, 1331, 1331, - 200, 200, 200, 1331, 200, 200, 1331, 1331, 1331, 200, 200, 1251, 200, 200, 200, 200, 200, - 200, 200, 1250, 200, 1331, 200, 200, 1249, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 1331, - 1331, 1331, 200, 200, 1251, 200, 200, 200, 200, 200, 200, 200, 1250, 200, 1331, 200, 200, - 1252, 200, 1253, 1254, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, 1331, 200, 1331, - 1331, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1252, 1331, 1253, 1254, 200, - - 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 1331, - 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 200, 1331, - 200, 1331, 200, 1269, 1331, 200, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 1331, 200, - 200, 200, 200, 1331, 200, 200, 1331, 1271, 1331, 1331, 200, 1331, 200, 1269, 1331, 200, 1331, - 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 1272, - 1271, 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 1273, 200, - - 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 1272, 1331, 200, 200, 200, 200, - 200, 1331, 200, 200, 1331, 200, 200, 200, 1273, 200, 200, 200, 200, 200, 1331, 200, 200, - 200, 1331, 1274, 1331, 1331, 200, 1276, 1275, 200, 200, 200, 200, 200, 200, 1331, 200, 200, - 200, 200, 200, 200, 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 1274, 1331, 1331, 200, 1276, - 1275, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, 200, - 1331, 1331, 200, 200, 200, 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, - - 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, - 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1277, 200, 200, 1279, 200, 1278, 200, - 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, 1280, - 200, 200, 200, 1277, 200, 200, 1279, 200, 1278, 200, 200, 1331, 200, 1288, 1282, 200, 1331, - 200, 1331, 1290, 200, 1331, 200, 200, 200, 200, 1280, 200, 200, 200, 1331, 200, 1331, 200, - 200, 200, 1331, 200, 200, 200, 1291, 1331, 200, 1331, 200, 200, 1290, 200, 200, - - 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 1291, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 200, - 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 200, 200, 200, - 200, 1292, 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, - 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1300, 200, 1292, 1331, 200, 200, - - 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, - 1331, 1331, 200, 200, 1300, 1331, 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, - 200, 1331, 1331, 1331, 1331, 200, 46, 46, 46, 46, 46, 88, 1331, 1331, 88, 88, 185, - 185, 185, 1331, 185, 187, 1331, 187, 187, 187, 190, 1331, 190, 190, 190, 200, 1331, 200, - 200, 200, 7, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; - -static const flex_int16_t yy_chk[8848] = { - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 9, 9, 10, 10, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 21, 22, 21, 27, - 28, 22, 23, 30, 21, 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, - - 41, 23, 22, 41, 23, 1334, 44, 23, 21, 22, 21, 27, 28, 22, 23, 30, 21, - 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, 41, 23, 24, 44, - 23, 25, 24, 25, 49, 49, 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, 55, - 32, 50, 50, 33, 43, 43, 58, 58, 24, 1328, 55, 25, 24, 25, 1327, 34, 24, - 32, 25, 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, 34, 33, 43, 43, 100, - 26, 34, 34, 26, 103, 36, 26, 29, 34, 26, 1326, 36, 26, 29, 29, - - 29, 42, 86, 86, 26, 29, 36, 34, 1325, 42, 1323, 100, 26, 34, 34, 26, 103, - 36, 26, 29, 1321, 26, 35, 36, 26, 29, 29, 29, 42, 104, 35, 38, 29, 101, - 35, 38, 42, 35, 35, 38, 81, 101, 81, 106, 81, 38, 1319, 81, 1317, 35, 102, - 1315, 81, 102, 1313, 107, 104, 35, 38, 1311, 101, 35, 38, 1309, 35, 35, 38, 81, - 101, 81, 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, 102, 39, 107, 39, 113, - 39, 39, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 188, 188, 1307, - - 39, 1305, 39, 110, 1303, 39, 105, 105, 39, 109, 39, 113, 39, 39, 40, 112, 109, - 67, 40, 67, 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, 117, 40, 1301, 105, - 105, 1297, 109, 1133, 1133, 1256, 1256, 40, 112, 109, 67, 40, 67, 105, 40, 40, 67, - 67, 112, 116, 116, 40, 67, 117, 40, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, 68, 114, 1293, 1287, 68, - 1281, 114, 120, 68, 61, 61, 61, 70, 121, 68, 61, 70, 61, 123, 118, - - 124, 125, 70, 61, 68, 61, 119, 68, 114, 61, 61, 68, 70, 114, 120, 68, 127, - 128, 1268, 70, 121, 68, 61, 70, 61, 123, 1255, 124, 125, 70, 61, 68, 61, 1233, - 129, 1211, 61, 61, 1168, 70, 1125, 1053, 981, 127, 128, 61, 62, 62, 885, 62, 62, - 62, 62, 62, 62, 789, 664, 130, 71, 72, 73, 129, 71, 72, 73, 62, 62, 62, - 71, 72, 73, 131, 62, 77, 131, 126, 62, 77, 71, 72, 73, 126, 62, 77, 130, - 71, 72, 73, 132, 71, 72, 73, 62, 77, 539, 71, 72, 73, 131, 62, - - 77, 131, 126, 62, 77, 71, 72, 73, 126, 62, 77, 414, 288, 83, 133, 132, 83, - 83, 135, 62, 77, 62, 63, 83, 78, 136, 63, 138, 78, 63, 63, 139, 78, 83, - 140, 141, 63, 144, 78, 63, 83, 133, 63, 83, 83, 135, 63, 192, 78, 63, 83, - 78, 136, 63, 138, 78, 63, 63, 139, 78, 83, 140, 141, 63, 144, 78, 63, 190, - 90, 63, 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, 82, 84, 64, 142, 145, - 142, 82, 84, 64, 137, 146, 64, 147, 149, 137, 137, 82, 84, 64, 82, - - 60, 64, 59, 82, 84, 64, 137, 82, 84, 64, 142, 145, 142, 82, 84, 64, 137, - 146, 64, 147, 149, 137, 137, 82, 84, 64, 65, 111, 111, 111, 65, 111, 115, 65, - 115, 65, 65, 115, 150, 143, 65, 143, 151, 115, 153, 65, 65, 52, 148, 154, 115, - 148, 143, 65, 111, 111, 111, 65, 111, 115, 65, 115, 65, 65, 115, 150, 143, 65, - 143, 151, 115, 153, 65, 65, 66, 148, 154, 115, 148, 143, 155, 66, 66, 156, 157, - 66, 158, 122, 66, 122, 158, 66, 159, 122, 66, 51, 161, 47, 45, 163, - - 122, 66, 20, 19, 122, 11, 166, 155, 66, 66, 156, 157, 66, 158, 122, 66, 122, - 158, 66, 159, 122, 66, 69, 161, 160, 162, 163, 122, 69, 69, 69, 122, 165, 166, - 167, 69, 162, 160, 168, 169, 69, 7, 160, 4, 170, 3, 165, 172, 0, 69, 173, - 160, 162, 174, 177, 69, 69, 69, 0, 165, 0, 167, 69, 162, 160, 168, 169, 69, - 74, 160, 164, 170, 171, 165, 172, 74, 175, 173, 178, 164, 174, 177, 74, 171, 176, - 74, 179, 164, 74, 74, 0, 176, 179, 0, 176, 74, 175, 164, 181, 171, - - 182, 183, 74, 175, 0, 178, 164, 0, 291, 74, 171, 176, 74, 179, 164, 74, 74, - 75, 176, 179, 180, 176, 75, 175, 75, 181, 293, 182, 183, 294, 75, 75, 200, 180, - 75, 291, 200, 75, 75, 0, 0, 0, 200, 296, 75, 0, 0, 180, 298, 75, 0, - 75, 200, 293, 0, 299, 294, 75, 75, 200, 180, 75, 300, 200, 75, 75, 76, 201, - 201, 200, 296, 301, 201, 76, 0, 298, 302, 76, 201, 200, 76, 202, 299, 76, 303, - 202, 76, 0, 201, 300, 305, 202, 0, 76, 201, 201, 202, 0, 301, 201, - - 76, 202, 306, 302, 76, 201, 307, 76, 202, 0, 76, 303, 202, 76, 79, 201, 79, - 305, 202, 79, 79, 0, 79, 202, 79, 308, 79, 79, 202, 306, 309, 310, 311, 307, - 312, 313, 79, 0, 314, 0, 0, 79, 0, 79, 0, 0, 79, 79, 203, 79, 203, - 79, 308, 79, 79, 203, 203, 309, 310, 311, 203, 312, 313, 79, 80, 314, 209, 205, - 80, 205, 209, 80, 80, 205, 205, 203, 209, 203, 80, 205, 315, 80, 203, 203, 316, - 317, 209, 203, 80, 0, 0, 80, 0, 209, 205, 80, 205, 209, 80, 80, - - 205, 205, 0, 209, 0, 80, 205, 315, 80, 0, 0, 316, 317, 209, 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, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 204, 206, 208, 204, 304, 319, 304, - 208, 320, 208, 206, 204, 206, 204, 208, 321, 0, 206, 204, 208, 0, 304, - - 206, 204, 0, 0, 0, 204, 206, 208, 204, 304, 319, 304, 208, 320, 208, 206, 204, - 206, 204, 208, 321, 210, 206, 204, 208, 210, 304, 206, 204, 207, 207, 210, 211, 322, - 211, 207, 318, 207, 0, 211, 0, 210, 207, 207, 211, 0, 323, 207, 210, 324, 0, - 318, 210, 326, 212, 327, 207, 207, 210, 211, 322, 211, 207, 318, 207, 212, 211, 212, - 210, 207, 207, 211, 212, 323, 207, 0, 324, 212, 318, 0, 326, 212, 327, 214, 0, - 0, 328, 214, 329, 330, 0, 0, 212, 214, 212, 331, 332, 333, 215, 212, - - 0, 334, 215, 214, 212, 213, 213, 213, 215, 213, 214, 215, 213, 328, 214, 329, 330, - 213, 215, 335, 214, 336, 331, 332, 333, 215, 337, 216, 334, 215, 214, 216, 213, 213, - 213, 215, 213, 216, 215, 213, 338, 339, 216, 340, 213, 215, 335, 216, 336, 341, 0, - 342, 343, 337, 216, 344, 0, 345, 216, 0, 346, 0, 0, 0, 216, 347, 0, 338, - 339, 216, 340, 0, 348, 349, 216, 217, 341, 217, 342, 343, 217, 351, 344, 218, 345, - 218, 217, 346, 217, 218, 218, 0, 347, 217, 219, 218, 219, 0, 217, 348, - - 349, 219, 217, 219, 217, 352, 219, 217, 351, 354, 218, 0, 218, 217, 220, 217, 218, - 218, 220, 0, 217, 219, 218, 219, 220, 217, 0, 355, 219, 350, 219, 0, 352, 219, - 220, 221, 354, 221, 222, 350, 0, 220, 221, 0, 356, 220, 222, 221, 222, 0, 0, - 220, 357, 222, 355, 0, 350, 359, 222, 0, 360, 220, 221, 361, 221, 222, 350, 223, - 362, 221, 225, 356, 225, 222, 221, 222, 223, 225, 223, 357, 222, 363, 225, 223, 359, - 222, 358, 360, 223, 0, 361, 0, 0, 365, 223, 362, 358, 225, 366, 225, - - 0, 0, 0, 223, 225, 223, 0, 367, 363, 225, 223, 0, 226, 358, 226, 223, 224, - 227, 224, 226, 365, 227, 224, 358, 226, 366, 368, 227, 224, 224, 369, 370, 371, 224, - 367, 0, 0, 227, 224, 226, 0, 226, 0, 224, 227, 224, 226, 373, 227, 224, 375, - 226, 0, 368, 227, 224, 224, 369, 370, 371, 224, 228, 229, 228, 227, 224, 229, 228, - 228, 230, 0, 230, 229, 228, 373, 376, 230, 375, 0, 374, 0, 230, 229, 0, 0, - 0, 377, 231, 228, 229, 228, 231, 374, 229, 228, 228, 230, 231, 230, 229, - - 228, 232, 376, 230, 378, 232, 374, 231, 230, 229, 233, 232, 233, 377, 231, 379, 380, - 233, 231, 374, 233, 232, 233, 234, 231, 234, 0, 0, 232, 0, 234, 378, 232, 0, - 231, 234, 0, 233, 232, 233, 381, 382, 379, 380, 233, 0, 383, 233, 232, 233, 234, - 235, 234, 235, 236, 237, 236, 234, 235, 237, 235, 236, 234, 235, 384, 237, 236, 381, - 382, 385, 372, 0, 240, 383, 240, 237, 387, 0, 235, 240, 235, 236, 237, 236, 240, - 235, 237, 235, 236, 372, 235, 384, 237, 236, 238, 388, 385, 372, 238, 240, - - 389, 240, 237, 387, 238, 238, 240, 0, 241, 242, 0, 240, 241, 242, 238, 0, 372, - 390, 241, 242, 0, 238, 388, 0, 391, 238, 0, 389, 241, 242, 0, 238, 238, 243, - 243, 241, 242, 243, 392, 241, 242, 238, 239, 243, 390, 241, 242, 247, 393, 247, 239, - 391, 239, 243, 247, 241, 242, 239, 239, 247, 243, 243, 239, 0, 243, 392, 394, 0, - 0, 239, 243, 0, 0, 0, 247, 393, 247, 239, 395, 239, 243, 247, 0, 0, 239, - 239, 247, 396, 397, 239, 244, 399, 0, 394, 244, 246, 244, 246, 244, 257, - - 244, 246, 246, 257, 401, 395, 0, 246, 403, 257, 244, 0, 404, 0, 396, 397, 0, - 244, 399, 257, 0, 244, 246, 244, 246, 244, 257, 244, 246, 246, 257, 401, 405, 400, - 246, 403, 257, 244, 245, 404, 245, 248, 400, 248, 406, 402, 257, 402, 248, 245, 249, - 245, 249, 248, 407, 408, 245, 249, 249, 405, 400, 245, 249, 0, 409, 245, 0, 245, - 248, 400, 248, 406, 402, 0, 402, 248, 245, 249, 245, 249, 248, 407, 408, 245, 249, - 249, 0, 0, 245, 249, 250, 409, 250, 251, 0, 251, 411, 250, 250, 0, - - 251, 250, 250, 252, 0, 251, 254, 410, 254, 412, 0, 410, 0, 254, 252, 0, 252, - 250, 254, 250, 251, 252, 251, 411, 250, 250, 252, 251, 250, 250, 252, 253, 251, 254, - 410, 254, 412, 253, 410, 253, 254, 252, 255, 252, 253, 254, 0, 540, 252, 253, 255, - 0, 255, 252, 0, 0, 541, 255, 253, 542, 543, 0, 255, 544, 253, 545, 253, 546, - 547, 255, 548, 253, 550, 256, 540, 256, 253, 255, 258, 255, 256, 256, 258, 541, 255, - 256, 542, 543, 258, 255, 544, 258, 545, 0, 546, 547, 0, 548, 258, 550, - - 256, 553, 256, 0, 0, 258, 259, 256, 256, 258, 259, 554, 256, 555, 259, 258, 556, - 558, 258, 260, 259, 559, 0, 260, 261, 258, 261, 560, 553, 260, 259, 261, 561, 259, - 563, 0, 261, 259, 554, 260, 555, 259, 564, 556, 558, 0, 260, 259, 559, 262, 260, - 261, 0, 261, 560, 565, 260, 259, 261, 561, 262, 563, 262, 261, 0, 566, 260, 262, - 263, 564, 567, 568, 262, 263, 569, 263, 262, 570, 0, 264, 263, 264, 565, 571, 0, - 263, 264, 262, 0, 262, 264, 264, 566, 0, 262, 263, 574, 567, 568, 262, - - 263, 569, 263, 575, 570, 265, 264, 263, 264, 265, 571, 265, 263, 264, 576, 268, 265, - 264, 264, 268, 267, 265, 0, 574, 267, 268, 577, 578, 267, 579, 575, 0, 265, 0, - 267, 268, 265, 0, 265, 0, 0, 576, 268, 265, 267, 580, 268, 267, 265, 266, 0, - 267, 268, 577, 578, 267, 579, 0, 266, 269, 266, 267, 268, 269, 270, 266, 266, 269, - 270, 0, 266, 267, 580, 269, 270, 0, 266, 270, 582, 0, 583, 584, 0, 269, 270, - 266, 269, 266, 587, 588, 269, 270, 266, 266, 269, 270, 272, 266, 271, 272, - - 269, 270, 271, 272, 270, 582, 271, 583, 584, 272, 269, 270, 271, 0, 0, 587, 588, - 274, 590, 272, 0, 274, 271, 272, 0, 271, 272, 274, 0, 271, 272, 592, 0, 271, - 0, 593, 272, 274, 594, 271, 273, 273, 273, 595, 274, 590, 272, 273, 274, 271, 0, - 275, 273, 596, 274, 275, 0, 0, 592, 275, 597, 275, 593, 600, 274, 594, 0, 273, - 273, 273, 595, 275, 0, 276, 273, 0, 604, 276, 275, 273, 596, 606, 275, 276, 276, - 277, 275, 597, 275, 607, 600, 609, 277, 276, 0, 611, 279, 279, 275, 277, - - 276, 279, 277, 604, 276, 277, 0, 279, 606, 0, 276, 276, 277, 0, 0, 612, 607, - 279, 609, 277, 276, 280, 611, 279, 279, 280, 277, 0, 279, 277, 613, 280, 277, 278, - 279, 615, 278, 0, 0, 598, 278, 280, 612, 278, 279, 616, 278, 281, 280, 281, 598, - 282, 280, 281, 281, 282, 278, 613, 280, 281, 278, 282, 615, 278, 282, 283, 598, 278, - 280, 283, 278, 282, 616, 278, 281, 283, 281, 598, 282, 0, 281, 281, 282, 278, 0, - 283, 281, 0, 282, 284, 617, 282, 283, 284, 0, 618, 283, 285, 282, 284, - - 620, 285, 283, 621, 284, 285, 420, 623, 420, 284, 624, 285, 283, 420, 610, 610, 284, - 617, 420, 625, 284, 285, 618, 0, 285, 0, 284, 620, 285, 0, 621, 284, 285, 420, - 623, 420, 284, 624, 285, 0, 420, 610, 610, 0, 0, 420, 625, 0, 285, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 416, 417, 418, 419, 416, 417, 418, 419, 626, 628, 416, 417, 418, 419, 0, 629, - 630, 0, 631, 0, 416, 417, 418, 419, 0, 0, 0, 416, 417, 418, 419, - - 416, 417, 418, 419, 626, 628, 416, 417, 418, 419, 422, 629, 630, 421, 631, 421, 416, - 417, 418, 419, 421, 422, 423, 422, 423, 421, 424, 0, 422, 423, 424, 0, 633, 422, - 423, 0, 424, 422, 634, 0, 421, 635, 421, 636, 0, 0, 424, 421, 422, 423, 422, - 423, 421, 424, 425, 422, 423, 424, 425, 633, 422, 423, 426, 424, 425, 634, 426, 427, - 635, 639, 636, 427, 426, 424, 425, 0, 428, 427, 428, 640, 426, 425, 426, 428, 641, - 425, 642, 427, 428, 426, 429, 425, 429, 426, 427, 643, 639, 429, 427, 426, - - 646, 425, 429, 428, 427, 428, 640, 426, 431, 426, 428, 641, 431, 642, 427, 428, 0, - 429, 431, 429, 0, 431, 643, 0, 429, 0, 0, 646, 431, 429, 430, 0, 430, 432, - 647, 431, 430, 432, 649, 431, 650, 0, 430, 432, 651, 431, 433, 430, 431, 432, 433, - 0, 430, 432, 433, 431, 433, 430, 435, 430, 432, 647, 435, 430, 432, 649, 433, 650, - 435, 430, 432, 651, 0, 433, 430, 0, 432, 433, 435, 430, 432, 433, 434, 433, 0, - 435, 434, 0, 652, 435, 436, 653, 434, 433, 436, 435, 654, 434, 436, 437, - - 655, 437, 434, 0, 436, 435, 437, 656, 0, 434, 0, 437, 0, 434, 436, 652, 657, - 436, 653, 434, 659, 436, 661, 654, 434, 436, 437, 655, 437, 434, 438, 436, 438, 437, - 656, 439, 438, 438, 437, 439, 663, 436, 438, 657, 440, 439, 440, 659, 792, 661, 794, - 440, 796, 0, 797, 439, 440, 438, 441, 438, 441, 798, 439, 438, 438, 441, 439, 663, - 0, 438, 441, 440, 439, 440, 0, 792, 442, 794, 440, 796, 442, 797, 439, 440, 0, - 441, 442, 441, 798, 799, 443, 444, 441, 800, 443, 444, 442, 441, 443, 0, - - 801, 444, 802, 442, 443, 803, 444, 442, 0, 0, 804, 444, 0, 442, 443, 806, 799, - 443, 444, 0, 800, 443, 444, 442, 445, 443, 445, 801, 444, 802, 445, 443, 803, 444, - 807, 446, 445, 804, 444, 446, 0, 443, 806, 0, 447, 446, 445, 0, 447, 808, 809, - 445, 810, 445, 447, 446, 0, 445, 0, 447, 0, 807, 446, 445, 447, 0, 446, 448, - 0, 0, 448, 447, 446, 445, 448, 447, 808, 809, 0, 810, 448, 447, 446, 450, 811, - 449, 447, 450, 451, 449, 448, 447, 451, 450, 448, 449, 449, 448, 451, 813, - - 814, 448, 0, 450, 815, 449, 0, 448, 451, 0, 450, 811, 449, 816, 450, 451, 449, - 448, 0, 451, 450, 0, 449, 449, 453, 451, 813, 814, 453, 452, 450, 815, 449, 452, - 453, 451, 454, 452, 454, 0, 816, 0, 454, 452, 453, 455, 0, 455, 454, 817, 818, - 453, 455, 452, 819, 453, 452, 455, 454, 820, 452, 453, 0, 454, 452, 454, 456, 0, - 456, 454, 452, 453, 455, 456, 455, 454, 817, 818, 456, 455, 452, 819, 821, 822, 455, - 454, 820, 458, 0, 458, 457, 0, 457, 456, 458, 456, 457, 457, 0, 458, - - 456, 0, 457, 0, 825, 456, 826, 0, 459, 821, 822, 0, 459, 461, 458, 461, 458, - 457, 459, 457, 461, 458, 827, 457, 457, 461, 458, 0, 459, 457, 460, 825, 828, 826, - 460, 459, 0, 0, 460, 459, 461, 0, 461, 0, 460, 459, 0, 461, 829, 827, 0, - 0, 461, 832, 460, 459, 835, 460, 836, 828, 838, 460, 462, 462, 462, 460, 463, 463, - 463, 462, 464, 460, 464, 463, 462, 829, 837, 464, 463, 837, 832, 460, 464, 835, 0, - 836, 0, 838, 0, 462, 462, 462, 0, 463, 463, 463, 462, 464, 465, 464, - - 463, 462, 841, 837, 464, 463, 837, 467, 465, 464, 465, 467, 466, 467, 466, 465, 844, - 845, 467, 466, 465, 466, 0, 467, 466, 465, 0, 846, 847, 841, 848, 849, 0, 852, - 467, 465, 853, 465, 467, 466, 467, 466, 465, 844, 845, 467, 466, 465, 466, 468, 467, - 466, 469, 468, 846, 847, 469, 848, 849, 468, 852, 470, 469, 853, 0, 470, 0, 469, - 854, 468, 0, 470, 469, 855, 470, 0, 468, 856, 0, 469, 468, 470, 0, 469, 858, - 0, 468, 471, 470, 469, 0, 471, 470, 471, 469, 854, 468, 471, 470, 469, - - 855, 470, 472, 859, 856, 473, 472, 471, 470, 473, 0, 858, 472, 861, 471, 473, 0, - 474, 471, 862, 471, 474, 472, 863, 471, 473, 0, 474, 0, 472, 859, 475, 473, 472, - 471, 475, 473, 474, 0, 472, 861, 475, 473, 476, 474, 864, 862, 476, 474, 472, 863, - 475, 473, 476, 474, 477, 0, 0, 475, 477, 866, 0, 475, 476, 474, 477, 0, 867, - 475, 868, 476, 477, 864, 869, 476, 477, 0, 478, 475, 478, 476, 479, 477, 479, 478, - 0, 477, 866, 479, 478, 476, 0, 477, 479, 867, 0, 868, 870, 477, 481, - - 869, 0, 477, 481, 478, 480, 478, 480, 479, 481, 479, 478, 480, 480, 0, 479, 478, - 480, 482, 481, 479, 485, 482, 485, 870, 485, 481, 871, 482, 0, 481, 485, 480, 0, - 480, 872, 481, 873, 482, 480, 480, 485, 483, 483, 480, 482, 481, 483, 485, 482, 485, - 874, 485, 483, 871, 482, 488, 486, 485, 486, 488, 486, 872, 483, 873, 482, 488, 486, - 485, 483, 483, 488, 0, 876, 483, 0, 488, 486, 874, 877, 483, 0, 878, 488, 486, - 0, 486, 488, 486, 880, 483, 484, 487, 488, 486, 484, 487, 0, 488, 484, - - 876, 484, 487, 488, 486, 484, 877, 881, 487, 878, 0, 882, 487, 0, 0, 484, 880, - 489, 484, 487, 490, 489, 484, 487, 490, 982, 484, 489, 484, 487, 490, 984, 484, 489, - 881, 487, 986, 489, 882, 487, 490, 491, 484, 987, 489, 491, 0, 490, 489, 491, 988, - 490, 982, 0, 489, 491, 989, 490, 984, 492, 489, 492, 0, 986, 489, 491, 492, 490, - 491, 991, 987, 492, 491, 493, 0, 493, 491, 988, 0, 493, 493, 993, 491, 989, 0, - 493, 492, 494, 492, 494, 994, 495, 491, 492, 494, 495, 991, 0, 492, 494, - - 493, 495, 493, 0, 995, 496, 493, 493, 993, 496, 996, 495, 493, 0, 494, 496, 494, - 994, 495, 0, 497, 494, 495, 997, 497, 496, 494, 499, 495, 499, 497, 995, 496, 497, - 499, 0, 496, 996, 495, 499, 497, 0, 496, 999, 1001, 0, 503, 497, 503, 0, 997, - 497, 496, 503, 499, 0, 499, 497, 503, 1005, 497, 499, 501, 501, 501, 0, 499, 497, - 498, 501, 999, 1001, 498, 503, 501, 503, 498, 1007, 0, 1008, 503, 1009, 498, 1016, 1017, - 503, 1005, 498, 1018, 501, 501, 501, 498, 0, 1021, 498, 501, 0, 1023, 498, - - 502, 501, 0, 498, 1007, 502, 1008, 502, 1009, 498, 1016, 1017, 502, 1025, 498, 1018, 505, - 502, 505, 498, 500, 1021, 1027, 505, 505, 1023, 1028, 502, 505, 500, 0, 500, 502, 500, - 502, 1029, 500, 0, 0, 502, 1025, 500, 0, 505, 502, 505, 504, 500, 1030, 1027, 505, - 505, 1031, 1028, 1033, 505, 500, 504, 500, 504, 500, 506, 1029, 500, 504, 506, 1034, 506, - 500, 504, 1035, 1036, 506, 504, 0, 1030, 0, 506, 507, 1031, 507, 1033, 1038, 0, 504, - 507, 504, 0, 506, 0, 507, 504, 506, 1034, 506, 1040, 504, 1035, 1036, 506, - - 1042, 508, 0, 508, 506, 507, 509, 507, 508, 1038, 509, 510, 507, 508, 511, 510, 509, - 507, 511, 512, 1043, 510, 1040, 512, 511, 1044, 509, 1042, 508, 512, 508, 510, 0, 509, - 511, 508, 0, 509, 510, 512, 508, 511, 510, 509, 0, 511, 512, 1043, 510, 0, 512, - 511, 1044, 509, 0, 513, 512, 0, 510, 513, 514, 511, 0, 515, 514, 513, 512, 515, - 513, 516, 514, 516, 1045, 515, 515, 513, 516, 517, 514, 517, 514, 516, 513, 515, 517, - 517, 513, 514, 0, 517, 515, 514, 513, 0, 515, 513, 516, 514, 516, 1045, - - 515, 515, 513, 516, 517, 514, 517, 514, 516, 1046, 515, 517, 517, 518, 1051, 518, 517, - 519, 1052, 519, 518, 518, 1130, 1134, 519, 518, 520, 1135, 520, 519, 520, 1138, 0, 520, - 0, 0, 1046, 0, 520, 0, 518, 1051, 518, 1139, 519, 1052, 519, 518, 518, 1130, 1134, - 519, 518, 520, 1135, 520, 519, 520, 1138, 521, 520, 521, 522, 1143, 522, 520, 521, 521, - 0, 522, 1139, 521, 523, 1145, 522, 524, 523, 0, 1146, 524, 1149, 0, 523, 0, 0, - 524, 521, 1150, 521, 522, 1143, 522, 523, 521, 521, 524, 522, 0, 521, 523, - - 1145, 522, 524, 523, 526, 1146, 524, 1149, 525, 523, 525, 526, 524, 526, 1150, 525, 1151, - 0, 526, 523, 525, 1152, 524, 526, 527, 0, 529, 0, 527, 528, 529, 526, 0, 528, - 527, 525, 529, 525, 526, 528, 526, 528, 525, 1151, 527, 526, 529, 525, 1152, 528, 526, - 527, 531, 529, 531, 527, 528, 529, 1155, 531, 528, 527, 0, 529, 531, 0, 528, 0, - 528, 1156, 530, 527, 0, 529, 530, 1159, 528, 1161, 530, 531, 532, 531, 532, 0, 530, - 1155, 531, 532, 0, 532, 1162, 531, 532, 0, 530, 0, 1156, 530, 1163, 533, - - 1164, 530, 1159, 1165, 1161, 530, 0, 532, 533, 532, 533, 530, 1212, 1215, 532, 533, 532, - 1162, 1218, 532, 533, 530, 534, 1219, 534, 1163, 533, 1164, 1222, 534, 1165, 0, 0, 534, - 534, 533, 535, 533, 535, 1212, 1215, 0, 533, 535, 535, 1218, 0, 533, 535, 534, 1219, - 534, 536, 1223, 536, 1222, 534, 1224, 536, 536, 534, 534, 537, 535, 536, 535, 537, 1228, - 537, 0, 535, 535, 1229, 537, 0, 535, 0, 0, 537, 536, 1223, 536, 1213, 1213, 1224, - 536, 536, 1230, 1232, 537, 538, 536, 538, 537, 1228, 537, 538, 538, 1257, 1229, - - 537, 665, 538, 665, 666, 537, 666, 665, 665, 1258, 666, 666, 1261, 665, 1230, 1232, 666, - 538, 0, 538, 1213, 0, 667, 538, 538, 1257, 667, 0, 665, 538, 665, 666, 667, 666, - 665, 665, 1258, 666, 666, 1261, 665, 668, 667, 666, 669, 668, 671, 1213, 669, 667, 671, - 668, 1266, 667, 669, 1270, 671, 669, 670, 667, 670, 668, 1282, 1282, 669, 670, 671, 0, - 668, 667, 670, 669, 668, 671, 0, 669, 0, 671, 668, 1266, 0, 669, 1270, 671, 669, - 670, 1283, 670, 668, 1286, 0, 669, 670, 671, 672, 673, 672, 670, 674, 673, - - 0, 672, 674, 675, 1282, 673, 672, 675, 674, 0, 0, 675, 1289, 1283, 0, 673, 1286, - 675, 674, 0, 0, 672, 673, 672, 0, 674, 673, 675, 672, 674, 675, 1282, 673, 672, - 675, 674, 676, 677, 675, 1289, 676, 677, 673, 1294, 675, 674, 676, 677, 0, 1298, 0, - 678, 1302, 1304, 675, 678, 676, 677, 0, 678, 1235, 1235, 0, 676, 677, 678, 0, 676, - 677, 1306, 1294, 0, 0, 676, 677, 678, 1298, 679, 678, 1302, 1304, 679, 678, 676, 677, - 679, 678, 679, 1308, 680, 681, 682, 678, 680, 681, 682, 1306, 679, 1235, 680, - - 681, 682, 678, 681, 679, 1310, 0, 0, 679, 680, 681, 682, 679, 0, 679, 1308, 680, - 681, 682, 683, 680, 681, 682, 683, 679, 1235, 680, 681, 682, 683, 681, 1312, 1310, 684, - 683, 684, 680, 681, 682, 683, 684, 1314, 0, 685, 686, 684, 683, 685, 686, 0, 683, - 0, 0, 685, 686, 1316, 683, 1318, 1312, 686, 684, 683, 684, 685, 686, 0, 683, 684, - 1314, 687, 685, 686, 684, 687, 685, 686, 688, 0, 688, 687, 685, 686, 1316, 688, 1318, - 1320, 686, 0, 688, 687, 685, 686, 689, 689, 689, 0, 687, 1288, 1288, 689, - - 687, 0, 0, 688, 689, 688, 687, 0, 0, 0, 688, 0, 1320, 0, 0, 688, 687, - 0, 0, 689, 689, 689, 0, 690, 0, 690, 689, 0, 0, 0, 690, 689, 690, 0, - 691, 690, 691, 0, 0, 1288, 0, 691, 691, 0, 0, 0, 691, 692, 0, 0, 690, - 0, 690, 0, 0, 0, 0, 690, 692, 690, 692, 691, 690, 691, 0, 692, 1288, 0, - 691, 691, 692, 0, 0, 691, 692, 694, 693, 0, 693, 0, 0, 0, 693, 693, 694, - 692, 694, 692, 693, 0, 0, 694, 692, 0, 695, 0, 694, 692, 695, 0, - - 0, 0, 694, 693, 695, 693, 0, 0, 0, 693, 693, 694, 0, 694, 695, 693, 0, - 696, 694, 696, 697, 695, 697, 694, 696, 695, 698, 697, 698, 696, 705, 695, 697, 698, - 705, 0, 0, 0, 698, 0, 705, 695, 0, 0, 696, 0, 696, 697, 0, 697, 705, - 696, 0, 698, 697, 698, 696, 705, 0, 697, 698, 705, 699, 0, 699, 698, 699, 705, - 700, 699, 700, 0, 700, 0, 699, 700, 701, 705, 701, 0, 700, 0, 0, 701, 0, - 701, 0, 0, 701, 699, 0, 699, 0, 699, 0, 700, 699, 700, 703, 700, - - 0, 699, 700, 701, 0, 701, 702, 700, 702, 703, 701, 703, 701, 702, 702, 701, 703, - 0, 702, 704, 0, 703, 0, 0, 706, 703, 0, 0, 706, 0, 704, 0, 704, 702, - 706, 702, 703, 704, 703, 0, 702, 702, 704, 703, 706, 702, 704, 0, 703, 0, 707, - 706, 708, 0, 707, 706, 708, 704, 0, 704, 707, 706, 708, 0, 704, 707, 0, 0, - 0, 704, 707, 706, 708, 0, 709, 0, 710, 707, 709, 708, 710, 707, 709, 708, 0, - 0, 710, 707, 709, 708, 711, 0, 707, 0, 711, 0, 710, 707, 709, 708, - - 711, 709, 0, 710, 712, 709, 0, 710, 712, 709, 711, 0, 712, 710, 0, 709, 0, - 711, 712, 0, 714, 711, 713, 710, 714, 709, 713, 711, 712, 0, 714, 712, 713, 713, - 715, 712, 715, 711, 0, 712, 714, 715, 713, 0, 0, 712, 715, 714, 0, 713, 0, - 714, 0, 713, 0, 712, 0, 714, 0, 713, 713, 715, 0, 715, 716, 0, 716, 714, - 715, 713, 717, 716, 717, 715, 718, 719, 716, 717, 718, 719, 0, 0, 717, 0, 718, - 719, 0, 0, 719, 0, 0, 716, 0, 716, 718, 719, 0, 717, 716, 717, - - 0, 718, 719, 716, 717, 718, 719, 0, 0, 717, 0, 718, 719, 0, 0, 719, 720, - 0, 720, 0, 0, 718, 719, 720, 721, 0, 721, 722, 720, 722, 721, 721, 0, 722, - 722, 0, 721, 0, 0, 722, 0, 0, 0, 720, 0, 720, 0, 0, 0, 0, 720, - 721, 0, 721, 722, 720, 722, 721, 721, 0, 722, 722, 0, 721, 0, 0, 722, 723, - 724, 725, 724, 725, 723, 0, 723, 724, 725, 0, 723, 723, 724, 725, 0, 0, 723, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 723, 724, 725, 724, 725, 723, - - 0, 723, 724, 725, 0, 723, 723, 724, 725, 0, 726, 723, 726, 727, 728, 727, 728, - 726, 0, 0, 727, 728, 726, 0, 0, 727, 728, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 726, 0, 726, 727, 728, 727, 728, 726, 0, 0, 727, 728, 726, 0, - 0, 727, 728, 729, 0, 729, 730, 731, 730, 731, 729, 729, 0, 730, 731, 729, 0, - 0, 730, 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, 0, 729, 730, - 731, 730, 731, 729, 729, 732, 730, 731, 729, 732, 733, 730, 731, 734, 733, - - 732, 0, 734, 736, 735, 733, 735, 736, 734, 736, 732, 735, 735, 0, 736, 733, 735, - 732, 734, 736, 0, 732, 733, 0, 0, 734, 733, 732, 0, 734, 736, 735, 733, 735, - 736, 734, 736, 732, 735, 735, 738, 736, 733, 735, 738, 734, 736, 737, 739, 737, 738, - 0, 739, 737, 737, 0, 0, 0, 739, 737, 738, 0, 0, 0, 0, 0, 0, 738, - 739, 0, 0, 738, 0, 0, 737, 739, 737, 738, 0, 739, 737, 737, 740, 0, 740, - 739, 737, 738, 740, 0, 0, 0, 741, 742, 740, 739, 741, 742, 0, 0, - - 0, 0, 741, 742, 740, 0, 742, 0, 0, 740, 0, 740, 741, 742, 0, 740, 0, - 0, 0, 741, 742, 740, 743, 741, 742, 0, 743, 0, 0, 741, 742, 740, 743, 742, - 744, 743, 0, 745, 744, 741, 742, 745, 743, 0, 744, 745, 746, 745, 0, 743, 746, - 0, 0, 743, 744, 0, 746, 745, 0, 743, 0, 744, 743, 0, 745, 744, 746, 0, - 745, 743, 0, 744, 745, 746, 745, 747, 748, 746, 0, 747, 748, 744, 0, 746, 745, - 747, 748, 0, 0, 0, 749, 0, 0, 746, 749, 747, 748, 0, 749, 0, - - 0, 0, 747, 748, 749, 0, 747, 748, 0, 0, 0, 0, 747, 748, 749, 0, 750, - 749, 0, 0, 750, 749, 747, 748, 750, 749, 0, 0, 751, 752, 750, 749, 751, 752, - 0, 0, 0, 0, 751, 752, 750, 749, 753, 750, 0, 0, 753, 750, 751, 752, 753, - 750, 753, 0, 0, 751, 752, 750, 0, 751, 752, 0, 753, 0, 0, 751, 752, 750, - 754, 753, 755, 0, 754, 753, 755, 751, 752, 753, 754, 753, 755, 754, 757, 0, 0, - 755, 757, 0, 754, 753, 755, 756, 757, 0, 756, 754, 0, 755, 756, 754, - - 0, 755, 757, 0, 756, 754, 0, 755, 754, 757, 0, 0, 755, 757, 756, 754, 758, - 755, 756, 757, 758, 756, 0, 760, 758, 756, 758, 0, 759, 757, 759, 756, 760, 0, - 760, 759, 758, 0, 761, 760, 759, 756, 761, 758, 760, 0, 0, 758, 761, 0, 760, - 758, 0, 758, 0, 759, 0, 759, 761, 760, 762, 760, 759, 758, 762, 761, 760, 759, - 763, 761, 762, 760, 763, 765, 764, 761, 764, 765, 763, 0, 762, 764, 0, 765, 0, - 761, 764, 762, 763, 0, 0, 762, 766, 765, 0, 763, 766, 762, 0, 763, - - 765, 764, 766, 764, 765, 763, 0, 762, 764, 0, 765, 0, 766, 764, 767, 763, 0, - 768, 767, 766, 765, 768, 769, 766, 767, 0, 769, 768, 0, 766, 0, 771, 769, 771, - 767, 0, 770, 768, 771, 766, 770, 767, 769, 771, 768, 767, 770, 0, 768, 769, 772, - 767, 772, 769, 768, 0, 770, 772, 771, 769, 771, 767, 772, 770, 768, 771, 0, 770, - 0, 769, 771, 774, 0, 770, 773, 0, 773, 772, 0, 772, 774, 773, 774, 770, 772, - 0, 773, 774, 775, 772, 775, 0, 774, 0, 0, 775, 0, 775, 774, 0, - - 775, 773, 0, 773, 776, 0, 776, 774, 773, 774, 0, 776, 0, 773, 774, 775, 776, - 775, 0, 774, 0, 0, 775, 777, 775, 777, 778, 775, 0, 0, 777, 776, 777, 776, - 779, 777, 779, 778, 776, 778, 0, 779, 779, 776, 778, 0, 779, 0, 0, 778, 777, - 0, 777, 778, 0, 0, 0, 777, 0, 777, 780, 779, 777, 779, 778, 780, 778, 780, - 779, 779, 781, 778, 780, 779, 781, 782, 778, 780, 782, 782, 781, 0, 0, 0, 0, - 782, 0, 780, 0, 0, 781, 0, 780, 0, 780, 782, 0, 781, 0, 780, - - 0, 781, 782, 0, 780, 782, 782, 781, 0, 783, 784, 785, 782, 783, 784, 785, 0, - 781, 0, 783, 784, 785, 782, 786, 787, 0, 784, 786, 787, 783, 784, 785, 0, 786, - 787, 0, 783, 784, 785, 0, 783, 784, 785, 786, 787, 0, 783, 784, 785, 0, 786, - 787, 0, 784, 786, 787, 783, 784, 785, 0, 786, 787, 788, 0, 788, 886, 887, 886, - 887, 788, 786, 787, 886, 887, 788, 0, 0, 886, 887, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 788, 0, 788, 886, 887, 886, 887, 788, 0, 0, 886, - - 887, 788, 0, 0, 886, 887, 888, 889, 888, 889, 0, 890, 891, 888, 889, 890, 891, - 0, 888, 889, 888, 890, 891, 0, 0, 0, 0, 0, 0, 0, 0, 890, 891, 888, - 889, 888, 889, 0, 890, 891, 888, 889, 890, 891, 0, 888, 889, 888, 890, 891, 892, - 893, 0, 0, 892, 893, 0, 0, 890, 891, 892, 893, 0, 895, 895, 894, 893, 0, - 895, 894, 892, 893, 0, 894, 895, 0, 0, 892, 893, 894, 0, 892, 893, 0, 895, - 0, 0, 892, 893, 894, 895, 895, 894, 893, 0, 895, 894, 892, 893, 0, - - 894, 895, 896, 897, 896, 897, 894, 0, 896, 0, 897, 895, 0, 0, 896, 897, 894, - 0, 0, 0, 0, 0, 0, 0, 896, 0, 898, 0, 898, 896, 897, 896, 897, 898, - 898, 896, 899, 897, 898, 900, 899, 896, 897, 900, 901, 902, 899, 902, 901, 900, 0, - 896, 902, 898, 901, 898, 899, 902, 903, 900, 898, 898, 903, 899, 901, 898, 900, 899, - 903, 0, 900, 901, 902, 899, 902, 901, 900, 0, 903, 902, 0, 901, 0, 899, 902, - 903, 900, 0, 904, 903, 0, 901, 904, 905, 0, 903, 907, 905, 904, 0, - - 907, 905, 906, 0, 906, 903, 907, 905, 904, 906, 0, 0, 0, 0, 906, 904, 907, - 905, 0, 904, 905, 0, 908, 907, 905, 904, 908, 907, 905, 906, 0, 906, 908, 907, - 905, 904, 906, 0, 0, 0, 0, 906, 908, 907, 905, 0, 909, 910, 0, 908, 909, - 910, 0, 908, 0, 0, 909, 910, 911, 908, 911, 0, 910, 0, 0, 911, 909, 910, - 0, 908, 911, 912, 0, 909, 910, 912, 913, 909, 910, 0, 913, 912, 0, 909, 910, - 911, 913, 911, 0, 910, 0, 912, 911, 909, 910, 914, 913, 911, 912, 914, - - 0, 0, 912, 913, 916, 914, 916, 913, 912, 0, 914, 916, 0, 913, 0, 914, 916, - 0, 912, 0, 915, 0, 914, 913, 915, 0, 914, 0, 0, 0, 915, 916, 914, 916, - 0, 915, 0, 914, 916, 0, 915, 0, 914, 916, 917, 0, 0, 915, 917, 919, 0, - 915, 0, 919, 917, 0, 0, 915, 923, 919, 923, 0, 915, 0, 917, 923, 918, 915, - 918, 919, 923, 917, 918, 0, 0, 917, 919, 0, 918, 0, 919, 917, 0, 0, 0, - 923, 919, 923, 918, 0, 920, 917, 923, 918, 920, 918, 919, 923, 921, 918, - - 920, 0, 921, 0, 0, 918, 0, 0, 921, 0, 920, 0, 0, 0, 0, 918, 921, - 920, 921, 0, 0, 920, 0, 0, 922, 921, 0, 920, 922, 921, 0, 0, 0, 0, - 922, 921, 0, 920, 0, 922, 924, 925, 924, 921, 922, 921, 925, 924, 925, 0, 0, - 922, 924, 925, 0, 922, 0, 0, 925, 0, 0, 922, 0, 0, 0, 0, 922, 924, - 925, 924, 926, 922, 926, 925, 924, 925, 927, 926, 927, 924, 925, 0, 926, 927, 928, - 925, 928, 0, 927, 0, 0, 928, 928, 0, 0, 0, 928, 926, 0, 926, - - 929, 0, 929, 927, 926, 927, 0, 929, 0, 926, 927, 928, 929, 928, 930, 927, 930, - 0, 928, 928, 0, 930, 0, 928, 0, 0, 930, 929, 931, 929, 931, 0, 0, 0, - 929, 931, 931, 0, 0, 929, 931, 930, 933, 930, 933, 0, 932, 0, 930, 933, 932, - 0, 933, 930, 933, 931, 932, 931, 934, 0, 934, 0, 931, 931, 0, 934, 932, 931, - 0, 933, 934, 933, 0, 932, 0, 0, 933, 932, 0, 933, 0, 933, 935, 932, 935, - 934, 0, 934, 936, 935, 936, 0, 934, 932, 935, 936, 0, 934, 937, 0, - - 936, 0, 0, 0, 0, 0, 937, 0, 937, 935, 0, 935, 938, 937, 938, 936, 935, - 936, 937, 938, 0, 935, 936, 0, 938, 937, 0, 936, 0, 0, 939, 0, 939, 937, - 940, 937, 0, 939, 940, 938, 937, 938, 939, 0, 940, 937, 938, 0, 941, 0, 941, - 938, 0, 0, 940, 941, 0, 939, 0, 939, 941, 940, 0, 0, 939, 940, 0, 942, - 0, 939, 0, 940, 0, 0, 0, 941, 0, 941, 942, 0, 942, 940, 941, 0, 943, - 942, 943, 941, 0, 0, 942, 943, 943, 944, 942, 0, 943, 944, 0, 944, - - 0, 0, 0, 0, 944, 942, 0, 942, 0, 944, 0, 943, 942, 943, 0, 0, 0, - 942, 943, 943, 944, 0, 0, 943, 944, 945, 944, 945, 946, 0, 946, 944, 945, 945, - 0, 946, 944, 945, 948, 947, 946, 947, 948, 0, 0, 0, 947, 0, 948, 0, 0, - 947, 945, 0, 945, 946, 0, 946, 948, 945, 945, 0, 946, 0, 945, 948, 947, 946, - 947, 948, 0, 0, 949, 947, 0, 948, 949, 0, 947, 950, 950, 0, 949, 0, 950, - 948, 0, 949, 0, 0, 950, 0, 949, 0, 0, 0, 0, 0, 0, 949, - - 950, 0, 0, 949, 0, 0, 950, 950, 951, 949, 0, 950, 951, 0, 949, 0, 952, - 950, 951, 949, 952, 951, 0, 0, 0, 0, 952, 950, 951, 952, 953, 0, 0, 0, - 953, 951, 952, 0, 0, 951, 953, 0, 954, 952, 0, 951, 954, 952, 951, 0, 953, - 0, 954, 952, 955, 951, 952, 953, 955, 0, 0, 953, 954, 952, 955, 0, 956, 953, - 0, 954, 956, 0, 0, 954, 955, 0, 956, 953, 0, 954, 957, 955, 0, 0, 957, - 955, 956, 0, 957, 954, 0, 955, 958, 956, 957, 0, 958, 956, 961, 0, - - 958, 955, 961, 956, 957, 0, 958, 957, 961, 959, 959, 957, 0, 956, 959, 957, 958, - 0, 961, 958, 959, 957, 962, 958, 960, 961, 962, 958, 960, 961, 959, 957, 962, 958, - 960, 961, 959, 959, 0, 960, 0, 959, 962, 958, 960, 961, 0, 959, 0, 962, 964, - 960, 0, 962, 964, 960, 0, 959, 964, 962, 0, 960, 963, 963, 964, 0, 960, 963, - 965, 962, 965, 960, 0, 963, 964, 965, 0, 964, 0, 0, 965, 964, 0, 963, 0, - 964, 966, 0, 966, 963, 963, 964, 966, 966, 963, 965, 0, 965, 966, 0, - - 963, 964, 965, 0, 967, 0, 967, 965, 0, 0, 963, 967, 967, 966, 0, 966, 967, - 968, 0, 966, 966, 0, 0, 969, 0, 966, 0, 0, 968, 0, 968, 967, 0, 967, - 969, 968, 969, 0, 967, 967, 968, 969, 0, 967, 968, 0, 969, 970, 0, 970, 969, - 0, 0, 0, 970, 968, 0, 968, 971, 970, 971, 969, 968, 969, 0, 971, 0, 968, - 969, 0, 971, 0, 0, 969, 970, 0, 970, 0, 972, 973, 973, 970, 972, 0, 973, - 971, 970, 971, 972, 0, 973, 0, 971, 0, 0, 0, 0, 971, 972, 0, - - 973, 0, 0, 0, 974, 972, 973, 973, 974, 972, 0, 973, 975, 0, 974, 972, 975, - 973, 0, 0, 0, 976, 975, 976, 974, 972, 0, 973, 976, 977, 0, 974, 975, 976, - 0, 974, 0, 0, 0, 975, 977, 974, 977, 975, 0, 0, 0, 977, 976, 975, 976, - 974, 977, 978, 0, 976, 977, 0, 0, 975, 976, 979, 0, 979, 978, 0, 978, 977, - 979, 977, 980, 978, 980, 979, 977, 0, 978, 980, 0, 977, 978, 0, 980, 0, 0, - 0, 0, 0, 979, 0, 979, 978, 1054, 978, 0, 979, 1054, 980, 978, 980, - - 979, 1055, 1054, 978, 980, 1055, 1056, 0, 1056, 980, 1059, 1055, 1054, 1056, 1059, 1057, 0, - 1057, 1056, 1054, 1059, 1055, 1057, 1054, 1058, 0, 1058, 1057, 1055, 1054, 1059, 1058, 1055, 1056, - 0, 1056, 1058, 1059, 1055, 1054, 1056, 1059, 1057, 0, 1057, 1056, 1060, 1059, 1055, 1057, 1060, - 1058, 0, 1058, 1057, 0, 1060, 1059, 1058, 0, 1061, 1060, 1061, 1058, 0, 0, 1060, 1061, - 1062, 1063, 1062, 1063, 1061, 1060, 0, 1062, 1063, 1060, 0, 0, 1062, 1063, 0, 1060, 0, - 0, 0, 1061, 1060, 1061, 0, 0, 0, 1060, 1061, 1062, 1063, 1062, 1063, 1061, - - 0, 0, 1062, 1063, 1064, 0, 1064, 1062, 1063, 0, 1065, 1064, 1065, 1066, 1066, 1066, 1064, - 1065, 1065, 0, 1066, 0, 1065, 0, 0, 1066, 0, 0, 0, 0, 0, 1064, 0, 1064, - 0, 0, 0, 1065, 1064, 1065, 1066, 1066, 1066, 1064, 1065, 1065, 1067, 1066, 0, 1065, 0, - 1068, 1066, 1068, 0, 1067, 0, 1067, 1068, 0, 0, 0, 1067, 1068, 1069, 0, 1069, 1067, - 0, 0, 0, 1069, 1069, 1067, 0, 0, 1069, 0, 1068, 0, 1068, 0, 1067, 0, 1067, - 1068, 0, 0, 0, 1067, 1068, 1069, 0, 1069, 1067, 1070, 1071, 1070, 1069, 1069, - - 0, 0, 1070, 1069, 0, 0, 1071, 1070, 1071, 1072, 0, 1072, 0, 1071, 0, 0, 1072, - 0, 1071, 0, 0, 1072, 1070, 1071, 1070, 0, 0, 0, 1073, 1070, 0, 0, 0, 1071, - 1070, 1071, 1072, 1073, 1072, 1073, 1071, 0, 0, 1072, 1073, 1071, 0, 0, 1072, 1073, 1074, - 1075, 1074, 1075, 0, 1073, 0, 1074, 1075, 0, 0, 0, 1074, 1075, 1073, 0, 1073, 0, - 0, 0, 0, 1073, 0, 0, 0, 0, 1073, 1074, 1075, 1074, 1075, 1076, 1077, 1076, 1074, - 1075, 1077, 1078, 1076, 1074, 1075, 1078, 1077, 1076, 1079, 0, 1079, 1078, 0, 0, - - 0, 1079, 1077, 0, 0, 0, 1079, 1078, 1076, 1077, 1076, 0, 0, 1077, 1078, 1076, 0, - 0, 1078, 1077, 1076, 1079, 0, 1079, 1078, 0, 0, 0, 1079, 1077, 1080, 1081, 1080, 1079, - 1078, 1081, 1082, 1080, 1080, 0, 1082, 1081, 1080, 0, 0, 0, 1082, 0, 0, 0, 1083, - 1081, 0, 0, 1083, 0, 1082, 1080, 1081, 1080, 1083, 0, 1081, 1082, 1080, 1080, 0, 1082, - 1081, 1080, 1083, 0, 1084, 1082, 0, 1085, 1084, 1083, 1081, 1085, 1086, 1083, 1084, 1082, 1086, - 1085, 0, 1083, 0, 0, 1086, 0, 1084, 0, 1087, 1085, 0, 1083, 1087, 1084, - - 1086, 0, 1085, 1084, 1087, 0, 1085, 1086, 0, 1084, 0, 1086, 1085, 0, 1087, 0, 1088, - 1086, 0, 1084, 1088, 1087, 1085, 0, 1089, 1087, 1088, 1086, 1089, 1088, 0, 1087, 0, 0, - 1089, 0, 1088, 0, 1090, 0, 0, 1087, 1090, 1088, 1089, 0, 1090, 1088, 0, 0, 1091, - 1089, 1090, 1088, 1091, 1089, 1088, 0, 0, 0, 1091, 1089, 1090, 1088, 1092, 1090, 0, 0, - 1092, 1090, 1091, 1089, 0, 1090, 1092, 0, 1093, 1091, 1093, 1090, 0, 1091, 0, 1093, 1092, - 0, 0, 1091, 1093, 1090, 0, 1092, 1094, 0, 1094, 1092, 0, 1091, 0, 1094, - - 1095, 1092, 1095, 1093, 1094, 1093, 1096, 1095, 1096, 0, 1093, 1092, 1095, 1096, 0, 1093, 0, - 0, 1096, 1094, 0, 1094, 0, 0, 0, 1097, 1094, 1095, 0, 1095, 1098, 1094, 1098, 1096, - 1095, 1096, 1097, 1098, 1097, 1095, 1096, 0, 1098, 1097, 0, 1096, 0, 0, 1097, 0, 0, - 0, 1097, 0, 1099, 0, 1099, 1098, 0, 1098, 0, 1099, 1099, 1097, 1098, 1097, 1099, 1100, - 0, 1098, 1097, 1100, 1101, 0, 0, 1097, 1101, 1100, 0, 0, 1102, 1099, 1101, 1099, 1102, - 0, 0, 1100, 1099, 1099, 1102, 0, 1101, 1099, 1100, 0, 0, 0, 1100, 1101, - - 1102, 0, 1103, 1101, 1100, 0, 1103, 1102, 0, 1101, 0, 1102, 1103, 0, 1100, 0, 1104, - 1102, 0, 1101, 1104, 0, 1103, 0, 0, 0, 1104, 1102, 1105, 1103, 1105, 0, 0, 1103, - 1105, 0, 1104, 0, 0, 1103, 1105, 0, 1106, 1104, 1106, 0, 0, 1104, 1106, 1103, 1105, - 0, 0, 1104, 1106, 1105, 0, 1105, 1107, 0, 1107, 1105, 0, 1104, 1106, 1107, 1108, 1105, - 1108, 1106, 1107, 1106, 1109, 1108, 1109, 1106, 0, 1105, 1108, 1109, 0, 1106, 0, 0, 1109, - 1107, 0, 1107, 0, 0, 0, 1106, 1107, 1108, 0, 1108, 1110, 1107, 1110, 1109, - - 1108, 1109, 1111, 1110, 1111, 1108, 1109, 0, 1110, 1111, 1112, 1109, 1112, 0, 1111, 0, 0, - 1112, 0, 0, 0, 0, 1112, 1110, 0, 1110, 1113, 0, 1113, 1111, 1110, 1111, 0, 1113, - 1114, 1110, 1111, 1112, 1113, 1112, 0, 1111, 0, 0, 1112, 1114, 1173, 1114, 0, 1112, 1173, - 0, 1114, 1113, 0, 1113, 1173, 1114, 1115, 1116, 1113, 1114, 0, 0, 0, 1113, 1173, 0, - 1116, 1115, 1116, 1115, 1114, 1173, 1114, 1116, 1115, 1173, 0, 1114, 1116, 1115, 0, 1173, 1114, - 1115, 1116, 0, 0, 0, 0, 0, 1117, 1173, 1117, 1116, 1115, 1116, 1115, 1117, - - 1117, 0, 1116, 1115, 1117, 1118, 0, 1116, 1115, 0, 1119, 0, 1119, 1118, 0, 1118, 1120, - 1119, 1120, 1117, 1118, 1117, 1119, 1120, 0, 1118, 1117, 1117, 1120, 0, 0, 1117, 1118, 0, - 1121, 0, 1121, 1119, 0, 1119, 1118, 1121, 1118, 1120, 1119, 1120, 1121, 1118, 0, 1119, 1120, - 0, 1118, 0, 0, 1120, 0, 1122, 0, 1122, 1123, 1121, 1123, 1121, 1122, 0, 1123, 1123, - 1121, 1122, 0, 0, 1123, 1121, 0, 0, 1124, 0, 1124, 0, 0, 0, 0, 1124, 1122, - 0, 1122, 1123, 1124, 1123, 1169, 1122, 1169, 1123, 1123, 0, 1122, 1169, 0, 1123, - - 0, 0, 1169, 1124, 1170, 1124, 1170, 0, 0, 0, 1124, 1170, 0, 0, 0, 1124, 1170, - 1169, 1171, 1169, 1171, 0, 0, 0, 1169, 1171, 0, 0, 0, 1169, 1171, 1170, 1172, 1170, - 1172, 0, 1174, 0, 1170, 1172, 1174, 0, 0, 1170, 1172, 1171, 1174, 1171, 0, 0, 1175, - 0, 1171, 0, 1175, 0, 1174, 1171, 0, 1172, 1175, 1172, 0, 1174, 1176, 1176, 1172, 1174, - 0, 0, 1175, 1172, 0, 1174, 1177, 0, 0, 1175, 1177, 0, 0, 1175, 0, 1174, 1177, - 0, 0, 1175, 1178, 1176, 0, 0, 1178, 1176, 1177, 0, 1178, 1175, 0, 1176, - - 0, 1177, 1178, 0, 1179, 1177, 0, 0, 1179, 1176, 0, 1177, 1178, 0, 1179, 1178, 1176, - 0, 1180, 1178, 1176, 1177, 1180, 1178, 1179, 0, 1176, 0, 1180, 1178, 1181, 1179, 0, 1182, - 1181, 1179, 1176, 1182, 1180, 1178, 1181, 1179, 1183, 1182, 0, 1180, 1183, 0, 1182, 1180, 1181, - 1179, 1183, 1182, 0, 1180, 0, 1181, 0, 0, 1182, 1181, 1183, 0, 1182, 1180, 0, 1181, - 1184, 1183, 1182, 0, 1184, 1183, 0, 1182, 0, 1181, 1184, 1183, 1182, 1185, 0, 0, 0, - 1185, 0, 0, 1184, 1183, 1186, 1185, 1186, 0, 0, 1184, 0, 1186, 0, 1184, - - 0, 1185, 1186, 0, 1187, 1184, 1187, 0, 1185, 0, 0, 1187, 1185, 0, 1188, 1184, 1187, - 1186, 1185, 1186, 1189, 0, 1189, 1188, 1186, 1188, 0, 1189, 1185, 1186, 1188, 1187, 1189, 1187, - 0, 1188, 0, 0, 1187, 0, 0, 1188, 0, 1187, 1190, 0, 1190, 1189, 0, 1189, 1188, - 1190, 1188, 1191, 1189, 1191, 1190, 1188, 0, 1189, 1191, 0, 1188, 0, 0, 1191, 0, 0, - 0, 0, 0, 1190, 0, 1190, 0, 0, 0, 0, 1190, 1192, 1191, 1192, 1191, 1190, 1193, - 1192, 1192, 1191, 1193, 1194, 0, 1192, 1191, 1194, 1193, 1195, 0, 1195, 1196, 1194, - - 1196, 0, 1195, 0, 1193, 1196, 1192, 1195, 1192, 1194, 1196, 1193, 1192, 1192, 0, 1193, 1194, - 0, 1192, 0, 1194, 1193, 1195, 0, 1195, 1196, 1194, 1196, 1197, 1195, 1197, 1193, 1196, 0, - 1195, 1197, 1194, 1196, 0, 1198, 1197, 1198, 0, 0, 0, 0, 1198, 1198, 0, 0, 0, - 1198, 1200, 0, 1200, 1197, 0, 1197, 0, 1200, 0, 0, 1197, 0, 1200, 0, 1198, 1197, - 1198, 1199, 1199, 0, 1199, 1198, 1198, 0, 0, 1199, 1198, 1200, 0, 1200, 1199, 1201, 0, - 1201, 1200, 0, 0, 0, 1201, 1200, 0, 0, 0, 1201, 1199, 1199, 0, 1199, - - 0, 0, 0, 0, 1199, 0, 1202, 0, 1202, 1199, 1201, 0, 1201, 1202, 1202, 0, 0, - 1201, 1202, 1203, 0, 1203, 1201, 0, 0, 0, 1203, 1205, 1205, 1205, 1204, 1203, 1204, 1202, - 1205, 1202, 1204, 1204, 0, 1205, 1202, 1202, 1204, 0, 0, 1202, 1203, 0, 1203, 0, 0, - 0, 0, 1203, 1205, 1205, 1205, 1204, 1203, 1204, 1206, 1205, 1206, 1204, 1204, 0, 1205, 1206, - 1206, 1204, 1207, 1208, 1206, 1209, 1207, 1208, 0, 1209, 0, 0, 1207, 1208, 0, 1209, 0, - 0, 0, 1206, 0, 1206, 1207, 1208, 0, 1209, 1206, 1206, 0, 1207, 1208, 1206, - - 1209, 1207, 1208, 0, 1209, 1210, 0, 1207, 1208, 1210, 1209, 0, 0, 0, 0, 1210, 0, - 1207, 1208, 1236, 1209, 0, 0, 1236, 1234, 1210, 0, 0, 1234, 1236, 0, 0, 1210, 0, - 1234, 0, 1210, 1234, 0, 1236, 0, 0, 1210, 1237, 1234, 0, 1236, 1237, 0, 0, 1236, - 1234, 1210, 1237, 0, 1234, 1236, 0, 1237, 0, 0, 1234, 0, 1237, 1234, 0, 1236, 0, - 1238, 1239, 1237, 1234, 1238, 1239, 1237, 0, 0, 0, 1238, 1239, 1237, 0, 1240, 1241, 1240, - 1237, 1240, 1241, 1238, 1239, 1237, 0, 1240, 1241, 0, 1238, 1239, 1242, 1241, 1238, - - 1239, 1242, 1240, 1241, 0, 1238, 1239, 1242, 0, 1240, 1241, 1240, 0, 1240, 1241, 1238, 1239, - 1242, 0, 1240, 1241, 0, 1243, 1244, 1242, 1241, 1243, 1244, 1242, 1240, 1241, 0, 1243, 1244, - 1242, 0, 1244, 0, 0, 1245, 1246, 1245, 1243, 1244, 1242, 1246, 1245, 1246, 0, 1243, 1244, - 1245, 1246, 1243, 1244, 0, 0, 1246, 0, 1243, 1244, 0, 0, 1244, 0, 0, 1245, 1246, - 1245, 1243, 1244, 0, 1246, 1245, 1246, 1247, 0, 1247, 1245, 1246, 0, 1248, 1247, 1248, 1246, - 0, 0, 1247, 1248, 1249, 0, 1249, 0, 1248, 0, 0, 1249, 0, 0, 0, - - 0, 1249, 1247, 0, 1247, 0, 0, 1250, 1248, 1247, 1248, 1250, 0, 0, 1247, 1248, 1249, - 1250, 1249, 0, 1248, 1251, 0, 1249, 0, 1251, 1252, 1250, 1249, 1253, 1252, 1251, 1251, 1253, - 1250, 0, 1252, 0, 1250, 1253, 0, 1251, 0, 0, 1250, 0, 1252, 0, 1251, 1253, 1254, - 1254, 1251, 1252, 1250, 1254, 1253, 1252, 1251, 1251, 1253, 1254, 0, 1252, 1269, 1269, 1253, 0, - 1251, 0, 1271, 1254, 0, 1252, 1271, 1272, 1253, 1254, 1254, 1272, 1271, 0, 1254, 0, 1274, - 1272, 1274, 0, 1254, 1269, 1271, 1274, 0, 1269, 0, 1272, 1274, 1271, 1254, 1269, - - 0, 1271, 1272, 1275, 1273, 1275, 1272, 1271, 1273, 1269, 1275, 1274, 1272, 1274, 1273, 1275, 1269, - 1271, 1274, 0, 1269, 0, 1272, 1274, 1273, 0, 1269, 1276, 0, 1276, 1275, 1273, 1275, 0, - 1276, 1273, 1269, 1275, 1277, 1276, 1277, 1273, 1275, 0, 0, 1277, 1278, 0, 1278, 0, 1277, - 1273, 0, 1278, 1276, 0, 1276, 0, 1278, 1279, 0, 1276, 0, 1279, 1280, 1277, 1276, 1277, - 1280, 1279, 0, 0, 1277, 1278, 1280, 1278, 0, 1277, 1290, 1279, 1278, 0, 1290, 1291, 1280, - 1278, 1279, 1291, 1290, 0, 1279, 1280, 1292, 1291, 1292, 1280, 1279, 0, 1290, 1292, - - 1300, 1280, 1300, 1291, 1292, 1290, 1279, 1300, 0, 1290, 1291, 1280, 1300, 0, 1291, 1290, 0, - 0, 0, 1292, 1291, 1292, 0, 0, 0, 1290, 1292, 1300, 0, 1300, 1291, 1292, 0, 0, - 1300, 0, 0, 0, 0, 1300, 1332, 1332, 1332, 1332, 1332, 1333, 0, 0, 1333, 1333, 1335, - 1335, 1335, 0, 1335, 1336, 0, 1336, 1336, 1336, 1337, 0, 1337, 1337, 1337, 1338, 0, 1338, - 1338, 1338, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331}; +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[1332] = + { 0, + 0, 0, 183, 183, 2, 2, 187, 185, 4, 4, + 185, 185, 174, 181, 174, 174, 178, 174, 174, 174, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 174, 183, 184, 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, 169, 0, 1, 0, + 176, 175, 178, 171, 170, 168, 172, 180, 180, 180, + + 180, 180, 180, 12, 180, 180, 180, 19, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 71, 180, 180, 74, 83, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 101, 180, 180, + 106, 109, 110, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 146, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 173, 183, 182, 2, 2, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 179, 0, 175, 5, + 180, 7, 180, 180, 10, 180, 13, 180, 180, 180, + + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 34, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 48, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 59, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 78, + 180, 180, 86, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 102, 180, 180, 180, 107, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 132, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 147, 180, 180, + + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 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, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 20, 180, + 22, 23, 24, 180, 180, 180, 29, 180, 180, 180, + 32, 35, 180, 180, 180, 180, 180, 41, 180, 180, + 180, 46, 47, 180, 180, 180, 180, 180, 180, 180, + 56, 180, 180, 180, 61, 62, 180, 180, 66, 180, + 68, 69, 180, 180, 180, 180, 180, 180, 82, 180, + + 85, 87, 88, 180, 90, 180, 180, 93, 180, 180, + 180, 180, 180, 104, 180, 180, 180, 180, 113, 180, + 180, 116, 180, 180, 180, 180, 121, 180, 180, 180, + 180, 126, 180, 180, 180, 180, 134, 135, 180, 180, + 180, 180, 180, 142, 143, 144, 180, 149, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 159, 180, 161, + 180, 163, 164, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 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, 6, + 8, 180, 11, 180, 15, 180, 180, 180, 180, 180, + + 180, 180, 180, 180, 31, 180, 180, 180, 180, 180, + 180, 40, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 55, 57, 180, 180, 180, 64, 180, 70, + 72, 180, 75, 76, 180, 180, 180, 180, 89, 91, + 180, 94, 95, 180, 98, 180, 180, 180, 180, 111, + 112, 180, 180, 180, 180, 180, 120, 180, 180, 124, + 180, 180, 180, 180, 133, 180, 180, 180, 139, 180, + 180, 180, 180, 180, 152, 180, 180, 180, 156, 180, + 180, 180, 162, 165, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 180, 14, 180, 17, 180, 180, 180, 25, 27, + 180, 30, 180, 180, 180, 180, 180, 39, 180, 43, + + 180, 45, 49, 50, 180, 52, 180, 180, 180, 60, + 63, 65, 67, 73, 77, 180, 180, 180, 84, 92, + 96, 99, 180, 103, 180, 108, 180, 180, 180, 180, + 180, 122, 180, 180, 127, 129, 131, 180, 137, 180, + 140, 180, 180, 180, 180, 180, 153, 154, 155, 157, + 180, 180, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 9, 16, 18, 21, 180, + 26, 28, 180, 180, 180, 37, 38, 180, 180, 51, + 53, 54, 180, 79, 180, 180, 97, 100, 180, 180, + 180, 180, 118, 119, 180, 180, 128, 130, 180, 138, + 180, 180, 180, 180, 180, 158, 160, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 180, 0, 33, 180, 42, 44, 180, 180, 81, + 105, 180, 180, 180, 123, 125, 136, 180, 180, 180, + 150, 180, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 180, 0, 180, 58, 80, + 180, 115, 117, 141, 145, 180, 151, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 36, 114, 180, 2, 2, 2, 2, + 2, 2, 0, 0, 166, 148, 2, 2, 2, 2, + + 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, + 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, + 0, 167, 2, 2, 0, 2, 0, 2, 177, 2, + 0 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, + 6, 6, 6, 6, 8, 9, 6, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 6, 6, 20, + 21, 22, 6, 1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 6, 1, 6, 6, 49, 1, 50, 51, 52, 53, + + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 6, 76, 6, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static const YY_CHAR yy_meta[77] = + { 0, + 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, + 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 1 + } ; + +static const flex_int16_t yy_base[1339] = + { 0, + 0, 0, 839, 837, 76, 0, 842, 8771, 151, 153, + 785, 0, 8771, 8771, 149, 148, 160, 159, 783, 782, + 156, 156, 165, 210, 202, 255, 151, 163, 265, 152, + 171, 215, 218, 244, 295, 257, 0, 309, 349, 392, + 163, 279, 226, 180, 723, 0, 791, 0, 237, 251, + 775, 743, 0, 0, 243, 378, 451, 237, 682, 680, + 470, 546, 600, 652, 700, 752, 384, 458, 795, 466, + 532, 533, 534, 846, 895, 944, 547, 602, 990, 1042, + 307, 650, 587, 651, 596, 301, 8771, 666, 8771, 657, + 1107, 1117, 1128, 8771, 8771, 8771, 8771, 0, 218, 243, + + 300, 328, 250, 305, 379, 315, 319, 0, 376, 354, + 694, 389, 345, 440, 710, 387, 388, 436, 439, 462, + 469, 763, 465, 467, 465, 542, 480, 484, 498, 521, + 531, 553, 572, 0, 588, 588, 654, 592, 601, 588, + 608, 651, 717, 598, 649, 655, 651, 707, 660, 716, + 715, 0, 719, 708, 754, 744, 762, 760, 757, 802, + 768, 792, 770, 846, 810, 776, 812, 799, 817, 821, + 838, 821, 816, 816, 854, 861, 829, 848, 853, 894, + 872, 859, 879, 8771, 0, 8771, 0, 396, 0, 663, + 0, 636, 1138, 1148, 1159, 0, 0, 0, 0, 906, + + 942, 955, 1015, 1156, 1034, 1155, 1202, 1152, 1040, 1195, + 1199, 1232, 1272, 1257, 1272, 1301, 1353, 1350, 1361, 1388, + 1402, 1413, 1443, 1492, 1437, 1479, 1491, 1528, 1536, 1536, + 1561, 1575, 1577, 1590, 1618, 1621, 1629, 1668, 1717, 1639, + 1682, 1683, 1707, 1764, 1816, 1762, 1714, 1808, 1817, 1857, + 1860, 1881, 1904, 1873, 1917, 1940, 1773, 1952, 1984, 1993, + 1991, 2027, 2040, 2046, 2076, 2125, 2098, 2089, 2137, 2138, + 2176, 2173, 2207, 2191, 2225, 2247, 2263, 2310, 2271, 2295, + 2314, 2325, 2339, 2363, 2375, 0, 8771, 601, 2440, 0, + 882, 0, 900, 896, 0, 921, 0, 912, 925, 918, + + 941, 943, 951, 1158, 951, 960, 972, 984, 984, 1009, + 992, 995, 1009, 998, 1047, 1054, 1063, 1210, 1159, 1160, + 1152, 1210, 1209, 1223, 0, 1231, 1229, 1262, 1248, 1256, + 1256, 1256, 1271, 1279, 1286, 1287, 1292, 1307, 1318, 1301, + 1320, 1321, 1311, 1316, 1325, 1324, 1339, 1346, 1347, 1403, + 1339, 1370, 0, 1368, 1401, 1414, 1427, 1464, 1429, 1432, + 1421, 1427, 1439, 0, 1471, 1465, 1468, 1486, 1504, 1505, + 1493, 1648, 1512, 1555, 1516, 1547, 1553, 1582, 1574, 1587, + 1607, 1601, 1620, 1628, 1643, 0, 1637, 1651, 1663, 1684, + 1683, 1697, 1715, 1729, 1737, 1752, 1762, 0, 1756, 1807, + + 1768, 1809, 1772, 1790, 1797, 1802, 1830, 1811, 1823, 1872, + 1867, 1870, 0, 600, 2450, 2443, 2444, 2445, 2446, 2373, + 2480, 2488, 2489, 2500, 2528, 2536, 2541, 2543, 2557, 2606, + 2582, 2607, 2620, 2656, 2632, 2668, 2666, 2697, 2709, 2711, + 2725, 2750, 2768, 2765, 2800, 2809, 2818, 2844, 2859, 2857, + 2862, 2907, 2898, 2912, 2912, 2933, 2957, 2954, 2982, 3008, + 2980, 3029, 3033, 3037, 3075, 3079, 3078, 3123, 3126, 3135, + 3161, 3176, 3179, 3191, 3205, 3217, 3229, 3244, 3248, 3272, + 3273, 3292, 3317, 3369, 3295, 3331, 3366, 3330, 3391, 3394, + 3419, 3426, 3440, 3454, 3465, 3479, 3494, 3546, 3494, 3596, + + 3529, 3572, 3513, 3624, 3583, 3632, 3645, 3668, 3680, 3685, + 3688, 3693, 3729, 3734, 3737, 3736, 3744, 3780, 3784, 3793, + 3826, 3829, 3846, 3849, 3875, 3878, 3898, 3903, 3900, 3948, + 3919, 3947, 3975, 3989, 4003, 4019, 4033, 4057, 582, 1908, + 1917, 1913, 1914, 1924, 1930, 1941, 1933, 1944, 0, 1950, + 0, 0, 1979, 1977, 1983, 1977, 0, 1976, 1981, 2001, + 1991, 0, 2001, 2008, 2013, 2024, 2048, 2032, 2050, 2047, + 2050, 0, 0, 2059, 2066, 2072, 2085, 2105, 2107, 2119, + 0, 2137, 2144, 2159, 0, 0, 2166, 2152, 0, 2183, + 0, 2191, 2209, 2199, 2198, 2214, 2221, 2311, 0, 2230, + + 0, 0, 0, 2235, 0, 2248, 2263, 0, 2265, 2374, + 2266, 2276, 2300, 0, 2311, 2319, 2351, 2356, 0, 2366, + 2373, 0, 2381, 2388, 2397, 2451, 0, 2444, 2445, 2444, + 2464, 0, 2498, 2503, 2517, 2517, 0, 0, 2536, 2553, + 2554, 2560, 2559, 0, 0, 2560, 2594, 0, 2614, 2598, + 2609, 2646, 2669, 2655, 2672, 2681, 2687, 0, 2678, 0, + 2696, 0, 2700, 544, 4068, 4071, 4096, 4115, 4118, 4125, + 4120, 4161, 4169, 4172, 4181, 4210, 4211, 4229, 4251, 4263, + 4264, 4265, 4293, 4300, 4317, 4318, 4343, 4343, 4359, 4390, + 4401, 4425, 4443, 4451, 4468, 4484, 4487, 4493, 4529, 4535, + + 4543, 4573, 4576, 4597, 4504, 4598, 4624, 4626, 4652, 4650, + 4664, 4682, 4696, 4694, 4701, 4731, 4737, 4748, 4749, 4783, + 4791, 4794, 4839, 4835, 4836, 4877, 4880, 4881, 4921, 4924, + 4925, 4964, 4969, 4972, 4971, 4974, 5014, 5014, 5022, 5058, + 5066, 5067, 5096, 5108, 5111, 5120, 5149, 5150, 5168, 5194, + 5202, 5203, 5216, 5242, 5244, 5268, 5256, 5290, 5295, 5299, + 5312, 5334, 5342, 5341, 5347, 5366, 5388, 5391, 5396, 5410, + 5398, 5417, 5441, 5447, 5455, 5471, 5490, 5504, 5501, 5532, + 5544, 5549, 5583, 5584, 5585, 5597, 5598, 5629, 543, 0, + 0, 2701, 0, 2724, 0, 2726, 2713, 2739, 2764, 2769, + + 2765, 2761, 2769, 2784, 0, 2780, 2804, 2813, 2828, 2819, + 2858, 0, 2869, 2859, 2869, 2887, 2923, 2909, 2913, 2919, + 2952, 2959, 0, 0, 2960, 2965, 2989, 2992, 3020, 0, + 0, 3012, 0, 0, 3015, 3032, 3036, 3027, 0, 0, + 3077, 0, 0, 3090, 3077, 3105, 3087, 3101, 3090, 0, + 0, 3107, 3095, 3143, 3134, 3138, 0, 3158, 3173, 0, + 3191, 3197, 3198, 3204, 0, 3230, 3242, 3247, 3233, 3258, + 3286, 3313, 3315, 3316, 0, 3347, 3354, 3356, 0, 3349, + 3385, 3389, 0, 0, 536, 5632, 5633, 5673, 5674, 5685, + 5686, 5724, 5725, 5743, 5738, 5778, 5770, 5793, 5810, 5813, + + 5818, 5812, 5832, 5862, 5871, 5869, 5870, 5896, 5920, 5921, + 5925, 5945, 5950, 5969, 5994, 5971, 6018, 6042, 6023, 6064, + 6072, 6098, 6025, 6107, 6113, 6137, 6143, 6151, 6167, 6181, + 6195, 6220, 6209, 6225, 6249, 6255, 6273, 6279, 6297, 6308, + 6315, 6345, 6351, 6364, 6392, 6395, 6406, 6412, 6446, 6454, + 6482, 6490, 6504, 6516, 6528, 6540, 6558, 6570, 6584, 6598, + 6572, 6596, 6637, 6628, 6635, 6653, 6671, 6695, 6701, 6714, + 6725, 6752, 6754, 6778, 6786, 6788, 6807, 6831, 6828, 6837, + 526, 3399, 0, 3396, 0, 3401, 3417, 3409, 3416, 0, + 3436, 0, 3440, 3456, 3480, 3477, 3482, 0, 3520, 0, + + 3520, 0, 0, 0, 3533, 0, 3542, 3538, 3551, 0, + 0, 0, 0, 0, 0, 3544, 3558, 3566, 0, 0, + 3554, 0, 3565, 0, 3591, 0, 3581, 3596, 3605, 3622, + 3606, 0, 3630, 3642, 3630, 3631, 0, 3647, 0, 3662, + 0, 3678, 3698, 3701, 3731, 3784, 0, 0, 0, 0, + 3775, 3785, 525, 6866, 6875, 6873, 6882, 6891, 6884, 6920, + 6927, 6935, 6936, 6971, 6977, 6980, 7022, 7018, 7031, 7062, + 7073, 7076, 7104, 7117, 7118, 7148, 7156, 7161, 7161, 7197, + 7205, 7210, 7224, 7246, 7249, 7254, 7268, 7290, 7298, 7316, + 7324, 7338, 7343, 7359, 7367, 7373, 7403, 7397, 7421, 7441, + + 7446, 7454, 7476, 7490, 7504, 7518, 7525, 7533, 7539, 7563, + 7569, 7577, 7593, 7612, 7636, 7635, 7659, 7680, 7677, 7683, + 7701, 7724, 7727, 7743, 529, 0, 0, 0, 0, 3796, + 0, 0, 436, 3797, 3805, 0, 0, 3805, 3802, 0, + 0, 0, 3828, 0, 3849, 3845, 0, 0, 3841, 3861, + 3880, 3886, 0, 0, 3917, 3937, 0, 0, 3934, 0, + 3938, 3956, 3957, 3974, 3977, 0, 0, 527, 7757, 7771, + 7785, 7799, 7620, 7810, 7824, 7863, 7848, 7866, 7878, 7892, + 7904, 7907, 7916, 7942, 7955, 7957, 7971, 7990, 7987, 8011, + 8020, 8046, 8058, 8063, 8062, 8065, 8095, 8106, 8137, 8119, + + 8150, 8173, 8186, 8197, 8194, 8227, 8244, 8245, 8247, 8279, + 526, 3973, 4081, 0, 3972, 0, 0, 3990, 3982, 0, + 0, 3989, 4018, 4029, 0, 0, 0, 4021, 4035, 4057, + 0, 4063, 524, 8298, 4259, 8293, 8317, 8342, 8343, 8356, + 8357, 8371, 8396, 8397, 8406, 8412, 8442, 8448, 8456, 8481, + 8495, 8500, 8503, 8525, 514, 438, 4062, 4083, 0, 0, + 4072, 0, 0, 0, 0, 4116, 0, 506, 8563, 4119, + 8544, 8549, 8578, 8551, 8570, 8594, 8605, 8613, 8633, 8638, + 470, 4161, 4142, 0, 0, 4154, 468, 4396, 4168, 8652, + 8657, 8659, 465, 4221, 8771, 0, 418, 4227, 0, 8667, + + 418, 4213, 390, 4214, 388, 4223, 386, 4242, 347, 4275, + 343, 4301, 338, 4306, 335, 4320, 334, 4329, 332, 4357, + 303, 8771, 293, 0, 299, 286, 248, 243, 8771, 0, + 8771, 8740, 8745, 201, 8750, 8755, 8760, 8765 + } ; + +static const flex_int16_t yy_def[1339] = + { 0, + 1331, 1, 1332, 1332, 1331, 5, 1331, 1331, 1331, 1331, + 1331, 1333, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1331, + 1336, 1337, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1338, 1338, 62, 62, 62, 63, 65, 62, 65, 62, + 62, 62, 62, 63, 63, 63, 62, 62, 62, 62, + 65, 62, 62, 62, 1336, 1331, 1331, 1333, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1331, 1335, 1331, 1336, 1336, 1336, 1337, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 62, + + 62, 62, 65, 65, 65, 65, 65, 65, 62, 62, + 65, 65, 65, 62, 62, 62, 65, 65, 65, 62, + 65, 65, 65, 62, 65, 65, 62, 65, 62, 65, + 62, 62, 65, 65, 65, 65, 62, 62, 65, 65, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 62, 62, 65, 62, 62, 62, 63, 62, 62, 62, + 65, 62, 62, 62, 62, 1336, 1331, 1331, 1331, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1336, 1336, 1336, 62, 62, 62, 62, 65, + 65, 65, 65, 62, 62, 62, 62, 65, 65, 62, + 62, 62, 62, 62, 62, 62, 65, 65, 62, 65, + 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 65, 65, 65, 65, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 65, 65, 65, 62, 62, 62, 62, 65, 65, + + 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, + 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, + 65, 65, 62, 62, 65, 65, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 1331, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1336, 65, 65, 62, 62, 62, 65, + 62, 65, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 65, 62, 62, 62, 65, 65, 65, + 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, + + 65, 65, 65, 65, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 65, 65, 65, 62, 62, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 62, 62, 62, 65, 65, 65, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 62, 62, 62, 65, 62, 62, 62, 62, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 65, 1331, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1336, 65, 65, 65, 65, 62, + 62, 62, 62, 62, 62, 62, 65, 65, 62, 62, + + 62, 65, 62, 62, 62, 65, 62, 62, 62, 62, + 65, 62, 62, 62, 62, 65, 62, 62, 62, 62, + 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 62, 65, 65, 65, 65, 65, 65, 65, 62, + 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 65, + 65, 62, 62, 62, 62, 65, 65, 65, 65, 65, + 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1336, 62, 62, 65, 65, 65, 62, 62, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 62, 62, 65, 65, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 65, 65, 65, 65, 65, 65, 65, 62, + + 62, 62, 62, 62, 62, 62, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 1331, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 65, 65, + 65, 65, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 65, 65, 65, 65, 65, + 65, 65, 62, 62, 65, 65, 65, 65, 65, 65, + + 65, 65, 65, 65, 65, 65, 62, 62, 62, 62, + 1331, 1334, 1331, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1336, 62, 1336, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 65, 65, 65, 65, 65, 62, + 62, 62, 62, 62, 1331, 1334, 1331, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1336, 62, 1336, + 62, 62, 62, 65, 65, 65, 65, 65, 62, 62, + 1331, 1331, 1331, 1334, 1334, 1334, 1336, 1336, 1336, 62, + 62, 65, 1331, 1331, 1331, 1334, 1336, 1336, 1336, 65, + + 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, + 1336, 1336, 1331, 1331, 1336, 1336, 1331, 1331, 1336, 1336, + 1331, 1331, 1336, 1336, 1331, 1336, 1331, 1336, 1331, 1336, + 0, 1331, 1331, 1331, 1331, 1331, 1331, 1331 + } ; + +static const flex_int16_t yy_nxt[8848] = + { 0, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, + + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, + 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, + 95, 99, 105, 100, 129, 131, 106, 109, 139, 101, + 130, 102, 107, 132, 110, 103, 104, 140, 176, 133, + + 177, 111, 108, 178, 112, 98, 183, 113, 99, 105, + 100, 129, 131, 106, 109, 139, 101, 130, 102, 107, + 132, 110, 103, 104, 140, 176, 133, 177, 111, 108, + 178, 112, 114, 183, 113, 119, 115, 120, 188, 86, + 116, 141, 121, 290, 144, 142, 117, 122, 145, 118, + 191, 143, 86, 86, 146, 181, 182, 196, 197, 114, + 1330, 192, 119, 115, 120, 1329, 147, 116, 141, 121, + 290, 144, 142, 117, 122, 145, 118, 123, 143, 156, + 148, 146, 181, 182, 291, 124, 149, 150, 125, 296, + 157, 126, 134, 147, 127, 1328, 158, 128, 135, 136, + + 137, 179, 86, 86, 123, 138, 156, 148, 1327, 180, + 1326, 291, 124, 149, 150, 125, 296, 157, 126, 134, + 1325, 127, 151, 158, 128, 135, 136, 137, 179, 297, + 152, 159, 138, 292, 153, 160, 180, 154, 155, 161, + 200, 293, 278, 301, 279, 162, 1323, 280, 1321, 151, + 294, 1319, 200, 295, 1317, 302, 297, 152, 159, 1315, + 292, 153, 160, 1313, 154, 155, 161, 200, 293, 278, + 301, 279, 162, 163, 280, 164, 305, 294, 165, 200, + 295, 166, 302, 167, 312, 168, 169, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 188, 86, 1311, + + 163, 1309, 164, 305, 1307, 165, 298, 299, 166, 303, + 167, 312, 168, 169, 170, 310, 304, 231, 171, 200, + 300, 172, 173, 232, 200, 311, 320, 321, 174, 200, + 322, 175, 1305, 298, 299, 1303, 303, 1213, 1213, 1282, + 1282, 170, 310, 304, 231, 171, 200, 300, 172, 173, + 232, 200, 311, 320, 321, 174, 200, 322, 175, 194, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 187, 187, 323, 187, 187, 187, 187, 187, 187, 324, + 233, 313, 1301, 1297, 200, 1293, 314, 325, 234, 187, + 187, 187, 200, 326, 235, 201, 200, 202, 332, 323, + + 333, 334, 241, 203, 200, 204, 324, 233, 313, 205, + 206, 200, 200, 314, 325, 234, 337, 338, 1287, 200, + 326, 235, 201, 200, 202, 332, 1281, 333, 334, 241, + 203, 200, 204, 1268, 339, 1255, 205, 206, 1233, 200, + 1211, 1168, 1125, 337, 338, 187, 187, 187, 1053, 187, + 187, 187, 187, 187, 187, 981, 885, 340, 242, 243, + 246, 339, 200, 244, 247, 187, 187, 187, 200, 245, + 248, 341, 207, 200, 342, 335, 208, 200, 200, 200, + 200, 336, 209, 200, 340, 242, 243, 246, 343, 200, + 244, 247, 210, 200, 789, 200, 245, 248, 341, 207, + + 200, 342, 335, 208, 200, 200, 200, 200, 336, 209, + 200, 664, 539, 200, 344, 343, 283, 284, 345, 210, + 200, 187, 211, 200, 261, 346, 200, 351, 262, 212, + 200, 352, 263, 200, 353, 354, 213, 360, 264, 214, + 200, 344, 215, 283, 284, 345, 200, 414, 200, 211, + 200, 261, 346, 200, 351, 262, 212, 200, 352, 263, + 200, 353, 354, 213, 360, 264, 214, 413, 288, 215, + 287, 286, 281, 200, 216, 200, 200, 285, 217, 347, + 282, 200, 218, 355, 361, 356, 200, 200, 219, 348, + 362, 220, 363, 366, 349, 350, 200, 200, 200, 281, + + 199, 216, 198, 200, 285, 217, 347, 282, 200, 218, + 355, 361, 356, 200, 200, 219, 348, 362, 220, 363, + 366, 349, 350, 200, 200, 200, 200, 306, 307, 308, + 200, 309, 315, 221, 316, 222, 200, 317, 367, 357, + 223, 358, 368, 318, 369, 224, 200, 187, 364, 370, + 319, 365, 359, 200, 306, 307, 308, 200, 309, 315, + 221, 316, 222, 200, 317, 367, 357, 223, 358, 368, + 318, 369, 224, 200, 225, 364, 370, 319, 365, 359, + 371, 200, 226, 372, 373, 227, 374, 327, 228, 328, + 375, 229, 376, 329, 230, 189, 380, 186, 184, 383, + + 330, 225, 97, 96, 331, 87, 389, 371, 200, 226, + 372, 373, 227, 374, 327, 228, 328, 375, 229, 376, + 329, 230, 236, 380, 377, 381, 383, 330, 237, 238, + 239, 331, 387, 389, 390, 240, 382, 378, 391, 392, + 200, 1331, 379, 47, 393, 47, 388, 396, 1331, 236, + 397, 377, 381, 398, 404, 237, 238, 239, 1331, 387, + 1331, 390, 240, 382, 378, 391, 392, 200, 249, 379, + 384, 393, 394, 388, 396, 200, 399, 397, 405, 385, + 398, 404, 250, 395, 401, 200, 406, 386, 251, 252, + 1331, 402, 407, 1331, 403, 249, 400, 384, 410, 394, + + 411, 412, 200, 399, 1331, 405, 385, 1331, 540, 250, + 395, 401, 200, 406, 386, 251, 252, 200, 402, 407, + 408, 403, 253, 400, 200, 410, 541, 411, 412, 542, + 254, 200, 200, 409, 255, 540, 200, 256, 257, 1331, + 1331, 1331, 200, 543, 200, 1331, 1331, 408, 544, 253, + 1331, 200, 200, 541, 1331, 545, 542, 254, 200, 200, + 409, 255, 546, 200, 256, 257, 258, 416, 200, 200, + 543, 547, 200, 200, 1331, 544, 548, 259, 200, 200, + 200, 200, 545, 260, 549, 200, 200, 1331, 200, 546, + 553, 200, 1331, 258, 416, 200, 417, 1331, 547, 200, + + 200, 200, 554, 548, 259, 200, 555, 200, 200, 1331, + 260, 549, 200, 200, 265, 200, 266, 553, 200, 267, + 200, 1331, 268, 417, 269, 556, 270, 271, 200, 554, + 557, 558, 559, 555, 560, 561, 200, 1331, 562, 1331, + 1331, 265, 1331, 266, 1331, 1331, 267, 200, 418, 268, + 200, 269, 556, 270, 271, 200, 419, 557, 558, 559, + 200, 560, 561, 200, 272, 562, 200, 200, 273, 200, + 200, 274, 275, 422, 200, 418, 428, 200, 276, 200, + 563, 277, 200, 419, 564, 565, 200, 200, 200, 1331, + 1331, 272, 1331, 200, 200, 273, 200, 200, 274, 275, + + 422, 200, 1331, 428, 1331, 276, 200, 563, 277, 1331, + 1331, 564, 565, 200, 1331, 200, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 289, 289, 289, 289, + 289, 289, 289, 289, 289, 289, 92, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 415, 415, 415, + 415, 415, 415, 415, 415, 415, 415, 194, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 420, 423, + 427, 421, 550, 568, 551, 200, 569, 200, 200, 200, + 200, 200, 200, 570, 1331, 200, 200, 200, 1331, 552, + + 200, 200, 1331, 1331, 1331, 420, 423, 427, 421, 550, + 568, 551, 200, 569, 200, 200, 200, 200, 200, 200, + 570, 200, 200, 200, 200, 200, 552, 200, 200, 424, + 425, 200, 429, 571, 200, 200, 566, 200, 1331, 430, + 1331, 200, 200, 426, 200, 1331, 572, 200, 200, 573, + 1331, 567, 200, 574, 431, 575, 424, 425, 200, 429, + 571, 200, 200, 566, 200, 200, 430, 200, 200, 200, + 426, 200, 200, 572, 200, 1331, 573, 200, 567, 1331, + 574, 431, 575, 436, 1331, 1331, 576, 200, 577, 578, + 1331, 1331, 200, 437, 200, 579, 580, 581, 200, 200, + + 1331, 582, 200, 200, 200, 432, 433, 434, 200, 435, + 436, 438, 200, 576, 200, 577, 578, 200, 200, 583, + 437, 584, 579, 580, 581, 200, 585, 200, 582, 200, + 200, 200, 432, 433, 434, 200, 435, 200, 438, 200, + 586, 587, 439, 588, 200, 200, 583, 440, 584, 589, + 1331, 590, 591, 585, 200, 592, 1331, 593, 200, 1331, + 594, 1331, 1331, 1331, 200, 595, 1331, 586, 587, 439, + 588, 1331, 596, 597, 440, 441, 589, 442, 590, 591, + 443, 600, 592, 200, 593, 200, 444, 594, 200, 446, + 447, 1331, 595, 445, 200, 200, 200, 1331, 200, 596, + + 597, 200, 441, 448, 442, 601, 200, 443, 600, 602, + 200, 1331, 200, 444, 200, 200, 446, 447, 200, 1331, + 445, 200, 200, 200, 449, 200, 1331, 603, 200, 598, + 448, 1331, 601, 200, 200, 200, 602, 200, 451, 599, + 1331, 200, 450, 1331, 604, 200, 200, 200, 200, 1331, + 1331, 449, 605, 200, 603, 1331, 598, 608, 200, 1331, + 609, 200, 200, 610, 200, 451, 599, 452, 611, 450, + 458, 604, 200, 200, 200, 200, 200, 200, 200, 605, + 200, 612, 200, 200, 608, 200, 606, 609, 200, 1331, + 610, 1331, 1331, 613, 452, 611, 607, 458, 614, 200, + + 1331, 1331, 1331, 200, 200, 200, 1331, 615, 612, 200, + 200, 1331, 459, 606, 200, 200, 453, 200, 454, 200, + 613, 200, 455, 607, 200, 614, 616, 460, 200, 456, + 617, 618, 619, 457, 615, 1331, 1331, 200, 200, 459, + 1331, 200, 1331, 453, 200, 454, 200, 622, 200, 455, + 625, 200, 1331, 616, 460, 200, 456, 617, 618, 619, + 457, 461, 200, 200, 200, 200, 200, 462, 200, 464, + 1331, 200, 463, 200, 622, 626, 200, 625, 1331, 623, + 1331, 200, 200, 1331, 1331, 1331, 627, 200, 461, 200, + 200, 200, 624, 200, 462, 200, 464, 465, 200, 463, + + 200, 200, 626, 200, 628, 200, 623, 200, 200, 200, + 200, 466, 200, 627, 200, 629, 630, 467, 200, 624, + 468, 200, 200, 200, 465, 469, 1331, 1331, 200, 1331, + 200, 628, 200, 1331, 200, 200, 1331, 200, 466, 200, + 631, 632, 629, 630, 467, 1331, 633, 468, 200, 200, + 200, 200, 469, 200, 200, 200, 200, 200, 200, 471, + 470, 200, 200, 200, 634, 200, 200, 631, 632, 635, + 620, 1331, 200, 633, 477, 200, 636, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 471, 470, 200, 621, + 200, 634, 200, 200, 200, 637, 635, 620, 200, 200, + + 638, 477, 200, 636, 200, 472, 200, 1331, 200, 200, + 1331, 200, 478, 200, 200, 1331, 621, 639, 200, 200, + 1331, 200, 637, 1331, 640, 200, 1331, 638, 200, 479, + 1331, 200, 472, 200, 480, 200, 200, 200, 641, 478, + 200, 200, 473, 200, 639, 200, 200, 200, 642, 487, + 200, 640, 474, 200, 200, 200, 479, 475, 476, 200, + 200, 480, 200, 1331, 200, 641, 643, 1331, 1331, 473, + 200, 1331, 1331, 1331, 200, 642, 487, 200, 644, 474, + 200, 200, 1331, 1331, 475, 476, 200, 645, 646, 200, + 200, 647, 1331, 643, 200, 200, 481, 200, 482, 497, + + 200, 486, 200, 200, 650, 644, 1331, 200, 653, 200, + 200, 1331, 654, 1331, 645, 646, 1331, 200, 647, 200, + 1331, 200, 200, 481, 200, 482, 497, 200, 486, 200, + 200, 650, 655, 648, 200, 653, 200, 200, 483, 654, + 484, 200, 649, 488, 656, 651, 200, 652, 200, 200, + 200, 485, 200, 200, 657, 658, 200, 200, 489, 655, + 648, 200, 200, 1331, 659, 483, 1331, 484, 200, 649, + 488, 656, 651, 1331, 652, 200, 200, 200, 485, 200, + 200, 657, 658, 200, 200, 489, 1331, 1331, 200, 200, + 200, 659, 200, 492, 1331, 200, 662, 200, 490, 1331, + + 200, 491, 200, 493, 1331, 200, 200, 660, 200, 663, + 1331, 661, 1331, 200, 200, 1331, 200, 200, 200, 200, + 492, 200, 200, 662, 200, 490, 200, 200, 491, 200, + 493, 494, 200, 200, 660, 200, 663, 200, 661, 200, + 200, 200, 495, 200, 200, 200, 1331, 790, 200, 200, + 200, 1331, 200, 200, 1331, 1331, 791, 200, 494, 792, + 793, 1331, 200, 794, 200, 795, 200, 796, 797, 495, + 798, 200, 799, 200, 790, 200, 200, 200, 200, 200, + 200, 496, 200, 791, 200, 200, 792, 793, 200, 200, + 794, 498, 795, 1331, 796, 797, 1331, 798, 200, 799, + + 200, 800, 200, 1331, 1331, 200, 499, 200, 496, 200, + 200, 801, 200, 802, 200, 200, 803, 804, 498, 500, + 200, 805, 1331, 501, 200, 200, 502, 806, 800, 200, + 200, 200, 807, 499, 808, 1331, 200, 200, 801, 200, + 802, 200, 809, 803, 804, 1331, 500, 200, 805, 503, + 501, 200, 1331, 502, 806, 810, 200, 200, 200, 807, + 200, 808, 504, 200, 1331, 811, 200, 505, 506, 809, + 812, 813, 200, 200, 814, 200, 503, 815, 1331, 507, + 200, 200, 810, 816, 1331, 200, 200, 200, 1331, 504, + 508, 200, 811, 1331, 505, 506, 817, 812, 813, 200, + + 200, 814, 200, 818, 815, 509, 507, 200, 200, 200, + 816, 200, 200, 200, 819, 200, 200, 508, 200, 515, + 513, 200, 1331, 817, 200, 200, 820, 821, 200, 822, + 818, 1331, 509, 1331, 514, 200, 200, 1331, 200, 1331, + 1331, 819, 200, 200, 200, 823, 515, 513, 200, 510, + 1331, 200, 200, 820, 821, 200, 822, 1331, 511, 516, + 200, 514, 200, 200, 200, 200, 512, 200, 200, 1331, + 200, 200, 823, 200, 200, 1331, 510, 517, 824, 1331, + 825, 826, 1331, 200, 200, 511, 516, 200, 827, 828, + 200, 200, 200, 512, 200, 200, 519, 200, 518, 200, + + 200, 200, 200, 200, 517, 824, 200, 825, 826, 200, + 200, 200, 200, 1331, 1331, 827, 828, 522, 829, 200, + 1331, 200, 200, 519, 1331, 518, 200, 200, 1331, 200, + 200, 830, 1331, 200, 1331, 831, 200, 200, 832, 200, + 200, 520, 200, 833, 522, 829, 200, 200, 200, 200, + 1331, 200, 521, 834, 200, 200, 1331, 1331, 830, 523, + 835, 200, 831, 838, 200, 832, 1331, 200, 520, 200, + 833, 200, 1331, 200, 200, 1331, 839, 200, 200, 521, + 834, 840, 200, 200, 524, 525, 523, 835, 200, 841, + 838, 842, 200, 200, 1331, 845, 530, 200, 200, 200, + + 200, 200, 200, 839, 200, 526, 1331, 200, 840, 1331, + 200, 524, 525, 1331, 1331, 846, 841, 200, 842, 200, + 200, 200, 845, 530, 200, 531, 200, 1331, 200, 200, + 847, 200, 526, 527, 200, 848, 200, 1331, 1331, 836, + 528, 200, 846, 529, 200, 849, 200, 532, 200, 200, + 837, 534, 531, 533, 200, 200, 200, 847, 200, 200, + 527, 200, 848, 200, 535, 536, 836, 528, 200, 200, + 529, 200, 849, 200, 532, 200, 200, 837, 534, 1331, + 533, 200, 200, 200, 1331, 200, 200, 1331, 200, 200, + 850, 535, 536, 200, 1331, 851, 200, 538, 200, 200, + + 852, 200, 200, 853, 537, 200, 667, 854, 200, 200, + 855, 200, 200, 200, 843, 844, 200, 850, 200, 856, + 200, 200, 851, 1331, 538, 1331, 200, 852, 200, 1331, + 853, 537, 200, 667, 854, 200, 200, 855, 200, 1331, + 200, 843, 844, 1331, 1331, 200, 856, 1331, 200, 289, + 289, 289, 289, 289, 289, 289, 289, 289, 289, 415, + 415, 415, 415, 415, 415, 415, 415, 415, 415, 200, + 665, 200, 666, 200, 200, 200, 200, 857, 858, 200, + 200, 200, 200, 1331, 859, 860, 1331, 861, 1331, 200, + 200, 200, 200, 1331, 1331, 1331, 200, 665, 200, 666, + + 200, 200, 200, 200, 857, 858, 200, 200, 200, 200, + 668, 859, 860, 200, 861, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 200, + 200, 1331, 862, 200, 200, 1331, 669, 668, 863, 1331, + 200, 864, 200, 865, 1331, 1331, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 670, 862, + 200, 200, 200, 669, 200, 863, 200, 200, 864, 866, + 865, 672, 200, 200, 200, 1331, 673, 200, 200, 867, + 671, 200, 200, 200, 868, 670, 869, 200, 200, 200, + 674, 200, 200, 200, 200, 870, 866, 200, 672, 200, + + 871, 200, 200, 673, 200, 200, 867, 671, 200, 200, + 200, 868, 200, 869, 200, 200, 1331, 674, 200, 200, + 1331, 678, 870, 1331, 200, 1331, 1331, 871, 200, 200, + 675, 1331, 676, 200, 872, 200, 200, 200, 873, 200, + 874, 1331, 200, 200, 875, 200, 200, 677, 678, 679, + 200, 1331, 200, 200, 680, 200, 200, 675, 200, 676, + 200, 872, 200, 200, 200, 873, 200, 874, 200, 200, + 200, 875, 1331, 200, 677, 1331, 679, 200, 682, 200, + 200, 680, 200, 200, 1331, 200, 200, 1331, 876, 200, + 683, 877, 200, 200, 200, 200, 878, 681, 200, 200, + + 879, 200, 200, 1331, 200, 682, 684, 880, 1331, 200, + 1331, 200, 1331, 200, 200, 876, 881, 683, 877, 200, + 882, 200, 883, 878, 681, 200, 200, 879, 200, 200, + 200, 200, 200, 684, 880, 686, 685, 200, 200, 200, + 884, 200, 200, 881, 200, 200, 200, 882, 982, 883, + 983, 687, 984, 1331, 985, 200, 200, 200, 688, 200, + 200, 986, 686, 685, 200, 200, 200, 884, 1331, 200, + 200, 200, 200, 200, 1331, 982, 200, 983, 687, 984, + 689, 985, 200, 200, 1331, 688, 200, 200, 986, 987, + 690, 691, 200, 988, 200, 200, 200, 200, 200, 1331, + + 989, 200, 990, 200, 200, 991, 692, 689, 1331, 1331, + 992, 200, 1331, 200, 200, 993, 987, 690, 691, 1331, + 988, 200, 200, 200, 693, 200, 200, 989, 200, 990, + 200, 200, 991, 692, 994, 694, 200, 992, 200, 200, + 1331, 200, 993, 1331, 200, 200, 200, 1331, 200, 995, + 996, 693, 997, 200, 200, 200, 1331, 200, 1331, 695, + 1331, 994, 694, 200, 200, 1331, 200, 696, 1331, 1331, + 200, 200, 200, 200, 200, 200, 995, 996, 1331, 997, + 200, 200, 200, 698, 998, 200, 695, 200, 200, 200, + 200, 200, 200, 200, 696, 200, 697, 200, 200, 999, + + 1000, 200, 1331, 200, 1001, 200, 1331, 200, 200, 1331, + 698, 998, 200, 1002, 200, 200, 200, 200, 1331, 200, + 200, 1331, 200, 697, 700, 200, 999, 1000, 200, 699, + 200, 1001, 200, 200, 200, 200, 701, 200, 200, 1331, + 1002, 1331, 200, 200, 200, 200, 1331, 200, 200, 1003, + 1004, 700, 702, 200, 1005, 200, 699, 200, 200, 1006, + 200, 200, 1331, 701, 200, 200, 703, 1331, 200, 200, + 200, 200, 200, 200, 200, 200, 1003, 1004, 200, 702, + 200, 1005, 1007, 1008, 200, 200, 1006, 200, 1331, 200, + 200, 1331, 200, 703, 705, 200, 704, 200, 1331, 200, + + 200, 1331, 200, 1331, 1009, 200, 1010, 1331, 706, 1007, + 1008, 1331, 200, 708, 200, 200, 200, 200, 200, 200, + 200, 705, 1011, 704, 200, 200, 200, 1331, 200, 200, + 707, 1009, 1012, 1010, 200, 706, 1331, 1331, 200, 200, + 708, 1331, 200, 1331, 200, 200, 1331, 200, 1013, 1011, + 1331, 1331, 200, 1014, 200, 200, 1015, 707, 1016, 1012, + 1019, 200, 200, 709, 200, 200, 200, 710, 200, 200, + 711, 200, 200, 200, 200, 1013, 1017, 200, 200, 1018, + 1014, 200, 200, 1015, 1331, 1016, 1331, 1019, 1331, 200, + 709, 200, 1331, 200, 710, 200, 200, 711, 712, 200, + + 200, 200, 1020, 1017, 200, 200, 1018, 714, 200, 200, + 200, 200, 200, 200, 200, 200, 1021, 1022, 200, 200, + 200, 713, 1331, 200, 200, 712, 1331, 1023, 1024, 1020, + 1025, 1026, 1331, 1027, 714, 200, 1028, 200, 200, 200, + 200, 200, 200, 1021, 1022, 200, 200, 200, 713, 200, + 200, 200, 200, 715, 1023, 1024, 200, 1025, 1026, 200, + 1027, 200, 200, 1028, 1331, 200, 1331, 716, 1029, 200, + 1331, 200, 200, 1030, 717, 1331, 200, 1031, 1331, 200, + 715, 200, 1331, 200, 1032, 1331, 200, 200, 200, 200, + 1331, 200, 200, 718, 716, 1029, 200, 200, 200, 200, + + 1030, 717, 200, 1033, 1031, 720, 200, 200, 200, 200, + 1331, 1032, 719, 1034, 200, 200, 1331, 721, 200, 1035, + 718, 200, 200, 1036, 200, 200, 1331, 200, 1331, 200, + 1033, 722, 720, 200, 200, 200, 200, 200, 1331, 719, + 1034, 200, 200, 723, 721, 1037, 1035, 200, 200, 200, + 1036, 200, 200, 724, 200, 200, 1331, 1331, 722, 200, + 1038, 1331, 200, 200, 200, 200, 1331, 1039, 200, 1040, + 723, 725, 1037, 1041, 200, 200, 1331, 200, 200, 726, + 724, 200, 200, 200, 200, 1331, 200, 1038, 200, 200, + 200, 1331, 200, 200, 1039, 1331, 1040, 1042, 725, 728, + + 1041, 1331, 200, 200, 200, 200, 726, 200, 200, 200, + 200, 200, 200, 727, 1331, 200, 200, 200, 200, 200, + 200, 200, 729, 733, 1042, 200, 728, 1043, 200, 1331, + 200, 200, 200, 1331, 200, 1044, 200, 1045, 200, 200, + 727, 200, 730, 200, 200, 200, 200, 200, 200, 729, + 733, 1046, 200, 200, 1043, 200, 200, 200, 200, 734, + 200, 200, 1044, 200, 1045, 200, 200, 200, 200, 730, + 200, 736, 1331, 1047, 200, 1331, 200, 200, 1046, 1048, + 200, 1331, 1049, 200, 200, 1331, 734, 200, 200, 1050, + 200, 731, 200, 200, 200, 200, 200, 1331, 736, 200, + + 1047, 732, 200, 200, 200, 200, 1048, 1051, 735, 1049, + 1331, 1052, 200, 1331, 1331, 200, 1050, 200, 731, 200, + 200, 200, 200, 200, 200, 1126, 200, 200, 732, 200, + 200, 1127, 200, 737, 1051, 735, 1128, 200, 1052, 200, + 200, 738, 200, 1129, 200, 200, 1331, 200, 200, 200, + 1130, 200, 1126, 1331, 200, 200, 1131, 200, 1127, 739, + 737, 200, 1331, 1128, 200, 200, 200, 200, 738, 1132, + 1129, 200, 200, 200, 1331, 200, 200, 1130, 1331, 740, + 200, 1133, 200, 1131, 1331, 200, 739, 200, 200, 200, + 1134, 742, 200, 200, 741, 200, 1132, 1331, 200, 200, + + 200, 200, 200, 1331, 1135, 743, 740, 200, 1133, 200, + 1136, 200, 200, 1331, 200, 200, 200, 1134, 742, 1331, + 200, 741, 200, 1137, 200, 200, 200, 200, 200, 747, + 200, 1135, 743, 744, 200, 1331, 200, 1136, 200, 200, + 200, 1331, 200, 1138, 1139, 1331, 752, 200, 200, 1331, + 1137, 200, 200, 200, 200, 1331, 747, 200, 200, 1140, + 744, 200, 200, 750, 200, 1331, 200, 200, 745, 200, + 1138, 1139, 200, 752, 200, 200, 200, 1141, 1331, 1142, + 200, 1143, 200, 1144, 1145, 200, 1140, 746, 1146, 200, + 750, 200, 200, 1331, 1147, 745, 200, 1331, 1148, 200, + + 751, 200, 1331, 200, 1141, 200, 1142, 200, 1143, 200, + 1144, 1145, 200, 1149, 746, 1146, 200, 200, 200, 200, + 748, 1147, 1150, 200, 754, 1148, 1151, 751, 200, 200, + 1331, 200, 200, 749, 200, 1152, 200, 1331, 1331, 200, + 1149, 200, 1331, 200, 200, 200, 753, 748, 1153, 1150, + 200, 754, 1154, 1151, 1155, 200, 200, 200, 200, 200, + 749, 755, 1152, 200, 200, 200, 1156, 200, 200, 200, + 1157, 1158, 200, 753, 1331, 1153, 1331, 200, 756, 1154, + 200, 1155, 1159, 1331, 200, 200, 200, 1331, 755, 1331, + 200, 200, 200, 1156, 200, 1160, 200, 1157, 1158, 200, + + 1161, 200, 1331, 200, 200, 756, 758, 200, 757, 1159, + 200, 200, 200, 200, 760, 200, 200, 200, 200, 200, + 1162, 759, 1160, 200, 200, 1163, 200, 1161, 200, 200, + 200, 200, 1331, 758, 200, 757, 1331, 200, 200, 200, + 200, 760, 200, 200, 1331, 200, 200, 1162, 759, 1331, + 200, 200, 1163, 200, 1331, 200, 200, 1331, 200, 200, + 200, 200, 1331, 200, 200, 200, 200, 200, 761, 764, + 200, 200, 1164, 200, 763, 200, 200, 200, 762, 200, + 200, 200, 200, 200, 200, 765, 200, 200, 1331, 200, + 200, 200, 200, 1331, 200, 761, 764, 200, 200, 1164, + + 200, 763, 200, 200, 200, 762, 200, 200, 200, 1165, + 200, 200, 765, 200, 1166, 200, 200, 767, 1167, 200, + 200, 766, 1212, 1214, 200, 200, 200, 1215, 200, 200, + 768, 1216, 1331, 200, 1331, 1331, 1165, 1331, 200, 1331, + 200, 1166, 200, 1217, 767, 1167, 200, 200, 766, 1212, + 1214, 200, 200, 200, 1215, 200, 200, 768, 1216, 200, + 200, 200, 200, 1218, 770, 200, 200, 769, 1331, 200, + 1217, 200, 771, 1219, 200, 200, 200, 1331, 1220, 200, + 1221, 1331, 200, 1331, 1331, 200, 200, 1222, 200, 200, + 1218, 770, 200, 200, 769, 200, 200, 1331, 200, 771, + + 1219, 200, 200, 200, 773, 1220, 200, 1221, 200, 200, + 772, 200, 200, 774, 1222, 200, 1223, 1331, 200, 200, + 200, 1224, 200, 200, 200, 1331, 200, 1331, 200, 200, + 200, 773, 1331, 200, 775, 200, 778, 772, 200, 776, + 774, 777, 200, 1223, 200, 200, 200, 200, 1224, 200, + 200, 200, 200, 200, 780, 200, 200, 200, 1225, 200, + 200, 775, 1331, 778, 200, 1331, 776, 1331, 777, 1226, + 779, 200, 1331, 200, 200, 1227, 200, 1228, 200, 200, + 200, 780, 200, 1331, 200, 1225, 200, 200, 1331, 781, + 1229, 200, 200, 1331, 200, 1331, 1226, 779, 1230, 782, + + 1231, 200, 1227, 1232, 1228, 200, 1331, 200, 200, 200, + 200, 200, 1256, 1258, 200, 200, 781, 1229, 1259, 200, + 200, 200, 200, 1260, 200, 1230, 782, 1231, 1261, 200, + 1232, 1331, 1331, 783, 200, 200, 200, 200, 200, 1256, + 1258, 1331, 200, 200, 784, 1259, 1331, 200, 200, 200, + 1260, 200, 200, 1262, 785, 1261, 200, 1263, 786, 200, + 783, 200, 787, 200, 200, 200, 200, 1264, 200, 1331, + 200, 784, 1265, 200, 1331, 200, 1331, 1331, 200, 200, + 1262, 785, 1213, 1213, 1263, 786, 200, 1266, 1267, 787, + 200, 200, 200, 200, 1264, 200, 788, 200, 1283, 1265, + + 200, 200, 200, 200, 200, 200, 200, 886, 200, 1284, + 887, 200, 1285, 200, 1266, 1267, 200, 200, 1331, 200, + 1257, 1331, 200, 788, 200, 1283, 200, 1331, 200, 200, + 200, 200, 200, 200, 886, 200, 1284, 887, 200, 1285, + 200, 200, 888, 200, 200, 200, 892, 1257, 200, 200, + 200, 200, 1286, 200, 200, 1289, 200, 890, 200, 200, + 891, 889, 1282, 1282, 200, 200, 200, 1331, 200, 888, + 200, 200, 200, 892, 1331, 200, 1331, 200, 200, 1286, + 1331, 200, 1289, 200, 890, 200, 1295, 891, 889, 1296, + 1331, 200, 200, 200, 200, 894, 893, 200, 200, 200, + + 1331, 200, 200, 895, 1294, 200, 200, 200, 200, 1331, + 1331, 200, 1299, 1295, 1331, 200, 1296, 200, 200, 1331, + 1331, 200, 894, 893, 1331, 200, 200, 200, 200, 200, + 895, 1294, 200, 200, 200, 200, 200, 200, 200, 1299, + 200, 200, 200, 1302, 200, 200, 200, 200, 1331, 1304, + 1331, 896, 1306, 1308, 200, 200, 200, 200, 1331, 200, + 1235, 1213, 1331, 200, 200, 200, 1331, 200, 200, 1310, + 1302, 1331, 1331, 200, 200, 200, 1304, 200, 896, 1306, + 1308, 200, 200, 200, 200, 897, 200, 200, 1312, 200, + 200, 200, 200, 898, 200, 200, 1310, 200, 1270, 200, + + 200, 200, 200, 899, 200, 1314, 1331, 1331, 200, 200, + 200, 200, 897, 1331, 200, 1312, 200, 200, 200, 200, + 898, 200, 200, 200, 200, 1270, 200, 200, 200, 200, + 899, 1316, 1314, 200, 900, 200, 200, 200, 200, 200, + 901, 1318, 1331, 902, 200, 200, 200, 200, 200, 1331, + 200, 1331, 1331, 200, 200, 1320, 200, 1322, 1316, 903, + 200, 900, 200, 200, 200, 1331, 200, 901, 1318, 200, + 902, 200, 200, 200, 200, 200, 904, 1331, 200, 200, + 200, 200, 1320, 200, 1322, 1324, 903, 1331, 200, 200, + 200, 200, 200, 905, 200, 1331, 200, 1288, 1282, 200, + + 200, 1331, 1331, 904, 200, 200, 200, 1331, 1331, 1331, + 200, 1331, 1324, 1331, 1331, 200, 200, 1331, 1331, 200, + 905, 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, + 200, 200, 906, 1331, 200, 200, 200, 1331, 1331, 1298, + 1331, 200, 907, 1331, 1331, 1331, 200, 908, 1331, 1331, + 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 906, + 200, 200, 200, 200, 1331, 200, 1298, 1331, 200, 907, + 200, 1331, 1331, 200, 908, 910, 200, 1331, 200, 1331, + 1331, 1331, 909, 200, 200, 200, 200, 200, 200, 1331, + 1331, 200, 200, 1331, 200, 1331, 200, 200, 911, 1331, + + 1331, 1331, 910, 200, 200, 200, 1331, 1331, 1331, 909, + 200, 200, 1331, 200, 200, 200, 1331, 912, 200, 200, + 200, 200, 200, 200, 200, 911, 200, 200, 200, 200, + 919, 200, 200, 200, 200, 1331, 1331, 1331, 200, 1331, + 200, 200, 1331, 1331, 912, 1331, 200, 200, 1331, 200, + 200, 200, 1331, 200, 200, 200, 200, 919, 1331, 200, + 200, 200, 200, 1331, 200, 200, 913, 200, 200, 200, + 200, 1331, 914, 1331, 200, 200, 200, 200, 200, 1331, + 200, 1331, 1331, 200, 1331, 915, 1331, 1331, 200, 200, + 1331, 200, 1331, 913, 1331, 200, 200, 200, 917, 914, + + 1331, 200, 200, 200, 1331, 200, 200, 200, 200, 200, + 200, 200, 915, 200, 916, 200, 200, 1331, 200, 918, + 1331, 200, 1331, 1331, 200, 917, 1331, 1331, 200, 1331, + 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, + 200, 916, 200, 200, 200, 200, 918, 1331, 200, 1331, + 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, + 200, 200, 921, 1331, 200, 920, 1331, 1331, 1331, 200, + 200, 200, 200, 1331, 922, 1331, 200, 200, 200, 200, + 200, 200, 200, 200, 1331, 1331, 200, 200, 200, 921, + 200, 1331, 920, 1331, 200, 1331, 200, 200, 200, 200, + + 200, 922, 1331, 200, 923, 200, 1331, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 1331, + 200, 923, 200, 924, 200, 200, 925, 200, 1331, 200, + 200, 200, 200, 1331, 1331, 200, 200, 200, 1331, 200, + 1331, 200, 1331, 200, 1331, 200, 1331, 200, 1331, 200, + 924, 200, 1331, 925, 200, 1331, 200, 200, 200, 200, + 200, 200, 200, 200, 927, 200, 200, 926, 200, 200, + 1331, 1331, 200, 1331, 200, 200, 1331, 1331, 928, 1331, + 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, 200, + + 1331, 927, 200, 200, 926, 200, 200, 1331, 1331, 200, + 1331, 200, 200, 1331, 1331, 928, 200, 1331, 200, 1331, + 1331, 200, 200, 200, 200, 1331, 200, 200, 929, 200, + 930, 200, 1331, 931, 200, 1331, 200, 1331, 1331, 200, + 1331, 1331, 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, + 200, 200, 1331, 200, 200, 929, 200, 930, 200, 1331, + 931, 200, 1331, 200, 1331, 1331, 200, 932, 200, 934, + 200, 200, 200, 1331, 200, 200, 200, 1331, 933, 200, + 200, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 932, 200, 934, 200, 200, 200, + + 1331, 200, 200, 200, 1331, 933, 200, 200, 200, 1331, + 200, 200, 200, 200, 200, 200, 200, 200, 1331, 1331, + 200, 200, 200, 1331, 1331, 200, 200, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, + 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, + 1331, 1331, 200, 200, 200, 1331, 200, 200, 936, 200, + 200, 200, 935, 1331, 200, 200, 200, 1331, 1331, 200, + 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 200, 1331, 200, 200, 936, 200, 200, 200, 935, + 937, 200, 200, 200, 200, 200, 200, 200, 938, 200, + + 200, 1331, 200, 941, 200, 200, 200, 200, 200, 200, + 200, 939, 940, 1331, 200, 200, 200, 937, 200, 200, + 1331, 200, 200, 1331, 1331, 938, 200, 200, 1331, 200, + 941, 200, 200, 200, 200, 200, 200, 200, 939, 940, + 200, 200, 200, 200, 943, 200, 200, 200, 200, 200, + 200, 1331, 200, 942, 200, 1331, 1331, 1331, 200, 200, + 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, 200, 1331, + 1331, 943, 1331, 1331, 200, 200, 200, 200, 1331, 200, + 942, 200, 944, 1331, 200, 200, 200, 200, 200, 1331, + 1331, 1331, 945, 200, 200, 200, 200, 200, 1331, 1331, + + 1331, 1331, 200, 200, 200, 1331, 946, 1331, 1331, 944, + 1331, 200, 200, 200, 1331, 200, 1331, 1331, 1331, 945, + 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, + 200, 200, 200, 946, 200, 947, 1331, 200, 200, 200, + 200, 200, 200, 1331, 200, 948, 200, 200, 1331, 200, + 949, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, + 1331, 200, 947, 1331, 200, 200, 200, 1331, 200, 200, + 1331, 200, 948, 200, 200, 200, 950, 949, 1331, 200, + 200, 200, 1331, 200, 200, 200, 200, 1331, 1331, 1331, + 951, 1331, 1331, 200, 200, 200, 200, 1331, 200, 1331, + + 1331, 1331, 200, 950, 200, 1331, 200, 200, 1331, 1331, + 1331, 1331, 200, 200, 200, 1331, 952, 951, 1331, 1331, + 200, 200, 200, 200, 200, 200, 1331, 1331, 953, 200, + 200, 200, 200, 200, 1331, 1331, 1331, 1331, 200, 200, + 200, 200, 200, 952, 1331, 1331, 200, 200, 200, 200, + 954, 200, 200, 1331, 1331, 953, 200, 200, 1331, 200, + 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, 200, + 200, 1331, 200, 200, 200, 200, 200, 954, 200, 200, + 200, 955, 200, 1331, 1331, 956, 200, 1331, 200, 200, + 200, 957, 200, 1331, 200, 200, 1331, 200, 200, 200, + + 1331, 200, 200, 1331, 200, 200, 1331, 200, 955, 200, + 1331, 1331, 956, 200, 200, 200, 200, 200, 957, 200, + 200, 200, 1331, 960, 958, 200, 200, 1331, 200, 200, + 959, 200, 200, 1331, 200, 200, 200, 1331, 961, 200, + 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, + 960, 958, 1331, 200, 1331, 200, 1331, 959, 200, 200, + 200, 200, 200, 200, 200, 961, 200, 200, 200, 200, + 200, 200, 200, 963, 962, 200, 200, 200, 200, 1331, + 200, 200, 1331, 200, 1331, 200, 200, 200, 200, 1331, + 1331, 200, 200, 200, 1331, 200, 964, 200, 1331, 200, + + 963, 962, 200, 200, 200, 200, 1331, 200, 200, 1331, + 200, 1331, 200, 200, 965, 200, 1331, 200, 200, 200, + 200, 200, 200, 964, 200, 1331, 200, 966, 1331, 200, + 1331, 200, 200, 200, 200, 1331, 200, 200, 967, 200, + 200, 965, 200, 200, 200, 200, 200, 1331, 200, 200, + 200, 200, 200, 200, 966, 1331, 200, 968, 200, 200, + 200, 200, 200, 200, 200, 967, 1331, 200, 1331, 200, + 200, 969, 1331, 200, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 200, 968, 1331, 200, 200, 200, 200, + 200, 1331, 200, 1331, 1331, 200, 1331, 970, 969, 1331, + + 200, 200, 1331, 200, 200, 1331, 971, 200, 200, 200, + 1331, 200, 1331, 200, 200, 200, 200, 200, 1331, 200, + 1331, 1331, 200, 200, 970, 200, 973, 200, 1331, 1331, + 200, 200, 972, 971, 200, 200, 200, 200, 200, 200, + 1331, 200, 974, 200, 200, 1331, 200, 1331, 1331, 200, + 200, 1331, 200, 973, 1331, 1331, 1331, 200, 1331, 972, + 975, 200, 200, 200, 200, 200, 200, 200, 200, 974, + 976, 200, 200, 200, 200, 200, 200, 200, 977, 200, + 200, 1331, 1331, 1331, 1331, 200, 1331, 975, 1331, 1331, + 200, 1331, 200, 1331, 200, 200, 1331, 976, 1331, 200, + + 1331, 200, 200, 1331, 200, 977, 200, 200, 1331, 200, + 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, + 200, 200, 200, 979, 200, 1331, 978, 200, 200, 200, + 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 1331, + 200, 200, 200, 200, 200, 1331, 200, 200, 200, 1331, + 979, 200, 1331, 978, 200, 200, 200, 200, 200, 1331, + 200, 200, 200, 1331, 200, 200, 200, 200, 200, 980, + 200, 200, 200, 200, 200, 1331, 1331, 200, 200, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 200, + 1331, 200, 200, 200, 200, 200, 980, 1331, 1331, 200, + + 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 200, + 1331, 1055, 200, 200, 200, 200, 200, 1331, 200, 200, + 1054, 200, 200, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 200, 200, 200, 200, 200, 200, 1331, 1055, 200, + 200, 200, 200, 200, 1331, 200, 200, 1054, 200, 200, + 1056, 200, 1331, 1331, 200, 200, 1331, 1331, 200, 200, + 200, 200, 1331, 1059, 200, 1058, 1057, 1331, 200, 200, + 200, 200, 1331, 200, 200, 1331, 1331, 1056, 200, 200, + 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, + 1059, 200, 1058, 1057, 1331, 200, 200, 200, 200, 1331, + + 200, 200, 1060, 200, 200, 1061, 200, 1331, 200, 1331, + 200, 200, 1331, 1331, 200, 200, 200, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 1060, + 200, 200, 1061, 200, 1062, 200, 200, 200, 200, 1064, + 200, 200, 200, 200, 200, 200, 1063, 1065, 200, 200, + 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1062, 1066, 200, 200, 200, 1064, 200, 200, 1331, + 200, 200, 200, 1063, 1065, 200, 200, 1331, 200, 200, + 1331, 200, 1331, 200, 200, 200, 200, 1331, 200, 1066, + 1331, 200, 200, 1068, 1331, 200, 1070, 200, 1067, 1331, + + 200, 200, 1069, 1331, 200, 200, 200, 200, 200, 200, + 1331, 1331, 1331, 1331, 200, 200, 200, 200, 1331, 200, + 1068, 1331, 200, 1070, 200, 1067, 200, 200, 200, 1069, + 1331, 200, 200, 200, 200, 200, 200, 1331, 1331, 1331, + 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, + 1071, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, + 1073, 1331, 1072, 1331, 1331, 200, 200, 200, 1331, 200, + 200, 1074, 1331, 200, 200, 200, 1075, 1071, 200, 1331, + 200, 200, 1331, 200, 200, 200, 200, 1073, 1331, 1072, + 1331, 200, 200, 200, 200, 200, 200, 200, 1074, 200, + + 1331, 1331, 200, 1075, 200, 200, 200, 200, 200, 1331, + 1076, 1078, 1331, 200, 1331, 200, 200, 1331, 200, 1331, + 200, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 1331, + 200, 200, 200, 200, 1331, 1077, 1331, 1076, 1078, 1331, + 200, 1331, 200, 200, 200, 1331, 1331, 200, 1079, 200, + 1331, 200, 1331, 200, 200, 1331, 1331, 200, 1083, 200, + 200, 1331, 1077, 1331, 200, 200, 1080, 200, 200, 200, + 200, 200, 200, 1331, 1331, 1079, 200, 1331, 200, 1331, + 200, 200, 1331, 1331, 1331, 1083, 200, 200, 200, 1331, + 200, 200, 200, 1080, 200, 200, 200, 200, 200, 200, + + 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 200, 1331, + 200, 1331, 1331, 1331, 1331, 200, 1081, 200, 200, 1331, + 1331, 200, 1331, 1331, 200, 200, 1331, 200, 200, 200, + 1331, 1331, 1331, 1331, 200, 200, 1331, 200, 1331, 1082, + 200, 1085, 200, 1081, 200, 200, 200, 1084, 200, 1331, + 1331, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, + 1331, 200, 1331, 1331, 1331, 1331, 1082, 200, 1085, 200, + 200, 200, 200, 200, 1084, 200, 200, 200, 200, 200, + 200, 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, + 1331, 200, 1086, 1331, 1331, 1331, 200, 200, 1331, 200, + + 200, 1331, 200, 200, 200, 200, 1331, 200, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 1331, 200, 1086, + 1331, 200, 1331, 200, 1331, 1331, 200, 200, 200, 200, + 200, 1331, 1331, 1331, 200, 200, 1087, 1331, 1331, 200, + 200, 200, 200, 200, 200, 1331, 1088, 1331, 200, 1089, + 200, 1331, 1090, 200, 200, 200, 200, 200, 1091, 1331, + 200, 1331, 200, 1087, 1331, 200, 200, 200, 1331, 200, + 200, 200, 1331, 1088, 1331, 1331, 1089, 200, 1331, 1090, + 1331, 200, 200, 200, 200, 1091, 1331, 200, 200, 200, + 200, 1331, 200, 200, 200, 200, 1331, 200, 1092, 1331, + + 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, + 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 1331, 200, 200, 1331, 200, 1092, 1331, 200, 1331, 1331, + 200, 1331, 200, 200, 1093, 200, 1331, 200, 200, 200, + 200, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, + 200, 200, 1331, 1331, 200, 1094, 1331, 200, 1331, 200, + 200, 1093, 1331, 1331, 200, 200, 1331, 1095, 1331, 200, + 1331, 200, 1331, 1331, 1331, 200, 1331, 200, 200, 1331, + 200, 200, 1094, 1331, 200, 200, 200, 200, 1331, 1331, + 200, 200, 1096, 1097, 1095, 1331, 200, 200, 1331, 200, + + 1331, 1331, 1331, 1331, 200, 200, 1331, 200, 1331, 200, + 1331, 200, 200, 200, 1331, 1331, 1331, 200, 200, 1096, + 1097, 1331, 1331, 200, 200, 200, 200, 200, 200, 1331, + 200, 200, 200, 1098, 1331, 200, 200, 200, 1099, 200, + 200, 200, 200, 1331, 1331, 1331, 200, 1331, 200, 1331, + 1331, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, + 1098, 1331, 200, 1331, 200, 1099, 200, 200, 200, 200, + 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, 1101, + 200, 1331, 200, 1331, 200, 200, 1331, 1100, 1331, 1331, + 200, 1331, 200, 1331, 1331, 1331, 1331, 1331, 1331, 200, + + 200, 1331, 1331, 200, 1331, 1331, 1101, 200, 200, 200, + 1331, 200, 200, 1331, 1100, 1331, 200, 200, 200, 200, + 200, 1102, 1331, 1331, 1331, 1331, 200, 200, 200, 1103, + 200, 1331, 1331, 1331, 200, 200, 200, 1331, 1331, 200, + 200, 1331, 1104, 200, 1331, 200, 200, 200, 1102, 1331, + 200, 1331, 200, 200, 200, 200, 1103, 200, 1105, 1331, + 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 1104, + 200, 1331, 1331, 200, 200, 1331, 200, 200, 1331, 200, + 1106, 200, 1331, 1331, 200, 1105, 200, 1331, 200, 200, + 1331, 200, 1107, 200, 200, 1331, 200, 200, 200, 1331, + + 200, 200, 200, 200, 200, 1331, 200, 1106, 200, 1108, + 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1107, + 200, 200, 200, 200, 200, 200, 1110, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1108, 200, 1331, 1109, + 1331, 200, 200, 200, 200, 200, 1331, 200, 1331, 200, + 1112, 200, 1331, 1110, 200, 200, 1331, 200, 200, 200, + 1331, 200, 1111, 200, 200, 1331, 1109, 200, 200, 200, + 200, 200, 1331, 200, 200, 1113, 1331, 1112, 1331, 1331, + 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, 1111, + 200, 200, 1114, 200, 200, 200, 1331, 200, 200, 1331, + + 200, 200, 1113, 1331, 200, 1331, 200, 200, 1331, 1331, + 200, 200, 1115, 200, 1331, 200, 200, 1116, 1331, 1114, + 200, 1331, 1331, 1117, 1331, 200, 1331, 1331, 200, 1331, + 200, 200, 1331, 200, 200, 200, 200, 1331, 200, 1115, + 200, 200, 1331, 200, 1116, 1331, 200, 200, 1331, 1118, + 1117, 1331, 1331, 1331, 200, 200, 1331, 200, 200, 200, + 200, 200, 200, 200, 1331, 200, 1331, 200, 200, 1331, + 200, 1331, 1331, 200, 200, 1331, 1118, 1331, 1119, 1120, + 200, 200, 200, 1331, 200, 200, 200, 200, 200, 1331, + 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 1331, + + 200, 1331, 1331, 1331, 1121, 1119, 1120, 200, 200, 200, + 1331, 200, 200, 1331, 200, 200, 200, 200, 1331, 1331, + 1331, 200, 200, 200, 200, 200, 1331, 200, 1122, 1123, + 1331, 1121, 200, 200, 1331, 200, 1331, 1331, 1331, 200, + 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, 200, + 200, 200, 200, 1124, 1331, 1122, 1123, 1331, 1331, 200, + 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 1331, 200, 200, 1331, 200, + 1124, 1331, 200, 1331, 1331, 1331, 1331, 1331, 200, 1331, + 200, 200, 1169, 200, 1331, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 1331, 1170, 200, + 1172, 200, 200, 200, 200, 200, 1331, 200, 200, 1169, + 200, 200, 200, 200, 200, 1331, 1171, 200, 200, 200, + 200, 200, 200, 200, 1331, 1170, 200, 1172, 200, 200, + 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, + 200, 200, 1331, 1171, 200, 1331, 200, 200, 200, 1331, + 200, 1173, 200, 200, 1331, 1331, 200, 1174, 200, 1175, + 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 1331, + 200, 200, 1331, 200, 1331, 1331, 1331, 200, 1173, 200, + 1331, 1331, 1331, 200, 1174, 200, 1175, 200, 200, 200, + + 1331, 1331, 200, 200, 200, 1331, 200, 200, 200, 1331, + 200, 200, 200, 200, 1177, 200, 200, 200, 1176, 1331, + 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, + 1331, 200, 1331, 200, 1331, 1331, 1331, 200, 200, 200, + 200, 1177, 200, 200, 200, 1176, 1178, 200, 1331, 200, + 1331, 1179, 200, 200, 1331, 200, 1331, 200, 200, 1331, + 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 1331, + 1331, 200, 1180, 1178, 1331, 1331, 200, 1331, 1179, 1331, + 200, 1331, 200, 1331, 200, 200, 1331, 1331, 1331, 200, + 200, 200, 1331, 200, 200, 200, 1181, 200, 200, 1180, + + 1331, 1331, 200, 200, 1331, 1331, 200, 200, 200, 200, + 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, + 1331, 200, 200, 1181, 200, 1331, 1331, 1331, 1182, 200, + 1331, 1331, 1331, 200, 200, 200, 200, 200, 200, 200, + 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, + 200, 200, 200, 200, 1331, 1182, 1331, 200, 200, 1331, + 1331, 1331, 200, 200, 200, 1331, 200, 1331, 1331, 1331, + 1331, 200, 1331, 1331, 1331, 1331, 200, 200, 200, 200, + 200, 200, 1183, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 1331, 1184, 200, 1331, 1331, + + 1331, 200, 200, 1331, 1331, 1331, 200, 200, 200, 1183, + 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, + 200, 200, 1331, 1184, 200, 1331, 1331, 1331, 200, 200, + 200, 200, 200, 200, 200, 1186, 200, 200, 1185, 1331, + 200, 200, 200, 1331, 1331, 1331, 200, 1331, 1331, 1331, + 200, 200, 1331, 1331, 200, 1331, 200, 200, 200, 200, + 200, 1331, 1186, 200, 200, 1185, 1331, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1331, 200, 1331, 1331, + 200, 1331, 200, 1331, 200, 200, 1331, 200, 200, 200, + + 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, + 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 1331, 1188, 200, 200, 200, 200, 1187, + 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 1189, 1331, + 1331, 200, 200, 200, 200, 1331, 200, 200, 1331, 1331, + 200, 1188, 200, 200, 200, 200, 1187, 1331, 1331, 1331, + 200, 200, 200, 200, 200, 1189, 1331, 1331, 200, 200, + 200, 200, 1331, 200, 200, 1331, 200, 200, 200, 200, + 1331, 200, 1331, 1190, 200, 1331, 1331, 200, 200, 200, + 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, + + 1191, 200, 200, 200, 200, 200, 200, 200, 200, 1331, + 1190, 200, 200, 200, 1331, 200, 1331, 1331, 200, 200, + 1331, 200, 1331, 1331, 1331, 1192, 200, 1191, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 1331, 1331, 200, 1331, + 1331, 1331, 1192, 1331, 200, 1331, 200, 200, 1331, 200, + 1331, 200, 1193, 200, 200, 200, 200, 200, 1331, 200, + 200, 1194, 200, 1331, 1331, 200, 1195, 200, 1331, 1331, + 1196, 200, 200, 200, 200, 1331, 1331, 200, 200, 1193, + 200, 1331, 200, 200, 200, 1331, 1331, 1331, 1194, 200, + + 200, 1331, 200, 1195, 200, 1331, 200, 1196, 1331, 200, + 1331, 200, 200, 1331, 200, 1331, 200, 200, 1331, 200, + 200, 1331, 1197, 1331, 1331, 1331, 200, 200, 1198, 200, + 200, 1331, 1331, 200, 200, 1331, 200, 1331, 1331, 200, + 200, 1331, 1199, 200, 200, 1331, 1331, 200, 200, 1197, + 200, 1331, 1331, 200, 200, 1198, 1331, 200, 200, 1331, + 200, 200, 1331, 200, 200, 1200, 200, 200, 200, 1199, + 200, 200, 200, 1201, 200, 200, 1331, 200, 200, 200, + 1331, 200, 1331, 1331, 200, 200, 1331, 200, 1331, 1331, + 1331, 200, 1200, 200, 1331, 200, 200, 200, 1202, 200, + + 1201, 200, 200, 200, 200, 200, 200, 1331, 200, 200, + 1203, 200, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, + 1331, 1331, 200, 200, 1331, 1202, 200, 1331, 200, 200, + 200, 200, 1331, 200, 1204, 200, 200, 1203, 200, 200, + 1331, 200, 1331, 1331, 200, 200, 1234, 200, 1331, 200, + 200, 1331, 200, 200, 1331, 200, 200, 200, 1205, 1206, + 200, 1204, 1331, 1331, 1331, 200, 200, 1331, 200, 200, + 200, 200, 200, 1234, 200, 200, 200, 200, 1331, 200, + 200, 200, 1331, 200, 200, 1205, 1206, 1331, 1331, 1331, + 1331, 1331, 200, 200, 200, 200, 200, 200, 200, 200, + + 1207, 1331, 200, 200, 200, 1208, 1331, 200, 200, 1331, + 200, 1331, 200, 200, 1331, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1331, 200, 200, 1207, 200, 1331, + 1331, 200, 1208, 1331, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, + 200, 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, + 200, 200, 200, 200, 200, 1331, 1209, 200, 200, 200, + 1331, 1331, 200, 200, 1331, 1331, 1210, 1331, 200, 1331, + 1331, 1331, 1331, 200, 200, 1331, 200, 200, 200, 200, + 200, 200, 200, 1209, 200, 1331, 200, 200, 1331, 200, + + 1331, 1331, 200, 1210, 200, 200, 200, 1331, 1331, 1331, + 200, 200, 1331, 1331, 1331, 200, 200, 200, 200, 200, + 200, 1331, 1331, 1331, 200, 200, 1331, 1331, 1331, 200, + 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, + 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, 1331, + 200, 1331, 200, 1331, 200, 1331, 200, 200, 1331, 200, + 200, 200, 1331, 200, 1235, 1213, 200, 200, 1331, 1331, + 200, 200, 1331, 200, 1236, 1331, 1331, 200, 200, 1331, + 1331, 200, 1331, 200, 200, 1331, 1331, 200, 1237, 200, + 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, + + 1331, 1236, 200, 1331, 200, 200, 1331, 1331, 200, 200, + 1331, 200, 200, 1331, 200, 1237, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 1331, 200, 1331, 200, 200, + 1238, 200, 1331, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1331, 200, 200, 1331, 1239, 200, + 200, 200, 200, 200, 1331, 200, 1331, 1238, 1331, 1331, + 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, + 200, 1331, 200, 200, 1331, 1239, 1331, 200, 200, 200, + 200, 200, 1331, 1331, 1331, 200, 1331, 1331, 200, 200, + 200, 200, 1240, 1331, 1331, 200, 1331, 200, 1331, 200, + + 1331, 200, 200, 1331, 200, 200, 200, 1331, 200, 1331, + 1331, 200, 200, 1331, 1241, 200, 200, 200, 200, 1240, + 1242, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, + 200, 200, 200, 200, 1331, 200, 1331, 1331, 200, 1331, + 1331, 1241, 1331, 200, 200, 1331, 200, 1242, 1331, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, + 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, + 1331, 200, 1331, 200, 1331, 1331, 1331, 1331, 200, 200, + 200, 200, 200, 200, 1244, 1243, 200, 200, 200, 200, + 1331, 200, 200, 200, 200, 200, 1331, 1246, 200, 1245, + + 200, 1331, 200, 1331, 200, 200, 200, 200, 200, 200, + 200, 1244, 1243, 200, 1331, 200, 200, 1331, 200, 1331, + 200, 200, 200, 1331, 1246, 200, 1245, 200, 200, 200, + 200, 200, 200, 1331, 200, 200, 200, 200, 1331, 200, + 200, 200, 1331, 1331, 1331, 1331, 200, 1247, 1331, 1331, + 1331, 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, + 1331, 1331, 200, 1331, 200, 1331, 200, 200, 200, 1248, + 200, 1331, 200, 200, 1247, 1331, 1331, 200, 200, 200, + 1331, 200, 200, 200, 1331, 200, 200, 1331, 1331, 1331, + 200, 200, 1331, 1331, 1331, 200, 1248, 200, 1331, 200, + + 1331, 1331, 1331, 1331, 200, 1331, 200, 1331, 200, 200, + 200, 1331, 200, 200, 1249, 1331, 1331, 200, 200, 200, + 1331, 200, 200, 1331, 1331, 1331, 200, 200, 1251, 200, + 200, 200, 200, 200, 200, 200, 1250, 200, 1331, 200, + 200, 1249, 200, 1331, 1331, 200, 200, 1331, 200, 1331, + 1331, 1331, 1331, 200, 200, 1251, 200, 200, 200, 200, + 200, 200, 200, 1250, 200, 1331, 200, 200, 1252, 200, + 1253, 1254, 200, 200, 200, 200, 1331, 200, 1331, 1331, + 200, 200, 1331, 200, 1331, 1331, 1331, 200, 1331, 200, + 200, 200, 1331, 200, 200, 1252, 1331, 1253, 1254, 200, + + 200, 200, 200, 1331, 200, 200, 1331, 200, 200, 200, + 200, 1331, 1331, 1331, 1331, 200, 1331, 200, 200, 200, + 200, 1331, 1331, 200, 200, 200, 1331, 1331, 200, 200, + 1331, 1331, 200, 1331, 200, 1331, 200, 1269, 1331, 200, + 1331, 1331, 200, 200, 200, 1331, 200, 200, 1331, 1331, + 200, 200, 200, 200, 1331, 200, 200, 1331, 1271, 1331, + 1331, 200, 1331, 200, 1269, 1331, 200, 1331, 200, 200, + 200, 200, 200, 200, 200, 1331, 1331, 1331, 200, 200, + 200, 1331, 200, 200, 1272, 1271, 200, 200, 200, 200, + 200, 1331, 200, 200, 1331, 200, 200, 200, 1273, 200, + + 200, 200, 200, 200, 1331, 200, 200, 200, 1331, 200, + 200, 1272, 1331, 200, 200, 200, 200, 200, 1331, 200, + 200, 1331, 200, 200, 200, 1273, 200, 200, 200, 200, + 200, 1331, 200, 200, 200, 1331, 1274, 1331, 1331, 200, + 1276, 1275, 200, 200, 200, 200, 200, 200, 1331, 200, + 200, 200, 200, 200, 200, 1331, 1331, 200, 1331, 200, + 200, 1331, 1331, 1274, 1331, 1331, 200, 1276, 1275, 200, + 200, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, + 1331, 200, 200, 200, 200, 1331, 1331, 200, 200, 200, + 1331, 200, 1331, 200, 1331, 1331, 200, 1331, 1331, 1331, + + 1331, 200, 200, 1331, 200, 1331, 1331, 200, 200, 200, + 200, 200, 1331, 1331, 200, 200, 200, 200, 200, 1331, + 200, 200, 1331, 200, 1331, 200, 200, 1277, 200, 200, + 1279, 200, 1278, 200, 200, 1331, 200, 1331, 200, 200, + 1331, 200, 1331, 1331, 200, 1331, 200, 1331, 200, 200, + 1280, 200, 200, 200, 1277, 200, 200, 1279, 200, 1278, + 200, 200, 1331, 200, 1288, 1282, 200, 1331, 200, 1331, + 1290, 200, 1331, 200, 200, 200, 200, 1280, 200, 200, + 200, 1331, 200, 1331, 200, 200, 200, 1331, 200, 200, + 200, 1291, 1331, 200, 1331, 200, 200, 1290, 200, 200, + + 1331, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 1291, 1331, + 200, 1331, 200, 200, 200, 1331, 200, 200, 1331, 200, + 200, 200, 200, 1331, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1331, 1331, 200, 200, 1331, 200, 1331, + 200, 200, 1331, 200, 200, 1331, 200, 1331, 200, 200, + 1331, 200, 1331, 200, 200, 200, 200, 200, 200, 1292, + 1331, 1331, 200, 200, 200, 200, 1331, 200, 200, 200, + 200, 1331, 200, 200, 200, 200, 200, 200, 200, 1331, + 200, 200, 200, 200, 1300, 200, 1292, 1331, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, 1331, 200, + 200, 200, 200, 1331, 200, 200, 1331, 1331, 1331, 200, + 200, 1300, 1331, 1331, 1331, 200, 200, 200, 1331, 200, + 200, 200, 1331, 1331, 200, 1331, 1331, 1331, 1331, 200, + 46, 46, 46, 46, 46, 88, 1331, 1331, 88, 88, + 185, 185, 185, 1331, 185, 187, 1331, 187, 187, 187, + 190, 1331, 190, 190, 190, 200, 1331, 200, 200, 200, + 7, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331 + } ; + +static const flex_int16_t yy_chk[8848] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 9, 9, 10, 10, 15, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, + 18, 21, 22, 21, 27, 28, 22, 23, 30, 21, + 27, 21, 22, 28, 23, 21, 21, 31, 41, 28, + + 41, 23, 22, 41, 23, 1334, 44, 23, 21, 22, + 21, 27, 28, 22, 23, 30, 21, 27, 21, 22, + 28, 23, 21, 21, 31, 41, 28, 41, 23, 22, + 41, 23, 24, 44, 23, 25, 24, 25, 49, 49, + 24, 32, 25, 99, 33, 32, 24, 25, 33, 24, + 55, 32, 50, 50, 33, 43, 43, 58, 58, 24, + 1328, 55, 25, 24, 25, 1327, 34, 24, 32, 25, + 99, 33, 32, 24, 25, 33, 24, 26, 32, 36, + 34, 33, 43, 43, 100, 26, 34, 34, 26, 103, + 36, 26, 29, 34, 26, 1326, 36, 26, 29, 29, + + 29, 42, 86, 86, 26, 29, 36, 34, 1325, 42, + 1323, 100, 26, 34, 34, 26, 103, 36, 26, 29, + 1321, 26, 35, 36, 26, 29, 29, 29, 42, 104, + 35, 38, 29, 101, 35, 38, 42, 35, 35, 38, + 81, 101, 81, 106, 81, 38, 1319, 81, 1317, 35, + 102, 1315, 81, 102, 1313, 107, 104, 35, 38, 1311, + 101, 35, 38, 1309, 35, 35, 38, 81, 101, 81, + 106, 81, 38, 39, 81, 39, 110, 102, 39, 81, + 102, 39, 107, 39, 113, 39, 39, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 188, 188, 1307, + + 39, 1305, 39, 110, 1303, 39, 105, 105, 39, 109, + 39, 113, 39, 39, 40, 112, 109, 67, 40, 67, + 105, 40, 40, 67, 67, 112, 116, 116, 40, 67, + 117, 40, 1301, 105, 105, 1297, 109, 1133, 1133, 1256, + 1256, 40, 112, 109, 67, 40, 67, 105, 40, 40, + 67, 67, 112, 116, 116, 40, 67, 117, 40, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 61, 61, 118, 61, 61, 61, 61, 61, 61, 119, + 68, 114, 1293, 1287, 68, 1281, 114, 120, 68, 61, + 61, 61, 70, 121, 68, 61, 70, 61, 123, 118, + + 124, 125, 70, 61, 68, 61, 119, 68, 114, 61, + 61, 68, 70, 114, 120, 68, 127, 128, 1268, 70, + 121, 68, 61, 70, 61, 123, 1255, 124, 125, 70, + 61, 68, 61, 1233, 129, 1211, 61, 61, 1168, 70, + 1125, 1053, 981, 127, 128, 61, 62, 62, 885, 62, + 62, 62, 62, 62, 62, 789, 664, 130, 71, 72, + 73, 129, 71, 72, 73, 62, 62, 62, 71, 72, + 73, 131, 62, 77, 131, 126, 62, 77, 71, 72, + 73, 126, 62, 77, 130, 71, 72, 73, 132, 71, + 72, 73, 62, 77, 539, 71, 72, 73, 131, 62, + + 77, 131, 126, 62, 77, 71, 72, 73, 126, 62, + 77, 414, 288, 83, 133, 132, 83, 83, 135, 62, + 77, 62, 63, 83, 78, 136, 63, 138, 78, 63, + 63, 139, 78, 83, 140, 141, 63, 144, 78, 63, + 83, 133, 63, 83, 83, 135, 63, 192, 78, 63, + 83, 78, 136, 63, 138, 78, 63, 63, 139, 78, + 83, 140, 141, 63, 144, 78, 63, 190, 90, 63, + 88, 85, 82, 63, 64, 78, 82, 84, 64, 137, + 82, 84, 64, 142, 145, 142, 82, 84, 64, 137, + 146, 64, 147, 149, 137, 137, 82, 84, 64, 82, + + 60, 64, 59, 82, 84, 64, 137, 82, 84, 64, + 142, 145, 142, 82, 84, 64, 137, 146, 64, 147, + 149, 137, 137, 82, 84, 64, 65, 111, 111, 111, + 65, 111, 115, 65, 115, 65, 65, 115, 150, 143, + 65, 143, 151, 115, 153, 65, 65, 52, 148, 154, + 115, 148, 143, 65, 111, 111, 111, 65, 111, 115, + 65, 115, 65, 65, 115, 150, 143, 65, 143, 151, + 115, 153, 65, 65, 66, 148, 154, 115, 148, 143, + 155, 66, 66, 156, 157, 66, 158, 122, 66, 122, + 158, 66, 159, 122, 66, 51, 161, 47, 45, 163, + + 122, 66, 20, 19, 122, 11, 166, 155, 66, 66, + 156, 157, 66, 158, 122, 66, 122, 158, 66, 159, + 122, 66, 69, 161, 160, 162, 163, 122, 69, 69, + 69, 122, 165, 166, 167, 69, 162, 160, 168, 169, + 69, 7, 160, 4, 170, 3, 165, 172, 0, 69, + 173, 160, 162, 174, 177, 69, 69, 69, 0, 165, + 0, 167, 69, 162, 160, 168, 169, 69, 74, 160, + 164, 170, 171, 165, 172, 74, 175, 173, 178, 164, + 174, 177, 74, 171, 176, 74, 179, 164, 74, 74, + 0, 176, 179, 0, 176, 74, 175, 164, 181, 171, + + 182, 183, 74, 175, 0, 178, 164, 0, 291, 74, + 171, 176, 74, 179, 164, 74, 74, 75, 176, 179, + 180, 176, 75, 175, 75, 181, 293, 182, 183, 294, + 75, 75, 200, 180, 75, 291, 200, 75, 75, 0, + 0, 0, 200, 296, 75, 0, 0, 180, 298, 75, + 0, 75, 200, 293, 0, 299, 294, 75, 75, 200, + 180, 75, 300, 200, 75, 75, 76, 201, 201, 200, + 296, 301, 201, 76, 0, 298, 302, 76, 201, 200, + 76, 202, 299, 76, 303, 202, 76, 0, 201, 300, + 305, 202, 0, 76, 201, 201, 202, 0, 301, 201, + + 76, 202, 306, 302, 76, 201, 307, 76, 202, 0, + 76, 303, 202, 76, 79, 201, 79, 305, 202, 79, + 79, 0, 79, 202, 79, 308, 79, 79, 202, 306, + 309, 310, 311, 307, 312, 313, 79, 0, 314, 0, + 0, 79, 0, 79, 0, 0, 79, 79, 203, 79, + 203, 79, 308, 79, 79, 203, 203, 309, 310, 311, + 203, 312, 313, 79, 80, 314, 209, 205, 80, 205, + 209, 80, 80, 205, 205, 203, 209, 203, 80, 205, + 315, 80, 203, 203, 316, 317, 209, 203, 80, 0, + 0, 80, 0, 209, 205, 80, 205, 209, 80, 80, + + 205, 205, 0, 209, 0, 80, 205, 315, 80, 0, + 0, 316, 317, 209, 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, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 204, 206, + 208, 204, 304, 319, 304, 208, 320, 208, 206, 204, + 206, 204, 208, 321, 0, 206, 204, 208, 0, 304, + + 206, 204, 0, 0, 0, 204, 206, 208, 204, 304, + 319, 304, 208, 320, 208, 206, 204, 206, 204, 208, + 321, 210, 206, 204, 208, 210, 304, 206, 204, 207, + 207, 210, 211, 322, 211, 207, 318, 207, 0, 211, + 0, 210, 207, 207, 211, 0, 323, 207, 210, 324, + 0, 318, 210, 326, 212, 327, 207, 207, 210, 211, + 322, 211, 207, 318, 207, 212, 211, 212, 210, 207, + 207, 211, 212, 323, 207, 0, 324, 212, 318, 0, + 326, 212, 327, 214, 0, 0, 328, 214, 329, 330, + 0, 0, 212, 214, 212, 331, 332, 333, 215, 212, + + 0, 334, 215, 214, 212, 213, 213, 213, 215, 213, + 214, 215, 213, 328, 214, 329, 330, 213, 215, 335, + 214, 336, 331, 332, 333, 215, 337, 216, 334, 215, + 214, 216, 213, 213, 213, 215, 213, 216, 215, 213, + 338, 339, 216, 340, 213, 215, 335, 216, 336, 341, + 0, 342, 343, 337, 216, 344, 0, 345, 216, 0, + 346, 0, 0, 0, 216, 347, 0, 338, 339, 216, + 340, 0, 348, 349, 216, 217, 341, 217, 342, 343, + 217, 351, 344, 218, 345, 218, 217, 346, 217, 218, + 218, 0, 347, 217, 219, 218, 219, 0, 217, 348, + + 349, 219, 217, 219, 217, 352, 219, 217, 351, 354, + 218, 0, 218, 217, 220, 217, 218, 218, 220, 0, + 217, 219, 218, 219, 220, 217, 0, 355, 219, 350, + 219, 0, 352, 219, 220, 221, 354, 221, 222, 350, + 0, 220, 221, 0, 356, 220, 222, 221, 222, 0, + 0, 220, 357, 222, 355, 0, 350, 359, 222, 0, + 360, 220, 221, 361, 221, 222, 350, 223, 362, 221, + 225, 356, 225, 222, 221, 222, 223, 225, 223, 357, + 222, 363, 225, 223, 359, 222, 358, 360, 223, 0, + 361, 0, 0, 365, 223, 362, 358, 225, 366, 225, + + 0, 0, 0, 223, 225, 223, 0, 367, 363, 225, + 223, 0, 226, 358, 226, 223, 224, 227, 224, 226, + 365, 227, 224, 358, 226, 366, 368, 227, 224, 224, + 369, 370, 371, 224, 367, 0, 0, 227, 224, 226, + 0, 226, 0, 224, 227, 224, 226, 373, 227, 224, + 375, 226, 0, 368, 227, 224, 224, 369, 370, 371, + 224, 228, 229, 228, 227, 224, 229, 228, 228, 230, + 0, 230, 229, 228, 373, 376, 230, 375, 0, 374, + 0, 230, 229, 0, 0, 0, 377, 231, 228, 229, + 228, 231, 374, 229, 228, 228, 230, 231, 230, 229, + + 228, 232, 376, 230, 378, 232, 374, 231, 230, 229, + 233, 232, 233, 377, 231, 379, 380, 233, 231, 374, + 233, 232, 233, 234, 231, 234, 0, 0, 232, 0, + 234, 378, 232, 0, 231, 234, 0, 233, 232, 233, + 381, 382, 379, 380, 233, 0, 383, 233, 232, 233, + 234, 235, 234, 235, 236, 237, 236, 234, 235, 237, + 235, 236, 234, 235, 384, 237, 236, 381, 382, 385, + 372, 0, 240, 383, 240, 237, 387, 0, 235, 240, + 235, 236, 237, 236, 240, 235, 237, 235, 236, 372, + 235, 384, 237, 236, 238, 388, 385, 372, 238, 240, + + 389, 240, 237, 387, 238, 238, 240, 0, 241, 242, + 0, 240, 241, 242, 238, 0, 372, 390, 241, 242, + 0, 238, 388, 0, 391, 238, 0, 389, 241, 242, + 0, 238, 238, 243, 243, 241, 242, 243, 392, 241, + 242, 238, 239, 243, 390, 241, 242, 247, 393, 247, + 239, 391, 239, 243, 247, 241, 242, 239, 239, 247, + 243, 243, 239, 0, 243, 392, 394, 0, 0, 239, + 243, 0, 0, 0, 247, 393, 247, 239, 395, 239, + 243, 247, 0, 0, 239, 239, 247, 396, 397, 239, + 244, 399, 0, 394, 244, 246, 244, 246, 244, 257, + + 244, 246, 246, 257, 401, 395, 0, 246, 403, 257, + 244, 0, 404, 0, 396, 397, 0, 244, 399, 257, + 0, 244, 246, 244, 246, 244, 257, 244, 246, 246, + 257, 401, 405, 400, 246, 403, 257, 244, 245, 404, + 245, 248, 400, 248, 406, 402, 257, 402, 248, 245, + 249, 245, 249, 248, 407, 408, 245, 249, 249, 405, + 400, 245, 249, 0, 409, 245, 0, 245, 248, 400, + 248, 406, 402, 0, 402, 248, 245, 249, 245, 249, + 248, 407, 408, 245, 249, 249, 0, 0, 245, 249, + 250, 409, 250, 251, 0, 251, 411, 250, 250, 0, + + 251, 250, 250, 252, 0, 251, 254, 410, 254, 412, + 0, 410, 0, 254, 252, 0, 252, 250, 254, 250, + 251, 252, 251, 411, 250, 250, 252, 251, 250, 250, + 252, 253, 251, 254, 410, 254, 412, 253, 410, 253, + 254, 252, 255, 252, 253, 254, 0, 540, 252, 253, + 255, 0, 255, 252, 0, 0, 541, 255, 253, 542, + 543, 0, 255, 544, 253, 545, 253, 546, 547, 255, + 548, 253, 550, 256, 540, 256, 253, 255, 258, 255, + 256, 256, 258, 541, 255, 256, 542, 543, 258, 255, + 544, 258, 545, 0, 546, 547, 0, 548, 258, 550, + + 256, 553, 256, 0, 0, 258, 259, 256, 256, 258, + 259, 554, 256, 555, 259, 258, 556, 558, 258, 260, + 259, 559, 0, 260, 261, 258, 261, 560, 553, 260, + 259, 261, 561, 259, 563, 0, 261, 259, 554, 260, + 555, 259, 564, 556, 558, 0, 260, 259, 559, 262, + 260, 261, 0, 261, 560, 565, 260, 259, 261, 561, + 262, 563, 262, 261, 0, 566, 260, 262, 263, 564, + 567, 568, 262, 263, 569, 263, 262, 570, 0, 264, + 263, 264, 565, 571, 0, 263, 264, 262, 0, 262, + 264, 264, 566, 0, 262, 263, 574, 567, 568, 262, + + 263, 569, 263, 575, 570, 265, 264, 263, 264, 265, + 571, 265, 263, 264, 576, 268, 265, 264, 264, 268, + 267, 265, 0, 574, 267, 268, 577, 578, 267, 579, + 575, 0, 265, 0, 267, 268, 265, 0, 265, 0, + 0, 576, 268, 265, 267, 580, 268, 267, 265, 266, + 0, 267, 268, 577, 578, 267, 579, 0, 266, 269, + 266, 267, 268, 269, 270, 266, 266, 269, 270, 0, + 266, 267, 580, 269, 270, 0, 266, 270, 582, 0, + 583, 584, 0, 269, 270, 266, 269, 266, 587, 588, + 269, 270, 266, 266, 269, 270, 272, 266, 271, 272, + + 269, 270, 271, 272, 270, 582, 271, 583, 584, 272, + 269, 270, 271, 0, 0, 587, 588, 274, 590, 272, + 0, 274, 271, 272, 0, 271, 272, 274, 0, 271, + 272, 592, 0, 271, 0, 593, 272, 274, 594, 271, + 273, 273, 273, 595, 274, 590, 272, 273, 274, 271, + 0, 275, 273, 596, 274, 275, 0, 0, 592, 275, + 597, 275, 593, 600, 274, 594, 0, 273, 273, 273, + 595, 275, 0, 276, 273, 0, 604, 276, 275, 273, + 596, 606, 275, 276, 276, 277, 275, 597, 275, 607, + 600, 609, 277, 276, 0, 611, 279, 279, 275, 277, + + 276, 279, 277, 604, 276, 277, 0, 279, 606, 0, + 276, 276, 277, 0, 0, 612, 607, 279, 609, 277, + 276, 280, 611, 279, 279, 280, 277, 0, 279, 277, + 613, 280, 277, 278, 279, 615, 278, 0, 0, 598, + 278, 280, 612, 278, 279, 616, 278, 281, 280, 281, + 598, 282, 280, 281, 281, 282, 278, 613, 280, 281, + 278, 282, 615, 278, 282, 283, 598, 278, 280, 283, + 278, 282, 616, 278, 281, 283, 281, 598, 282, 0, + 281, 281, 282, 278, 0, 283, 281, 0, 282, 284, + 617, 282, 283, 284, 0, 618, 283, 285, 282, 284, + + 620, 285, 283, 621, 284, 285, 420, 623, 420, 284, + 624, 285, 283, 420, 610, 610, 284, 617, 420, 625, + 284, 285, 618, 0, 285, 0, 284, 620, 285, 0, + 621, 284, 285, 420, 623, 420, 284, 624, 285, 0, + 420, 610, 610, 0, 0, 420, 625, 0, 285, 289, + 289, 289, 289, 289, 289, 289, 289, 289, 289, 415, + 415, 415, 415, 415, 415, 415, 415, 415, 415, 416, + 417, 418, 419, 416, 417, 418, 419, 626, 628, 416, + 417, 418, 419, 0, 629, 630, 0, 631, 0, 416, + 417, 418, 419, 0, 0, 0, 416, 417, 418, 419, + + 416, 417, 418, 419, 626, 628, 416, 417, 418, 419, + 422, 629, 630, 421, 631, 421, 416, 417, 418, 419, + 421, 422, 423, 422, 423, 421, 424, 0, 422, 423, + 424, 0, 633, 422, 423, 0, 424, 422, 634, 0, + 421, 635, 421, 636, 0, 0, 424, 421, 422, 423, + 422, 423, 421, 424, 425, 422, 423, 424, 425, 633, + 422, 423, 426, 424, 425, 634, 426, 427, 635, 639, + 636, 427, 426, 424, 425, 0, 428, 427, 428, 640, + 426, 425, 426, 428, 641, 425, 642, 427, 428, 426, + 429, 425, 429, 426, 427, 643, 639, 429, 427, 426, + + 646, 425, 429, 428, 427, 428, 640, 426, 431, 426, + 428, 641, 431, 642, 427, 428, 0, 429, 431, 429, + 0, 431, 643, 0, 429, 0, 0, 646, 431, 429, + 430, 0, 430, 432, 647, 431, 430, 432, 649, 431, + 650, 0, 430, 432, 651, 431, 433, 430, 431, 432, + 433, 0, 430, 432, 433, 431, 433, 430, 435, 430, + 432, 647, 435, 430, 432, 649, 433, 650, 435, 430, + 432, 651, 0, 433, 430, 0, 432, 433, 435, 430, + 432, 433, 434, 433, 0, 435, 434, 0, 652, 435, + 436, 653, 434, 433, 436, 435, 654, 434, 436, 437, + + 655, 437, 434, 0, 436, 435, 437, 656, 0, 434, + 0, 437, 0, 434, 436, 652, 657, 436, 653, 434, + 659, 436, 661, 654, 434, 436, 437, 655, 437, 434, + 438, 436, 438, 437, 656, 439, 438, 438, 437, 439, + 663, 436, 438, 657, 440, 439, 440, 659, 792, 661, + 794, 440, 796, 0, 797, 439, 440, 438, 441, 438, + 441, 798, 439, 438, 438, 441, 439, 663, 0, 438, + 441, 440, 439, 440, 0, 792, 442, 794, 440, 796, + 442, 797, 439, 440, 0, 441, 442, 441, 798, 799, + 443, 444, 441, 800, 443, 444, 442, 441, 443, 0, + + 801, 444, 802, 442, 443, 803, 444, 442, 0, 0, + 804, 444, 0, 442, 443, 806, 799, 443, 444, 0, + 800, 443, 444, 442, 445, 443, 445, 801, 444, 802, + 445, 443, 803, 444, 807, 446, 445, 804, 444, 446, + 0, 443, 806, 0, 447, 446, 445, 0, 447, 808, + 809, 445, 810, 445, 447, 446, 0, 445, 0, 447, + 0, 807, 446, 445, 447, 0, 446, 448, 0, 0, + 448, 447, 446, 445, 448, 447, 808, 809, 0, 810, + 448, 447, 446, 450, 811, 449, 447, 450, 451, 449, + 448, 447, 451, 450, 448, 449, 449, 448, 451, 813, + + 814, 448, 0, 450, 815, 449, 0, 448, 451, 0, + 450, 811, 449, 816, 450, 451, 449, 448, 0, 451, + 450, 0, 449, 449, 453, 451, 813, 814, 453, 452, + 450, 815, 449, 452, 453, 451, 454, 452, 454, 0, + 816, 0, 454, 452, 453, 455, 0, 455, 454, 817, + 818, 453, 455, 452, 819, 453, 452, 455, 454, 820, + 452, 453, 0, 454, 452, 454, 456, 0, 456, 454, + 452, 453, 455, 456, 455, 454, 817, 818, 456, 455, + 452, 819, 821, 822, 455, 454, 820, 458, 0, 458, + 457, 0, 457, 456, 458, 456, 457, 457, 0, 458, + + 456, 0, 457, 0, 825, 456, 826, 0, 459, 821, + 822, 0, 459, 461, 458, 461, 458, 457, 459, 457, + 461, 458, 827, 457, 457, 461, 458, 0, 459, 457, + 460, 825, 828, 826, 460, 459, 0, 0, 460, 459, + 461, 0, 461, 0, 460, 459, 0, 461, 829, 827, + 0, 0, 461, 832, 460, 459, 835, 460, 836, 828, + 838, 460, 462, 462, 462, 460, 463, 463, 463, 462, + 464, 460, 464, 463, 462, 829, 837, 464, 463, 837, + 832, 460, 464, 835, 0, 836, 0, 838, 0, 462, + 462, 462, 0, 463, 463, 463, 462, 464, 465, 464, + + 463, 462, 841, 837, 464, 463, 837, 467, 465, 464, + 465, 467, 466, 467, 466, 465, 844, 845, 467, 466, + 465, 466, 0, 467, 466, 465, 0, 846, 847, 841, + 848, 849, 0, 852, 467, 465, 853, 465, 467, 466, + 467, 466, 465, 844, 845, 467, 466, 465, 466, 468, + 467, 466, 469, 468, 846, 847, 469, 848, 849, 468, + 852, 470, 469, 853, 0, 470, 0, 469, 854, 468, + 0, 470, 469, 855, 470, 0, 468, 856, 0, 469, + 468, 470, 0, 469, 858, 0, 468, 471, 470, 469, + 0, 471, 470, 471, 469, 854, 468, 471, 470, 469, + + 855, 470, 472, 859, 856, 473, 472, 471, 470, 473, + 0, 858, 472, 861, 471, 473, 0, 474, 471, 862, + 471, 474, 472, 863, 471, 473, 0, 474, 0, 472, + 859, 475, 473, 472, 471, 475, 473, 474, 0, 472, + 861, 475, 473, 476, 474, 864, 862, 476, 474, 472, + 863, 475, 473, 476, 474, 477, 0, 0, 475, 477, + 866, 0, 475, 476, 474, 477, 0, 867, 475, 868, + 476, 477, 864, 869, 476, 477, 0, 478, 475, 478, + 476, 479, 477, 479, 478, 0, 477, 866, 479, 478, + 476, 0, 477, 479, 867, 0, 868, 870, 477, 481, + + 869, 0, 477, 481, 478, 480, 478, 480, 479, 481, + 479, 478, 480, 480, 0, 479, 478, 480, 482, 481, + 479, 485, 482, 485, 870, 485, 481, 871, 482, 0, + 481, 485, 480, 0, 480, 872, 481, 873, 482, 480, + 480, 485, 483, 483, 480, 482, 481, 483, 485, 482, + 485, 874, 485, 483, 871, 482, 488, 486, 485, 486, + 488, 486, 872, 483, 873, 482, 488, 486, 485, 483, + 483, 488, 0, 876, 483, 0, 488, 486, 874, 877, + 483, 0, 878, 488, 486, 0, 486, 488, 486, 880, + 483, 484, 487, 488, 486, 484, 487, 0, 488, 484, + + 876, 484, 487, 488, 486, 484, 877, 881, 487, 878, + 0, 882, 487, 0, 0, 484, 880, 489, 484, 487, + 490, 489, 484, 487, 490, 982, 484, 489, 484, 487, + 490, 984, 484, 489, 881, 487, 986, 489, 882, 487, + 490, 491, 484, 987, 489, 491, 0, 490, 489, 491, + 988, 490, 982, 0, 489, 491, 989, 490, 984, 492, + 489, 492, 0, 986, 489, 491, 492, 490, 491, 991, + 987, 492, 491, 493, 0, 493, 491, 988, 0, 493, + 493, 993, 491, 989, 0, 493, 492, 494, 492, 494, + 994, 495, 491, 492, 494, 495, 991, 0, 492, 494, + + 493, 495, 493, 0, 995, 496, 493, 493, 993, 496, + 996, 495, 493, 0, 494, 496, 494, 994, 495, 0, + 497, 494, 495, 997, 497, 496, 494, 499, 495, 499, + 497, 995, 496, 497, 499, 0, 496, 996, 495, 499, + 497, 0, 496, 999, 1001, 0, 503, 497, 503, 0, + 997, 497, 496, 503, 499, 0, 499, 497, 503, 1005, + 497, 499, 501, 501, 501, 0, 499, 497, 498, 501, + 999, 1001, 498, 503, 501, 503, 498, 1007, 0, 1008, + 503, 1009, 498, 1016, 1017, 503, 1005, 498, 1018, 501, + 501, 501, 498, 0, 1021, 498, 501, 0, 1023, 498, + + 502, 501, 0, 498, 1007, 502, 1008, 502, 1009, 498, + 1016, 1017, 502, 1025, 498, 1018, 505, 502, 505, 498, + 500, 1021, 1027, 505, 505, 1023, 1028, 502, 505, 500, + 0, 500, 502, 500, 502, 1029, 500, 0, 0, 502, + 1025, 500, 0, 505, 502, 505, 504, 500, 1030, 1027, + 505, 505, 1031, 1028, 1033, 505, 500, 504, 500, 504, + 500, 506, 1029, 500, 504, 506, 1034, 506, 500, 504, + 1035, 1036, 506, 504, 0, 1030, 0, 506, 507, 1031, + 507, 1033, 1038, 0, 504, 507, 504, 0, 506, 0, + 507, 504, 506, 1034, 506, 1040, 504, 1035, 1036, 506, + + 1042, 508, 0, 508, 506, 507, 509, 507, 508, 1038, + 509, 510, 507, 508, 511, 510, 509, 507, 511, 512, + 1043, 510, 1040, 512, 511, 1044, 509, 1042, 508, 512, + 508, 510, 0, 509, 511, 508, 0, 509, 510, 512, + 508, 511, 510, 509, 0, 511, 512, 1043, 510, 0, + 512, 511, 1044, 509, 0, 513, 512, 0, 510, 513, + 514, 511, 0, 515, 514, 513, 512, 515, 513, 516, + 514, 516, 1045, 515, 515, 513, 516, 517, 514, 517, + 514, 516, 513, 515, 517, 517, 513, 514, 0, 517, + 515, 514, 513, 0, 515, 513, 516, 514, 516, 1045, + + 515, 515, 513, 516, 517, 514, 517, 514, 516, 1046, + 515, 517, 517, 518, 1051, 518, 517, 519, 1052, 519, + 518, 518, 1130, 1134, 519, 518, 520, 1135, 520, 519, + 520, 1138, 0, 520, 0, 0, 1046, 0, 520, 0, + 518, 1051, 518, 1139, 519, 1052, 519, 518, 518, 1130, + 1134, 519, 518, 520, 1135, 520, 519, 520, 1138, 521, + 520, 521, 522, 1143, 522, 520, 521, 521, 0, 522, + 1139, 521, 523, 1145, 522, 524, 523, 0, 1146, 524, + 1149, 0, 523, 0, 0, 524, 521, 1150, 521, 522, + 1143, 522, 523, 521, 521, 524, 522, 0, 521, 523, + + 1145, 522, 524, 523, 526, 1146, 524, 1149, 525, 523, + 525, 526, 524, 526, 1150, 525, 1151, 0, 526, 523, + 525, 1152, 524, 526, 527, 0, 529, 0, 527, 528, + 529, 526, 0, 528, 527, 525, 529, 525, 526, 528, + 526, 528, 525, 1151, 527, 526, 529, 525, 1152, 528, + 526, 527, 531, 529, 531, 527, 528, 529, 1155, 531, + 528, 527, 0, 529, 531, 0, 528, 0, 528, 1156, + 530, 527, 0, 529, 530, 1159, 528, 1161, 530, 531, + 532, 531, 532, 0, 530, 1155, 531, 532, 0, 532, + 1162, 531, 532, 0, 530, 0, 1156, 530, 1163, 533, + + 1164, 530, 1159, 1165, 1161, 530, 0, 532, 533, 532, + 533, 530, 1212, 1215, 532, 533, 532, 1162, 1218, 532, + 533, 530, 534, 1219, 534, 1163, 533, 1164, 1222, 534, + 1165, 0, 0, 534, 534, 533, 535, 533, 535, 1212, + 1215, 0, 533, 535, 535, 1218, 0, 533, 535, 534, + 1219, 534, 536, 1223, 536, 1222, 534, 1224, 536, 536, + 534, 534, 537, 535, 536, 535, 537, 1228, 537, 0, + 535, 535, 1229, 537, 0, 535, 0, 0, 537, 536, + 1223, 536, 1213, 1213, 1224, 536, 536, 1230, 1232, 537, + 538, 536, 538, 537, 1228, 537, 538, 538, 1257, 1229, + + 537, 665, 538, 665, 666, 537, 666, 665, 665, 1258, + 666, 666, 1261, 665, 1230, 1232, 666, 538, 0, 538, + 1213, 0, 667, 538, 538, 1257, 667, 0, 665, 538, + 665, 666, 667, 666, 665, 665, 1258, 666, 666, 1261, + 665, 668, 667, 666, 669, 668, 671, 1213, 669, 667, + 671, 668, 1266, 667, 669, 1270, 671, 669, 670, 667, + 670, 668, 1282, 1282, 669, 670, 671, 0, 668, 667, + 670, 669, 668, 671, 0, 669, 0, 671, 668, 1266, + 0, 669, 1270, 671, 669, 670, 1283, 670, 668, 1286, + 0, 669, 670, 671, 672, 673, 672, 670, 674, 673, + + 0, 672, 674, 675, 1282, 673, 672, 675, 674, 0, + 0, 675, 1289, 1283, 0, 673, 1286, 675, 674, 0, + 0, 672, 673, 672, 0, 674, 673, 675, 672, 674, + 675, 1282, 673, 672, 675, 674, 676, 677, 675, 1289, + 676, 677, 673, 1294, 675, 674, 676, 677, 0, 1298, + 0, 678, 1302, 1304, 675, 678, 676, 677, 0, 678, + 1235, 1235, 0, 676, 677, 678, 0, 676, 677, 1306, + 1294, 0, 0, 676, 677, 678, 1298, 679, 678, 1302, + 1304, 679, 678, 676, 677, 679, 678, 679, 1308, 680, + 681, 682, 678, 680, 681, 682, 1306, 679, 1235, 680, + + 681, 682, 678, 681, 679, 1310, 0, 0, 679, 680, + 681, 682, 679, 0, 679, 1308, 680, 681, 682, 683, + 680, 681, 682, 683, 679, 1235, 680, 681, 682, 683, + 681, 1312, 1310, 684, 683, 684, 680, 681, 682, 683, + 684, 1314, 0, 685, 686, 684, 683, 685, 686, 0, + 683, 0, 0, 685, 686, 1316, 683, 1318, 1312, 686, + 684, 683, 684, 685, 686, 0, 683, 684, 1314, 687, + 685, 686, 684, 687, 685, 686, 688, 0, 688, 687, + 685, 686, 1316, 688, 1318, 1320, 686, 0, 688, 687, + 685, 686, 689, 689, 689, 0, 687, 1288, 1288, 689, + + 687, 0, 0, 688, 689, 688, 687, 0, 0, 0, + 688, 0, 1320, 0, 0, 688, 687, 0, 0, 689, + 689, 689, 0, 690, 0, 690, 689, 0, 0, 0, + 690, 689, 690, 0, 691, 690, 691, 0, 0, 1288, + 0, 691, 691, 0, 0, 0, 691, 692, 0, 0, + 690, 0, 690, 0, 0, 0, 0, 690, 692, 690, + 692, 691, 690, 691, 0, 692, 1288, 0, 691, 691, + 692, 0, 0, 691, 692, 694, 693, 0, 693, 0, + 0, 0, 693, 693, 694, 692, 694, 692, 693, 0, + 0, 694, 692, 0, 695, 0, 694, 692, 695, 0, + + 0, 0, 694, 693, 695, 693, 0, 0, 0, 693, + 693, 694, 0, 694, 695, 693, 0, 696, 694, 696, + 697, 695, 697, 694, 696, 695, 698, 697, 698, 696, + 705, 695, 697, 698, 705, 0, 0, 0, 698, 0, + 705, 695, 0, 0, 696, 0, 696, 697, 0, 697, + 705, 696, 0, 698, 697, 698, 696, 705, 0, 697, + 698, 705, 699, 0, 699, 698, 699, 705, 700, 699, + 700, 0, 700, 0, 699, 700, 701, 705, 701, 0, + 700, 0, 0, 701, 0, 701, 0, 0, 701, 699, + 0, 699, 0, 699, 0, 700, 699, 700, 703, 700, + + 0, 699, 700, 701, 0, 701, 702, 700, 702, 703, + 701, 703, 701, 702, 702, 701, 703, 0, 702, 704, + 0, 703, 0, 0, 706, 703, 0, 0, 706, 0, + 704, 0, 704, 702, 706, 702, 703, 704, 703, 0, + 702, 702, 704, 703, 706, 702, 704, 0, 703, 0, + 707, 706, 708, 0, 707, 706, 708, 704, 0, 704, + 707, 706, 708, 0, 704, 707, 0, 0, 0, 704, + 707, 706, 708, 0, 709, 0, 710, 707, 709, 708, + 710, 707, 709, 708, 0, 0, 710, 707, 709, 708, + 711, 0, 707, 0, 711, 0, 710, 707, 709, 708, + + 711, 709, 0, 710, 712, 709, 0, 710, 712, 709, + 711, 0, 712, 710, 0, 709, 0, 711, 712, 0, + 714, 711, 713, 710, 714, 709, 713, 711, 712, 0, + 714, 712, 713, 713, 715, 712, 715, 711, 0, 712, + 714, 715, 713, 0, 0, 712, 715, 714, 0, 713, + 0, 714, 0, 713, 0, 712, 0, 714, 0, 713, + 713, 715, 0, 715, 716, 0, 716, 714, 715, 713, + 717, 716, 717, 715, 718, 719, 716, 717, 718, 719, + 0, 0, 717, 0, 718, 719, 0, 0, 719, 0, + 0, 716, 0, 716, 718, 719, 0, 717, 716, 717, + + 0, 718, 719, 716, 717, 718, 719, 0, 0, 717, + 0, 718, 719, 0, 0, 719, 720, 0, 720, 0, + 0, 718, 719, 720, 721, 0, 721, 722, 720, 722, + 721, 721, 0, 722, 722, 0, 721, 0, 0, 722, + 0, 0, 0, 720, 0, 720, 0, 0, 0, 0, + 720, 721, 0, 721, 722, 720, 722, 721, 721, 0, + 722, 722, 0, 721, 0, 0, 722, 723, 724, 725, + 724, 725, 723, 0, 723, 724, 725, 0, 723, 723, + 724, 725, 0, 0, 723, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 723, 724, 725, 724, 725, 723, + + 0, 723, 724, 725, 0, 723, 723, 724, 725, 0, + 726, 723, 726, 727, 728, 727, 728, 726, 0, 0, + 727, 728, 726, 0, 0, 727, 728, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 726, 0, 726, + 727, 728, 727, 728, 726, 0, 0, 727, 728, 726, + 0, 0, 727, 728, 729, 0, 729, 730, 731, 730, + 731, 729, 729, 0, 730, 731, 729, 0, 0, 730, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 729, 0, 729, 730, 731, 730, 731, 729, 729, + 732, 730, 731, 729, 732, 733, 730, 731, 734, 733, + + 732, 0, 734, 736, 735, 733, 735, 736, 734, 736, + 732, 735, 735, 0, 736, 733, 735, 732, 734, 736, + 0, 732, 733, 0, 0, 734, 733, 732, 0, 734, + 736, 735, 733, 735, 736, 734, 736, 732, 735, 735, + 738, 736, 733, 735, 738, 734, 736, 737, 739, 737, + 738, 0, 739, 737, 737, 0, 0, 0, 739, 737, + 738, 0, 0, 0, 0, 0, 0, 738, 739, 0, + 0, 738, 0, 0, 737, 739, 737, 738, 0, 739, + 737, 737, 740, 0, 740, 739, 737, 738, 740, 0, + 0, 0, 741, 742, 740, 739, 741, 742, 0, 0, + + 0, 0, 741, 742, 740, 0, 742, 0, 0, 740, + 0, 740, 741, 742, 0, 740, 0, 0, 0, 741, + 742, 740, 743, 741, 742, 0, 743, 0, 0, 741, + 742, 740, 743, 742, 744, 743, 0, 745, 744, 741, + 742, 745, 743, 0, 744, 745, 746, 745, 0, 743, + 746, 0, 0, 743, 744, 0, 746, 745, 0, 743, + 0, 744, 743, 0, 745, 744, 746, 0, 745, 743, + 0, 744, 745, 746, 745, 747, 748, 746, 0, 747, + 748, 744, 0, 746, 745, 747, 748, 0, 0, 0, + 749, 0, 0, 746, 749, 747, 748, 0, 749, 0, + + 0, 0, 747, 748, 749, 0, 747, 748, 0, 0, + 0, 0, 747, 748, 749, 0, 750, 749, 0, 0, + 750, 749, 747, 748, 750, 749, 0, 0, 751, 752, + 750, 749, 751, 752, 0, 0, 0, 0, 751, 752, + 750, 749, 753, 750, 0, 0, 753, 750, 751, 752, + 753, 750, 753, 0, 0, 751, 752, 750, 0, 751, + 752, 0, 753, 0, 0, 751, 752, 750, 754, 753, + 755, 0, 754, 753, 755, 751, 752, 753, 754, 753, + 755, 754, 757, 0, 0, 755, 757, 0, 754, 753, + 755, 756, 757, 0, 756, 754, 0, 755, 756, 754, + + 0, 755, 757, 0, 756, 754, 0, 755, 754, 757, + 0, 0, 755, 757, 756, 754, 758, 755, 756, 757, + 758, 756, 0, 760, 758, 756, 758, 0, 759, 757, + 759, 756, 760, 0, 760, 759, 758, 0, 761, 760, + 759, 756, 761, 758, 760, 0, 0, 758, 761, 0, + 760, 758, 0, 758, 0, 759, 0, 759, 761, 760, + 762, 760, 759, 758, 762, 761, 760, 759, 763, 761, + 762, 760, 763, 765, 764, 761, 764, 765, 763, 0, + 762, 764, 0, 765, 0, 761, 764, 762, 763, 0, + 0, 762, 766, 765, 0, 763, 766, 762, 0, 763, + + 765, 764, 766, 764, 765, 763, 0, 762, 764, 0, + 765, 0, 766, 764, 767, 763, 0, 768, 767, 766, + 765, 768, 769, 766, 767, 0, 769, 768, 0, 766, + 0, 771, 769, 771, 767, 0, 770, 768, 771, 766, + 770, 767, 769, 771, 768, 767, 770, 0, 768, 769, + 772, 767, 772, 769, 768, 0, 770, 772, 771, 769, + 771, 767, 772, 770, 768, 771, 0, 770, 0, 769, + 771, 774, 0, 770, 773, 0, 773, 772, 0, 772, + 774, 773, 774, 770, 772, 0, 773, 774, 775, 772, + 775, 0, 774, 0, 0, 775, 0, 775, 774, 0, + + 775, 773, 0, 773, 776, 0, 776, 774, 773, 774, + 0, 776, 0, 773, 774, 775, 776, 775, 0, 774, + 0, 0, 775, 777, 775, 777, 778, 775, 0, 0, + 777, 776, 777, 776, 779, 777, 779, 778, 776, 778, + 0, 779, 779, 776, 778, 0, 779, 0, 0, 778, + 777, 0, 777, 778, 0, 0, 0, 777, 0, 777, + 780, 779, 777, 779, 778, 780, 778, 780, 779, 779, + 781, 778, 780, 779, 781, 782, 778, 780, 782, 782, + 781, 0, 0, 0, 0, 782, 0, 780, 0, 0, + 781, 0, 780, 0, 780, 782, 0, 781, 0, 780, + + 0, 781, 782, 0, 780, 782, 782, 781, 0, 783, + 784, 785, 782, 783, 784, 785, 0, 781, 0, 783, + 784, 785, 782, 786, 787, 0, 784, 786, 787, 783, + 784, 785, 0, 786, 787, 0, 783, 784, 785, 0, + 783, 784, 785, 786, 787, 0, 783, 784, 785, 0, + 786, 787, 0, 784, 786, 787, 783, 784, 785, 0, + 786, 787, 788, 0, 788, 886, 887, 886, 887, 788, + 786, 787, 886, 887, 788, 0, 0, 886, 887, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, + 0, 788, 886, 887, 886, 887, 788, 0, 0, 886, + + 887, 788, 0, 0, 886, 887, 888, 889, 888, 889, + 0, 890, 891, 888, 889, 890, 891, 0, 888, 889, + 888, 890, 891, 0, 0, 0, 0, 0, 0, 0, + 0, 890, 891, 888, 889, 888, 889, 0, 890, 891, + 888, 889, 890, 891, 0, 888, 889, 888, 890, 891, + 892, 893, 0, 0, 892, 893, 0, 0, 890, 891, + 892, 893, 0, 895, 895, 894, 893, 0, 895, 894, + 892, 893, 0, 894, 895, 0, 0, 892, 893, 894, + 0, 892, 893, 0, 895, 0, 0, 892, 893, 894, + 895, 895, 894, 893, 0, 895, 894, 892, 893, 0, + + 894, 895, 896, 897, 896, 897, 894, 0, 896, 0, + 897, 895, 0, 0, 896, 897, 894, 0, 0, 0, + 0, 0, 0, 0, 896, 0, 898, 0, 898, 896, + 897, 896, 897, 898, 898, 896, 899, 897, 898, 900, + 899, 896, 897, 900, 901, 902, 899, 902, 901, 900, + 0, 896, 902, 898, 901, 898, 899, 902, 903, 900, + 898, 898, 903, 899, 901, 898, 900, 899, 903, 0, + 900, 901, 902, 899, 902, 901, 900, 0, 903, 902, + 0, 901, 0, 899, 902, 903, 900, 0, 904, 903, + 0, 901, 904, 905, 0, 903, 907, 905, 904, 0, + + 907, 905, 906, 0, 906, 903, 907, 905, 904, 906, + 0, 0, 0, 0, 906, 904, 907, 905, 0, 904, + 905, 0, 908, 907, 905, 904, 908, 907, 905, 906, + 0, 906, 908, 907, 905, 904, 906, 0, 0, 0, + 0, 906, 908, 907, 905, 0, 909, 910, 0, 908, + 909, 910, 0, 908, 0, 0, 909, 910, 911, 908, + 911, 0, 910, 0, 0, 911, 909, 910, 0, 908, + 911, 912, 0, 909, 910, 912, 913, 909, 910, 0, + 913, 912, 0, 909, 910, 911, 913, 911, 0, 910, + 0, 912, 911, 909, 910, 914, 913, 911, 912, 914, + + 0, 0, 912, 913, 916, 914, 916, 913, 912, 0, + 914, 916, 0, 913, 0, 914, 916, 0, 912, 0, + 915, 0, 914, 913, 915, 0, 914, 0, 0, 0, + 915, 916, 914, 916, 0, 915, 0, 914, 916, 0, + 915, 0, 914, 916, 917, 0, 0, 915, 917, 919, + 0, 915, 0, 919, 917, 0, 0, 915, 923, 919, + 923, 0, 915, 0, 917, 923, 918, 915, 918, 919, + 923, 917, 918, 0, 0, 917, 919, 0, 918, 0, + 919, 917, 0, 0, 0, 923, 919, 923, 918, 0, + 920, 917, 923, 918, 920, 918, 919, 923, 921, 918, + + 920, 0, 921, 0, 0, 918, 0, 0, 921, 0, + 920, 0, 0, 0, 0, 918, 921, 920, 921, 0, + 0, 920, 0, 0, 922, 921, 0, 920, 922, 921, + 0, 0, 0, 0, 922, 921, 0, 920, 0, 922, + 924, 925, 924, 921, 922, 921, 925, 924, 925, 0, + 0, 922, 924, 925, 0, 922, 0, 0, 925, 0, + 0, 922, 0, 0, 0, 0, 922, 924, 925, 924, + 926, 922, 926, 925, 924, 925, 927, 926, 927, 924, + 925, 0, 926, 927, 928, 925, 928, 0, 927, 0, + 0, 928, 928, 0, 0, 0, 928, 926, 0, 926, + + 929, 0, 929, 927, 926, 927, 0, 929, 0, 926, + 927, 928, 929, 928, 930, 927, 930, 0, 928, 928, + 0, 930, 0, 928, 0, 0, 930, 929, 931, 929, + 931, 0, 0, 0, 929, 931, 931, 0, 0, 929, + 931, 930, 933, 930, 933, 0, 932, 0, 930, 933, + 932, 0, 933, 930, 933, 931, 932, 931, 934, 0, + 934, 0, 931, 931, 0, 934, 932, 931, 0, 933, + 934, 933, 0, 932, 0, 0, 933, 932, 0, 933, + 0, 933, 935, 932, 935, 934, 0, 934, 936, 935, + 936, 0, 934, 932, 935, 936, 0, 934, 937, 0, + + 936, 0, 0, 0, 0, 0, 937, 0, 937, 935, + 0, 935, 938, 937, 938, 936, 935, 936, 937, 938, + 0, 935, 936, 0, 938, 937, 0, 936, 0, 0, + 939, 0, 939, 937, 940, 937, 0, 939, 940, 938, + 937, 938, 939, 0, 940, 937, 938, 0, 941, 0, + 941, 938, 0, 0, 940, 941, 0, 939, 0, 939, + 941, 940, 0, 0, 939, 940, 0, 942, 0, 939, + 0, 940, 0, 0, 0, 941, 0, 941, 942, 0, + 942, 940, 941, 0, 943, 942, 943, 941, 0, 0, + 942, 943, 943, 944, 942, 0, 943, 944, 0, 944, + + 0, 0, 0, 0, 944, 942, 0, 942, 0, 944, + 0, 943, 942, 943, 0, 0, 0, 942, 943, 943, + 944, 0, 0, 943, 944, 945, 944, 945, 946, 0, + 946, 944, 945, 945, 0, 946, 944, 945, 948, 947, + 946, 947, 948, 0, 0, 0, 947, 0, 948, 0, + 0, 947, 945, 0, 945, 946, 0, 946, 948, 945, + 945, 0, 946, 0, 945, 948, 947, 946, 947, 948, + 0, 0, 949, 947, 0, 948, 949, 0, 947, 950, + 950, 0, 949, 0, 950, 948, 0, 949, 0, 0, + 950, 0, 949, 0, 0, 0, 0, 0, 0, 949, + + 950, 0, 0, 949, 0, 0, 950, 950, 951, 949, + 0, 950, 951, 0, 949, 0, 952, 950, 951, 949, + 952, 951, 0, 0, 0, 0, 952, 950, 951, 952, + 953, 0, 0, 0, 953, 951, 952, 0, 0, 951, + 953, 0, 954, 952, 0, 951, 954, 952, 951, 0, + 953, 0, 954, 952, 955, 951, 952, 953, 955, 0, + 0, 953, 954, 952, 955, 0, 956, 953, 0, 954, + 956, 0, 0, 954, 955, 0, 956, 953, 0, 954, + 957, 955, 0, 0, 957, 955, 956, 0, 957, 954, + 0, 955, 958, 956, 957, 0, 958, 956, 961, 0, + + 958, 955, 961, 956, 957, 0, 958, 957, 961, 959, + 959, 957, 0, 956, 959, 957, 958, 0, 961, 958, + 959, 957, 962, 958, 960, 961, 962, 958, 960, 961, + 959, 957, 962, 958, 960, 961, 959, 959, 0, 960, + 0, 959, 962, 958, 960, 961, 0, 959, 0, 962, + 964, 960, 0, 962, 964, 960, 0, 959, 964, 962, + 0, 960, 963, 963, 964, 0, 960, 963, 965, 962, + 965, 960, 0, 963, 964, 965, 0, 964, 0, 0, + 965, 964, 0, 963, 0, 964, 966, 0, 966, 963, + 963, 964, 966, 966, 963, 965, 0, 965, 966, 0, + + 963, 964, 965, 0, 967, 0, 967, 965, 0, 0, + 963, 967, 967, 966, 0, 966, 967, 968, 0, 966, + 966, 0, 0, 969, 0, 966, 0, 0, 968, 0, + 968, 967, 0, 967, 969, 968, 969, 0, 967, 967, + 968, 969, 0, 967, 968, 0, 969, 970, 0, 970, + 969, 0, 0, 0, 970, 968, 0, 968, 971, 970, + 971, 969, 968, 969, 0, 971, 0, 968, 969, 0, + 971, 0, 0, 969, 970, 0, 970, 0, 972, 973, + 973, 970, 972, 0, 973, 971, 970, 971, 972, 0, + 973, 0, 971, 0, 0, 0, 0, 971, 972, 0, + + 973, 0, 0, 0, 974, 972, 973, 973, 974, 972, + 0, 973, 975, 0, 974, 972, 975, 973, 0, 0, + 0, 976, 975, 976, 974, 972, 0, 973, 976, 977, + 0, 974, 975, 976, 0, 974, 0, 0, 0, 975, + 977, 974, 977, 975, 0, 0, 0, 977, 976, 975, + 976, 974, 977, 978, 0, 976, 977, 0, 0, 975, + 976, 979, 0, 979, 978, 0, 978, 977, 979, 977, + 980, 978, 980, 979, 977, 0, 978, 980, 0, 977, + 978, 0, 980, 0, 0, 0, 0, 0, 979, 0, + 979, 978, 1054, 978, 0, 979, 1054, 980, 978, 980, + + 979, 1055, 1054, 978, 980, 1055, 1056, 0, 1056, 980, + 1059, 1055, 1054, 1056, 1059, 1057, 0, 1057, 1056, 1054, + 1059, 1055, 1057, 1054, 1058, 0, 1058, 1057, 1055, 1054, + 1059, 1058, 1055, 1056, 0, 1056, 1058, 1059, 1055, 1054, + 1056, 1059, 1057, 0, 1057, 1056, 1060, 1059, 1055, 1057, + 1060, 1058, 0, 1058, 1057, 0, 1060, 1059, 1058, 0, + 1061, 1060, 1061, 1058, 0, 0, 1060, 1061, 1062, 1063, + 1062, 1063, 1061, 1060, 0, 1062, 1063, 1060, 0, 0, + 1062, 1063, 0, 1060, 0, 0, 0, 1061, 1060, 1061, + 0, 0, 0, 1060, 1061, 1062, 1063, 1062, 1063, 1061, + + 0, 0, 1062, 1063, 1064, 0, 1064, 1062, 1063, 0, + 1065, 1064, 1065, 1066, 1066, 1066, 1064, 1065, 1065, 0, + 1066, 0, 1065, 0, 0, 1066, 0, 0, 0, 0, + 0, 1064, 0, 1064, 0, 0, 0, 1065, 1064, 1065, + 1066, 1066, 1066, 1064, 1065, 1065, 1067, 1066, 0, 1065, + 0, 1068, 1066, 1068, 0, 1067, 0, 1067, 1068, 0, + 0, 0, 1067, 1068, 1069, 0, 1069, 1067, 0, 0, + 0, 1069, 1069, 1067, 0, 0, 1069, 0, 1068, 0, + 1068, 0, 1067, 0, 1067, 1068, 0, 0, 0, 1067, + 1068, 1069, 0, 1069, 1067, 1070, 1071, 1070, 1069, 1069, + + 0, 0, 1070, 1069, 0, 0, 1071, 1070, 1071, 1072, + 0, 1072, 0, 1071, 0, 0, 1072, 0, 1071, 0, + 0, 1072, 1070, 1071, 1070, 0, 0, 0, 1073, 1070, + 0, 0, 0, 1071, 1070, 1071, 1072, 1073, 1072, 1073, + 1071, 0, 0, 1072, 1073, 1071, 0, 0, 1072, 1073, + 1074, 1075, 1074, 1075, 0, 1073, 0, 1074, 1075, 0, + 0, 0, 1074, 1075, 1073, 0, 1073, 0, 0, 0, + 0, 1073, 0, 0, 0, 0, 1073, 1074, 1075, 1074, + 1075, 1076, 1077, 1076, 1074, 1075, 1077, 1078, 1076, 1074, + 1075, 1078, 1077, 1076, 1079, 0, 1079, 1078, 0, 0, + + 0, 1079, 1077, 0, 0, 0, 1079, 1078, 1076, 1077, + 1076, 0, 0, 1077, 1078, 1076, 0, 0, 1078, 1077, + 1076, 1079, 0, 1079, 1078, 0, 0, 0, 1079, 1077, + 1080, 1081, 1080, 1079, 1078, 1081, 1082, 1080, 1080, 0, + 1082, 1081, 1080, 0, 0, 0, 1082, 0, 0, 0, + 1083, 1081, 0, 0, 1083, 0, 1082, 1080, 1081, 1080, + 1083, 0, 1081, 1082, 1080, 1080, 0, 1082, 1081, 1080, + 1083, 0, 1084, 1082, 0, 1085, 1084, 1083, 1081, 1085, + 1086, 1083, 1084, 1082, 1086, 1085, 0, 1083, 0, 0, + 1086, 0, 1084, 0, 1087, 1085, 0, 1083, 1087, 1084, + + 1086, 0, 1085, 1084, 1087, 0, 1085, 1086, 0, 1084, + 0, 1086, 1085, 0, 1087, 0, 1088, 1086, 0, 1084, + 1088, 1087, 1085, 0, 1089, 1087, 1088, 1086, 1089, 1088, + 0, 1087, 0, 0, 1089, 0, 1088, 0, 1090, 0, + 0, 1087, 1090, 1088, 1089, 0, 1090, 1088, 0, 0, + 1091, 1089, 1090, 1088, 1091, 1089, 1088, 0, 0, 0, + 1091, 1089, 1090, 1088, 1092, 1090, 0, 0, 1092, 1090, + 1091, 1089, 0, 1090, 1092, 0, 1093, 1091, 1093, 1090, + 0, 1091, 0, 1093, 1092, 0, 0, 1091, 1093, 1090, + 0, 1092, 1094, 0, 1094, 1092, 0, 1091, 0, 1094, + + 1095, 1092, 1095, 1093, 1094, 1093, 1096, 1095, 1096, 0, + 1093, 1092, 1095, 1096, 0, 1093, 0, 0, 1096, 1094, + 0, 1094, 0, 0, 0, 1097, 1094, 1095, 0, 1095, + 1098, 1094, 1098, 1096, 1095, 1096, 1097, 1098, 1097, 1095, + 1096, 0, 1098, 1097, 0, 1096, 0, 0, 1097, 0, + 0, 0, 1097, 0, 1099, 0, 1099, 1098, 0, 1098, + 0, 1099, 1099, 1097, 1098, 1097, 1099, 1100, 0, 1098, + 1097, 1100, 1101, 0, 0, 1097, 1101, 1100, 0, 0, + 1102, 1099, 1101, 1099, 1102, 0, 0, 1100, 1099, 1099, + 1102, 0, 1101, 1099, 1100, 0, 0, 0, 1100, 1101, + + 1102, 0, 1103, 1101, 1100, 0, 1103, 1102, 0, 1101, + 0, 1102, 1103, 0, 1100, 0, 1104, 1102, 0, 1101, + 1104, 0, 1103, 0, 0, 0, 1104, 1102, 1105, 1103, + 1105, 0, 0, 1103, 1105, 0, 1104, 0, 0, 1103, + 1105, 0, 1106, 1104, 1106, 0, 0, 1104, 1106, 1103, + 1105, 0, 0, 1104, 1106, 1105, 0, 1105, 1107, 0, + 1107, 1105, 0, 1104, 1106, 1107, 1108, 1105, 1108, 1106, + 1107, 1106, 1109, 1108, 1109, 1106, 0, 1105, 1108, 1109, + 0, 1106, 0, 0, 1109, 1107, 0, 1107, 0, 0, + 0, 1106, 1107, 1108, 0, 1108, 1110, 1107, 1110, 1109, + + 1108, 1109, 1111, 1110, 1111, 1108, 1109, 0, 1110, 1111, + 1112, 1109, 1112, 0, 1111, 0, 0, 1112, 0, 0, + 0, 0, 1112, 1110, 0, 1110, 1113, 0, 1113, 1111, + 1110, 1111, 0, 1113, 1114, 1110, 1111, 1112, 1113, 1112, + 0, 1111, 0, 0, 1112, 1114, 1173, 1114, 0, 1112, + 1173, 0, 1114, 1113, 0, 1113, 1173, 1114, 1115, 1116, + 1113, 1114, 0, 0, 0, 1113, 1173, 0, 1116, 1115, + 1116, 1115, 1114, 1173, 1114, 1116, 1115, 1173, 0, 1114, + 1116, 1115, 0, 1173, 1114, 1115, 1116, 0, 0, 0, + 0, 0, 1117, 1173, 1117, 1116, 1115, 1116, 1115, 1117, + + 1117, 0, 1116, 1115, 1117, 1118, 0, 1116, 1115, 0, + 1119, 0, 1119, 1118, 0, 1118, 1120, 1119, 1120, 1117, + 1118, 1117, 1119, 1120, 0, 1118, 1117, 1117, 1120, 0, + 0, 1117, 1118, 0, 1121, 0, 1121, 1119, 0, 1119, + 1118, 1121, 1118, 1120, 1119, 1120, 1121, 1118, 0, 1119, + 1120, 0, 1118, 0, 0, 1120, 0, 1122, 0, 1122, + 1123, 1121, 1123, 1121, 1122, 0, 1123, 1123, 1121, 1122, + 0, 0, 1123, 1121, 0, 0, 1124, 0, 1124, 0, + 0, 0, 0, 1124, 1122, 0, 1122, 1123, 1124, 1123, + 1169, 1122, 1169, 1123, 1123, 0, 1122, 1169, 0, 1123, + + 0, 0, 1169, 1124, 1170, 1124, 1170, 0, 0, 0, + 1124, 1170, 0, 0, 0, 1124, 1170, 1169, 1171, 1169, + 1171, 0, 0, 0, 1169, 1171, 0, 0, 0, 1169, + 1171, 1170, 1172, 1170, 1172, 0, 1174, 0, 1170, 1172, + 1174, 0, 0, 1170, 1172, 1171, 1174, 1171, 0, 0, + 1175, 0, 1171, 0, 1175, 0, 1174, 1171, 0, 1172, + 1175, 1172, 0, 1174, 1176, 1176, 1172, 1174, 0, 0, + 1175, 1172, 0, 1174, 1177, 0, 0, 1175, 1177, 0, + 0, 1175, 0, 1174, 1177, 0, 0, 1175, 1178, 1176, + 0, 0, 1178, 1176, 1177, 0, 1178, 1175, 0, 1176, + + 0, 1177, 1178, 0, 1179, 1177, 0, 0, 1179, 1176, + 0, 1177, 1178, 0, 1179, 1178, 1176, 0, 1180, 1178, + 1176, 1177, 1180, 1178, 1179, 0, 1176, 0, 1180, 1178, + 1181, 1179, 0, 1182, 1181, 1179, 1176, 1182, 1180, 1178, + 1181, 1179, 1183, 1182, 0, 1180, 1183, 0, 1182, 1180, + 1181, 1179, 1183, 1182, 0, 1180, 0, 1181, 0, 0, + 1182, 1181, 1183, 0, 1182, 1180, 0, 1181, 1184, 1183, + 1182, 0, 1184, 1183, 0, 1182, 0, 1181, 1184, 1183, + 1182, 1185, 0, 0, 0, 1185, 0, 0, 1184, 1183, + 1186, 1185, 1186, 0, 0, 1184, 0, 1186, 0, 1184, + + 0, 1185, 1186, 0, 1187, 1184, 1187, 0, 1185, 0, + 0, 1187, 1185, 0, 1188, 1184, 1187, 1186, 1185, 1186, + 1189, 0, 1189, 1188, 1186, 1188, 0, 1189, 1185, 1186, + 1188, 1187, 1189, 1187, 0, 1188, 0, 0, 1187, 0, + 0, 1188, 0, 1187, 1190, 0, 1190, 1189, 0, 1189, + 1188, 1190, 1188, 1191, 1189, 1191, 1190, 1188, 0, 1189, + 1191, 0, 1188, 0, 0, 1191, 0, 0, 0, 0, + 0, 1190, 0, 1190, 0, 0, 0, 0, 1190, 1192, + 1191, 1192, 1191, 1190, 1193, 1192, 1192, 1191, 1193, 1194, + 0, 1192, 1191, 1194, 1193, 1195, 0, 1195, 1196, 1194, + + 1196, 0, 1195, 0, 1193, 1196, 1192, 1195, 1192, 1194, + 1196, 1193, 1192, 1192, 0, 1193, 1194, 0, 1192, 0, + 1194, 1193, 1195, 0, 1195, 1196, 1194, 1196, 1197, 1195, + 1197, 1193, 1196, 0, 1195, 1197, 1194, 1196, 0, 1198, + 1197, 1198, 0, 0, 0, 0, 1198, 1198, 0, 0, + 0, 1198, 1200, 0, 1200, 1197, 0, 1197, 0, 1200, + 0, 0, 1197, 0, 1200, 0, 1198, 1197, 1198, 1199, + 1199, 0, 1199, 1198, 1198, 0, 0, 1199, 1198, 1200, + 0, 1200, 1199, 1201, 0, 1201, 1200, 0, 0, 0, + 1201, 1200, 0, 0, 0, 1201, 1199, 1199, 0, 1199, + + 0, 0, 0, 0, 1199, 0, 1202, 0, 1202, 1199, + 1201, 0, 1201, 1202, 1202, 0, 0, 1201, 1202, 1203, + 0, 1203, 1201, 0, 0, 0, 1203, 1205, 1205, 1205, + 1204, 1203, 1204, 1202, 1205, 1202, 1204, 1204, 0, 1205, + 1202, 1202, 1204, 0, 0, 1202, 1203, 0, 1203, 0, + 0, 0, 0, 1203, 1205, 1205, 1205, 1204, 1203, 1204, + 1206, 1205, 1206, 1204, 1204, 0, 1205, 1206, 1206, 1204, + 1207, 1208, 1206, 1209, 1207, 1208, 0, 1209, 0, 0, + 1207, 1208, 0, 1209, 0, 0, 0, 1206, 0, 1206, + 1207, 1208, 0, 1209, 1206, 1206, 0, 1207, 1208, 1206, + + 1209, 1207, 1208, 0, 1209, 1210, 0, 1207, 1208, 1210, + 1209, 0, 0, 0, 0, 1210, 0, 1207, 1208, 1236, + 1209, 0, 0, 1236, 1234, 1210, 0, 0, 1234, 1236, + 0, 0, 1210, 0, 1234, 0, 1210, 1234, 0, 1236, + 0, 0, 1210, 1237, 1234, 0, 1236, 1237, 0, 0, + 1236, 1234, 1210, 1237, 0, 1234, 1236, 0, 1237, 0, + 0, 1234, 0, 1237, 1234, 0, 1236, 0, 1238, 1239, + 1237, 1234, 1238, 1239, 1237, 0, 0, 0, 1238, 1239, + 1237, 0, 1240, 1241, 1240, 1237, 1240, 1241, 1238, 1239, + 1237, 0, 1240, 1241, 0, 1238, 1239, 1242, 1241, 1238, + + 1239, 1242, 1240, 1241, 0, 1238, 1239, 1242, 0, 1240, + 1241, 1240, 0, 1240, 1241, 1238, 1239, 1242, 0, 1240, + 1241, 0, 1243, 1244, 1242, 1241, 1243, 1244, 1242, 1240, + 1241, 0, 1243, 1244, 1242, 0, 1244, 0, 0, 1245, + 1246, 1245, 1243, 1244, 1242, 1246, 1245, 1246, 0, 1243, + 1244, 1245, 1246, 1243, 1244, 0, 0, 1246, 0, 1243, + 1244, 0, 0, 1244, 0, 0, 1245, 1246, 1245, 1243, + 1244, 0, 1246, 1245, 1246, 1247, 0, 1247, 1245, 1246, + 0, 1248, 1247, 1248, 1246, 0, 0, 1247, 1248, 1249, + 0, 1249, 0, 1248, 0, 0, 1249, 0, 0, 0, + + 0, 1249, 1247, 0, 1247, 0, 0, 1250, 1248, 1247, + 1248, 1250, 0, 0, 1247, 1248, 1249, 1250, 1249, 0, + 1248, 1251, 0, 1249, 0, 1251, 1252, 1250, 1249, 1253, + 1252, 1251, 1251, 1253, 1250, 0, 1252, 0, 1250, 1253, + 0, 1251, 0, 0, 1250, 0, 1252, 0, 1251, 1253, + 1254, 1254, 1251, 1252, 1250, 1254, 1253, 1252, 1251, 1251, + 1253, 1254, 0, 1252, 1269, 1269, 1253, 0, 1251, 0, + 1271, 1254, 0, 1252, 1271, 1272, 1253, 1254, 1254, 1272, + 1271, 0, 1254, 0, 1274, 1272, 1274, 0, 1254, 1269, + 1271, 1274, 0, 1269, 0, 1272, 1274, 1271, 1254, 1269, + + 0, 1271, 1272, 1275, 1273, 1275, 1272, 1271, 1273, 1269, + 1275, 1274, 1272, 1274, 1273, 1275, 1269, 1271, 1274, 0, + 1269, 0, 1272, 1274, 1273, 0, 1269, 1276, 0, 1276, + 1275, 1273, 1275, 0, 1276, 1273, 1269, 1275, 1277, 1276, + 1277, 1273, 1275, 0, 0, 1277, 1278, 0, 1278, 0, + 1277, 1273, 0, 1278, 1276, 0, 1276, 0, 1278, 1279, + 0, 1276, 0, 1279, 1280, 1277, 1276, 1277, 1280, 1279, + 0, 0, 1277, 1278, 1280, 1278, 0, 1277, 1290, 1279, + 1278, 0, 1290, 1291, 1280, 1278, 1279, 1291, 1290, 0, + 1279, 1280, 1292, 1291, 1292, 1280, 1279, 0, 1290, 1292, + + 1300, 1280, 1300, 1291, 1292, 1290, 1279, 1300, 0, 1290, + 1291, 1280, 1300, 0, 1291, 1290, 0, 0, 0, 1292, + 1291, 1292, 0, 0, 0, 1290, 1292, 1300, 0, 1300, + 1291, 1292, 0, 0, 1300, 0, 0, 0, 0, 1300, + 1332, 1332, 1332, 1332, 1332, 1333, 0, 0, 1333, 1333, + 1335, 1335, 1335, 0, 1335, 1336, 0, 1336, 1336, 1336, + 1337, 0, 1337, 1337, 1337, 1338, 0, 1338, 1338, 1338, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, + 1331, 1331, 1331, 1331, 1331, 1331, 1331 + } ; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. @@ -2123,14 +3051,13 @@ static const flex_int16_t yy_chk[8848] = { ***************************/ #line 12 "flex_lexer.l" -#include -#include -#include #include "../sql/Expr.h" #include "bison_parser.h" +#include +#include +#include -#define TOKEN(name) \ - { return SQL_##name; } +#define TOKEN(name) { return SQL_##name; } static thread_local std::stringstream strbuf; @@ -2163,127 +3090,129 @@ static thread_local std::stringstream strbuf; #endif #ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void* +#define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ -struct yyguts_t { - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE* yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char* yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int* yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char* yytext_r; - int yy_more_flag; - int yy_more_len; - - YYSTYPE* yylval_r; - - YYLTYPE* yylloc_r; - -}; /* end struct yyguts_t */ - -static int yy_init_globals(yyscan_t yyscanner); - -/* This must go here because YYSTYPE and YYLTYPE are included - * from bison output in section 1.*/ -#define yylval yyg->yylval_r +struct yyguts_t + { -#define yylloc yyg->yylloc_r + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; -int yylex_init(yyscan_t* scanner); + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; -int yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t* scanner); + int yylineno_r; + int yy_flex_debug_r; -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE * yylval_r; -int yylex_destroy(yyscan_t yyscanner); + YYLTYPE * yylloc_r; -int yyget_debug(yyscan_t yyscanner); + }; /* end struct yyguts_t */ -void yyset_debug(int debug_flag, yyscan_t yyscanner); +static int yy_init_globals ( yyscan_t yyscanner ); + + /* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ + # define yylval yyg->yylval_r + + # define yylloc yyg->yylloc_r + +int yylex_init (yyscan_t* scanner); + +int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ -YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner); +int yylex_destroy ( yyscan_t yyscanner ); -void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); +int yyget_debug ( yyscan_t yyscanner ); -FILE* yyget_in(yyscan_t yyscanner); +void yyset_debug ( int debug_flag , yyscan_t yyscanner ); -void yyset_in(FILE* _in_str, yyscan_t yyscanner); +YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); -FILE* yyget_out(yyscan_t yyscanner); +void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); -void yyset_out(FILE* _out_str, yyscan_t yyscanner); +FILE *yyget_in ( yyscan_t yyscanner ); -int yyget_leng(yyscan_t yyscanner); +void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); -char* yyget_text(yyscan_t yyscanner); +FILE *yyget_out ( yyscan_t yyscanner ); -int yyget_lineno(yyscan_t yyscanner); +void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); -void yyset_lineno(int _line_number, yyscan_t yyscanner); + int yyget_leng ( yyscan_t yyscanner ); -int yyget_column(yyscan_t yyscanner); +char *yyget_text ( yyscan_t yyscanner ); -void yyset_column(int _column_no, yyscan_t yyscanner); +int yyget_lineno ( yyscan_t yyscanner ); -YYSTYPE* yyget_lval(yyscan_t yyscanner); +void yyset_lineno ( int _line_number , yyscan_t yyscanner ); -void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner); +int yyget_column ( yyscan_t yyscanner ); -YYLTYPE* yyget_lloc(yyscan_t yyscanner); +void yyset_column ( int _column_no , yyscan_t yyscanner ); -void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner); +YYSTYPE * yyget_lval ( yyscan_t yyscanner ); +void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); + + YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); + + void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); + /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap(yyscan_t yyscanner); +extern "C" int yywrap ( yyscan_t yyscanner ); #else -extern int yywrap(yyscan_t yyscanner); +extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT - + #endif #ifndef yytext_ptr -static void yy_flex_strncpy(char*, const char*, int, yyscan_t yyscanner); +static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen(const char*, yyscan_t yyscanner); +static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus -static int yyinput(yyscan_t yyscanner); +static int yyinput ( yyscan_t yyscanner ); #else -static int input(yyscan_t yyscanner); +static int input ( yyscan_t yyscanner ); #endif #endif @@ -2303,36 +3232,42 @@ static int input(yyscan_t yyscanner); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO \ - do { \ - if (fwrite(yytext, (size_t)yyleng, 1, yyout)) { \ - } \ - } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT -#define YY_INPUT(buf, result, max_size) \ - if (YY_CURRENT_BUFFER_LVALUE->yy_is_interactive) { \ - int c = '*'; \ - int n; \ - for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\n'; ++n) buf[n] = (char)c; \ - if (c == '\n') buf[n++] = (char)c; \ - if (c == EOF && ferror(yyin)) YY_FATAL_ERROR("input in flex scanner failed"); \ - result = n; \ - } else { \ - errno = 0; \ - while ((result = (int)fread(buf, 1, (yy_size_t)max_size, yyin)) == 0 && ferror(yyin)) { \ - if (errno != EINTR) { \ - YY_FATAL_ERROR("input in flex scanner failed"); \ - break; \ - } \ - errno = 0; \ - clearerr(yyin); \ - } \ - } +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ #endif @@ -2351,7 +3286,7 @@ static int input(yyscan_t yyscanner); /* Report a fatal error. */ #ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error(msg, yyscanner) +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ @@ -2362,9 +3297,11 @@ static int input(yyscan_t yyscanner); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner); +extern int yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); -#define YY_DECL int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner) +#define YY_DECL int yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng @@ -2376,1092 +3313,1088 @@ extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanne /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/ break; +#define YY_BREAK /*LINTED*/break; #endif -#define YY_RULE_SETUP YY_USER_ACTION +#define YY_RULE_SETUP \ + YY_USER_ACTION /** The main scanner function which does all the work. */ -YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yylval = yylval_param; + yylval = yylval_param; - yylloc = yylloc_param; + yylloc = yylloc_param; - if (!yyg->yy_init) { - yyg->yy_init = 1; + if ( !yyg->yy_init ) + { + yyg->yy_init = 1; #ifdef YY_USER_INIT - YY_USER_INIT; + YY_USER_INIT; #endif - if (!yyg->yy_start) yyg->yy_start = 1; /* first start state */ + if ( ! yyg->yy_start ) + yyg->yy_start = 1; /* first start state */ - if (!yyin) yyin = stdin; + if ( ! yyin ) + yyin = stdin; - if (!yyout) yyout = stdout; + if ( ! yyout ) + yyout = stdout; - if (!YY_CURRENT_BUFFER) { - yyensure_buffer_stack(yyscanner); - YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); - } + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); + } - yy_load_buffer_state(yyscanner); - } + yy_load_buffer_state( yyscanner ); + } - { + { #line 57 "flex_lexer.l" + #line 3365 "flex_lexer.cpp" - while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; - /* yy_bp points to the position in yy_ch_buf of the start of + /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; - yy_match: - do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if (yy_accept[yy_current_state]) { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1332) yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } while (yy_current_state != 1331); - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - - yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - - do_action: /* This label is used only to access EOF actions. */ - - switch (yy_act) { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - - case 1: - YY_RULE_SETUP + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; +yy_match: + do + { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } + while ( yy_current_state != 1331 ); + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP #line 59 "flex_lexer.l" - BEGIN(COMMENT); - YY_BREAK - case 2: - YY_RULE_SETUP +BEGIN(COMMENT); + YY_BREAK +case 2: +YY_RULE_SETUP #line 60 "flex_lexer.l" - /* skipping comment content until a end of line is read */; - YY_BREAK - case 3: - /* rule 3 can match eol */ - YY_RULE_SETUP +/* skipping comment content until a end of line is read */; + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP #line 61 "flex_lexer.l" - BEGIN(INITIAL); - YY_BREAK - case 4: - /* rule 4 can match eol */ - YY_RULE_SETUP +BEGIN(INITIAL); + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP #line 63 "flex_lexer.l" - /* skip whitespace */; - YY_BREAK - case 5: - YY_RULE_SETUP +/* skip whitespace */; + YY_BREAK +case 5: +YY_RULE_SETUP #line 65 "flex_lexer.l" - TOKEN(ADD) - YY_BREAK - case 6: - YY_RULE_SETUP +TOKEN(ADD) + YY_BREAK +case 6: +YY_RULE_SETUP #line 66 "flex_lexer.l" - TOKEN(AFTER) - YY_BREAK - case 7: - YY_RULE_SETUP +TOKEN(AFTER) + YY_BREAK +case 7: +YY_RULE_SETUP #line 67 "flex_lexer.l" - TOKEN(ALL) - YY_BREAK - case 8: - YY_RULE_SETUP +TOKEN(ALL) + YY_BREAK +case 8: +YY_RULE_SETUP #line 68 "flex_lexer.l" - TOKEN(ALTER) - YY_BREAK - case 9: - YY_RULE_SETUP +TOKEN(ALTER) + YY_BREAK +case 9: +YY_RULE_SETUP #line 69 "flex_lexer.l" - TOKEN(ANALYZE) - YY_BREAK - case 10: - YY_RULE_SETUP +TOKEN(ANALYZE) + YY_BREAK +case 10: +YY_RULE_SETUP #line 70 "flex_lexer.l" - TOKEN(AND) - YY_BREAK - case 11: - YY_RULE_SETUP +TOKEN(AND) + YY_BREAK +case 11: +YY_RULE_SETUP #line 71 "flex_lexer.l" - TOKEN(ARRAY) - YY_BREAK - case 12: - YY_RULE_SETUP +TOKEN(ARRAY) + YY_BREAK +case 12: +YY_RULE_SETUP #line 72 "flex_lexer.l" - TOKEN(AS) - YY_BREAK - case 13: - YY_RULE_SETUP +TOKEN(AS) + YY_BREAK +case 13: +YY_RULE_SETUP #line 73 "flex_lexer.l" - TOKEN(ASC) - YY_BREAK - case 14: - YY_RULE_SETUP +TOKEN(ASC) + YY_BREAK +case 14: +YY_RULE_SETUP #line 74 "flex_lexer.l" - TOKEN(BEFORE) - YY_BREAK - case 15: - YY_RULE_SETUP +TOKEN(BEFORE) + YY_BREAK +case 15: +YY_RULE_SETUP #line 75 "flex_lexer.l" - TOKEN(BEGIN) - YY_BREAK - case 16: - YY_RULE_SETUP +TOKEN(BEGIN) + YY_BREAK +case 16: +YY_RULE_SETUP #line 76 "flex_lexer.l" - TOKEN(BETWEEN) - YY_BREAK - case 17: - YY_RULE_SETUP +TOKEN(BETWEEN) + YY_BREAK +case 17: +YY_RULE_SETUP #line 77 "flex_lexer.l" - TOKEN(BIGINT) - YY_BREAK - case 18: - YY_RULE_SETUP +TOKEN(BIGINT) + YY_BREAK +case 18: +YY_RULE_SETUP #line 78 "flex_lexer.l" - TOKEN(BOOLEAN) - YY_BREAK - case 19: - YY_RULE_SETUP +TOKEN(BOOLEAN) + YY_BREAK +case 19: +YY_RULE_SETUP #line 79 "flex_lexer.l" - TOKEN(BY) - YY_BREAK - case 20: - YY_RULE_SETUP +TOKEN(BY) + YY_BREAK +case 20: +YY_RULE_SETUP #line 80 "flex_lexer.l" - TOKEN(CALL) - YY_BREAK - case 21: - YY_RULE_SETUP +TOKEN(CALL) + YY_BREAK +case 21: +YY_RULE_SETUP #line 81 "flex_lexer.l" - TOKEN(CASCADE) - YY_BREAK - case 22: - YY_RULE_SETUP +TOKEN(CASCADE) + YY_BREAK +case 22: +YY_RULE_SETUP #line 82 "flex_lexer.l" - TOKEN(CASE) - YY_BREAK - case 23: - YY_RULE_SETUP +TOKEN(CASE) + YY_BREAK +case 23: +YY_RULE_SETUP #line 83 "flex_lexer.l" - TOKEN(CAST) - YY_BREAK - case 24: - YY_RULE_SETUP +TOKEN(CAST) + YY_BREAK +case 24: +YY_RULE_SETUP #line 84 "flex_lexer.l" - TOKEN(CHAR) - YY_BREAK - case 25: - YY_RULE_SETUP +TOKEN(CHAR) + YY_BREAK +case 25: +YY_RULE_SETUP #line 85 "flex_lexer.l" - TOKEN(COLUMN) - YY_BREAK - case 26: - YY_RULE_SETUP +TOKEN(COLUMN) + YY_BREAK +case 26: +YY_RULE_SETUP #line 86 "flex_lexer.l" - TOKEN(COLUMNS) - YY_BREAK - case 27: - YY_RULE_SETUP +TOKEN(COLUMNS) + YY_BREAK +case 27: +YY_RULE_SETUP #line 87 "flex_lexer.l" - TOKEN(COMMIT) - YY_BREAK - case 28: - YY_RULE_SETUP +TOKEN(COMMIT) + YY_BREAK +case 28: +YY_RULE_SETUP #line 88 "flex_lexer.l" - TOKEN(CONTROL) - YY_BREAK - case 29: - YY_RULE_SETUP +TOKEN(CONTROL) + YY_BREAK +case 29: +YY_RULE_SETUP #line 89 "flex_lexer.l" - TOKEN(COPY) - YY_BREAK - case 30: - YY_RULE_SETUP +TOKEN(COPY) + YY_BREAK +case 30: +YY_RULE_SETUP #line 90 "flex_lexer.l" - TOKEN(CREATE) - YY_BREAK - case 31: - YY_RULE_SETUP +TOKEN(CREATE) + YY_BREAK +case 31: +YY_RULE_SETUP #line 91 "flex_lexer.l" - TOKEN(CROSS) - YY_BREAK - case 32: - YY_RULE_SETUP +TOKEN(CROSS) + YY_BREAK +case 32: +YY_RULE_SETUP #line 92 "flex_lexer.l" - TOKEN(DATE) - YY_BREAK - case 33: - YY_RULE_SETUP +TOKEN(DATE) + YY_BREAK +case 33: +YY_RULE_SETUP #line 93 "flex_lexer.l" - TOKEN(DATETIME) - YY_BREAK - case 34: - YY_RULE_SETUP +TOKEN(DATETIME) + YY_BREAK +case 34: +YY_RULE_SETUP #line 94 "flex_lexer.l" - TOKEN(DAY) - YY_BREAK - case 35: - YY_RULE_SETUP +TOKEN(DAY) + YY_BREAK +case 35: +YY_RULE_SETUP #line 95 "flex_lexer.l" - TOKEN(DAYS) - YY_BREAK - case 36: - YY_RULE_SETUP +TOKEN(DAYS) + YY_BREAK +case 36: +YY_RULE_SETUP #line 96 "flex_lexer.l" - TOKEN(DEALLOCATE) - YY_BREAK - case 37: - YY_RULE_SETUP +TOKEN(DEALLOCATE) + YY_BREAK +case 37: +YY_RULE_SETUP #line 97 "flex_lexer.l" - TOKEN(DECIMAL) - YY_BREAK - case 38: - YY_RULE_SETUP +TOKEN(DECIMAL) + YY_BREAK +case 38: +YY_RULE_SETUP #line 98 "flex_lexer.l" - TOKEN(DEFAULT) - YY_BREAK - case 39: - YY_RULE_SETUP +TOKEN(DEFAULT) + YY_BREAK +case 39: +YY_RULE_SETUP #line 99 "flex_lexer.l" - TOKEN(DELETE) - YY_BREAK - case 40: - YY_RULE_SETUP +TOKEN(DELETE) + YY_BREAK +case 40: +YY_RULE_SETUP #line 100 "flex_lexer.l" - TOKEN(DELTA) - YY_BREAK - case 41: - YY_RULE_SETUP +TOKEN(DELTA) + YY_BREAK +case 41: +YY_RULE_SETUP #line 101 "flex_lexer.l" - TOKEN(DESC) - YY_BREAK - case 42: - YY_RULE_SETUP +TOKEN(DESC) + YY_BREAK +case 42: +YY_RULE_SETUP #line 102 "flex_lexer.l" - TOKEN(DESCRIBE) - YY_BREAK - case 43: - YY_RULE_SETUP +TOKEN(DESCRIBE) + YY_BREAK +case 43: +YY_RULE_SETUP #line 103 "flex_lexer.l" - TOKEN(DIRECT) - YY_BREAK - case 44: - YY_RULE_SETUP +TOKEN(DIRECT) + YY_BREAK +case 44: +YY_RULE_SETUP #line 104 "flex_lexer.l" - TOKEN(DISTINCT) - YY_BREAK - case 45: - YY_RULE_SETUP +TOKEN(DISTINCT) + YY_BREAK +case 45: +YY_RULE_SETUP #line 105 "flex_lexer.l" - TOKEN(DOUBLE) - YY_BREAK - case 46: - YY_RULE_SETUP +TOKEN(DOUBLE) + YY_BREAK +case 46: +YY_RULE_SETUP #line 106 "flex_lexer.l" - TOKEN(DROP) - YY_BREAK - case 47: - YY_RULE_SETUP +TOKEN(DROP) + YY_BREAK +case 47: +YY_RULE_SETUP #line 107 "flex_lexer.l" - TOKEN(ELSE) - YY_BREAK - case 48: - YY_RULE_SETUP +TOKEN(ELSE) + YY_BREAK +case 48: +YY_RULE_SETUP #line 108 "flex_lexer.l" - TOKEN(END) - YY_BREAK - case 49: - YY_RULE_SETUP +TOKEN(END) + YY_BREAK +case 49: +YY_RULE_SETUP #line 109 "flex_lexer.l" - TOKEN(ESCAPE) - YY_BREAK - case 50: - YY_RULE_SETUP +TOKEN(ESCAPE) + YY_BREAK +case 50: +YY_RULE_SETUP #line 110 "flex_lexer.l" - TOKEN(EXCEPT) - YY_BREAK - case 51: - YY_RULE_SETUP +TOKEN(EXCEPT) + YY_BREAK +case 51: +YY_RULE_SETUP #line 111 "flex_lexer.l" - TOKEN(EXECUTE) - YY_BREAK - case 52: - YY_RULE_SETUP +TOKEN(EXECUTE) + YY_BREAK +case 52: +YY_RULE_SETUP #line 112 "flex_lexer.l" - TOKEN(EXISTS) - YY_BREAK - case 53: - YY_RULE_SETUP +TOKEN(EXISTS) + YY_BREAK +case 53: +YY_RULE_SETUP #line 113 "flex_lexer.l" - TOKEN(EXPLAIN) - YY_BREAK - case 54: - YY_RULE_SETUP +TOKEN(EXPLAIN) + YY_BREAK +case 54: +YY_RULE_SETUP #line 114 "flex_lexer.l" - TOKEN(EXTRACT) - YY_BREAK - case 55: - YY_RULE_SETUP +TOKEN(EXTRACT) + YY_BREAK +case 55: +YY_RULE_SETUP #line 115 "flex_lexer.l" - TOKEN(FALSE) - YY_BREAK - case 56: - YY_RULE_SETUP +TOKEN(FALSE) + YY_BREAK +case 56: +YY_RULE_SETUP #line 116 "flex_lexer.l" - TOKEN(FILE) - YY_BREAK - case 57: - YY_RULE_SETUP +TOKEN(FILE) + YY_BREAK +case 57: +YY_RULE_SETUP #line 117 "flex_lexer.l" - TOKEN(FLOAT) - YY_BREAK - case 58: - YY_RULE_SETUP +TOKEN(FLOAT) + YY_BREAK +case 58: +YY_RULE_SETUP #line 118 "flex_lexer.l" - TOKEN(FOLLOWING) - YY_BREAK - case 59: - YY_RULE_SETUP +TOKEN(FOLLOWING) + YY_BREAK +case 59: +YY_RULE_SETUP #line 119 "flex_lexer.l" - TOKEN(FOR) - YY_BREAK - case 60: - YY_RULE_SETUP +TOKEN(FOR) + YY_BREAK +case 60: +YY_RULE_SETUP #line 120 "flex_lexer.l" - TOKEN(FORMAT) - YY_BREAK - case 61: - YY_RULE_SETUP +TOKEN(FORMAT) + YY_BREAK +case 61: +YY_RULE_SETUP #line 121 "flex_lexer.l" - TOKEN(FROM) - YY_BREAK - case 62: - YY_RULE_SETUP +TOKEN(FROM) + YY_BREAK +case 62: +YY_RULE_SETUP #line 122 "flex_lexer.l" - TOKEN(FULL) - YY_BREAK - case 63: - YY_RULE_SETUP +TOKEN(FULL) + YY_BREAK +case 63: +YY_RULE_SETUP #line 123 "flex_lexer.l" - TOKEN(GLOBAL) - YY_BREAK - case 64: - YY_RULE_SETUP +TOKEN(GLOBAL) + YY_BREAK +case 64: +YY_RULE_SETUP #line 124 "flex_lexer.l" - TOKEN(GROUP) - YY_BREAK - case 65: - YY_RULE_SETUP +TOKEN(GROUP) + YY_BREAK +case 65: +YY_RULE_SETUP #line 125 "flex_lexer.l" - TOKEN(GROUPS) - YY_BREAK - case 66: - YY_RULE_SETUP +TOKEN(GROUPS) + YY_BREAK +case 66: +YY_RULE_SETUP #line 126 "flex_lexer.l" - TOKEN(HASH) - YY_BREAK - case 67: - YY_RULE_SETUP +TOKEN(HASH) + YY_BREAK +case 67: +YY_RULE_SETUP #line 127 "flex_lexer.l" - TOKEN(HAVING) - YY_BREAK - case 68: - YY_RULE_SETUP +TOKEN(HAVING) + YY_BREAK +case 68: +YY_RULE_SETUP #line 128 "flex_lexer.l" - TOKEN(HINT) - YY_BREAK - case 69: - YY_RULE_SETUP +TOKEN(HINT) + YY_BREAK +case 69: +YY_RULE_SETUP #line 129 "flex_lexer.l" - TOKEN(HOUR) - YY_BREAK - case 70: - YY_RULE_SETUP +TOKEN(HOUR) + YY_BREAK +case 70: +YY_RULE_SETUP #line 130 "flex_lexer.l" - TOKEN(HOURS) - YY_BREAK - case 71: - YY_RULE_SETUP +TOKEN(HOURS) + YY_BREAK +case 71: +YY_RULE_SETUP #line 131 "flex_lexer.l" - TOKEN(IF) - YY_BREAK - case 72: - YY_RULE_SETUP +TOKEN(IF) + YY_BREAK +case 72: +YY_RULE_SETUP #line 132 "flex_lexer.l" - TOKEN(ILIKE) - YY_BREAK - case 73: - YY_RULE_SETUP +TOKEN(ILIKE) + YY_BREAK +case 73: +YY_RULE_SETUP #line 133 "flex_lexer.l" - TOKEN(IMPORT) - YY_BREAK - case 74: - YY_RULE_SETUP +TOKEN(IMPORT) + YY_BREAK +case 74: +YY_RULE_SETUP #line 134 "flex_lexer.l" - TOKEN(IN) - YY_BREAK - case 75: - YY_RULE_SETUP +TOKEN(IN) + YY_BREAK +case 75: +YY_RULE_SETUP #line 135 "flex_lexer.l" - TOKEN(INDEX) - YY_BREAK - case 76: - YY_RULE_SETUP +TOKEN(INDEX) + YY_BREAK +case 76: +YY_RULE_SETUP #line 136 "flex_lexer.l" - TOKEN(INNER) - YY_BREAK - case 77: - YY_RULE_SETUP +TOKEN(INNER) + YY_BREAK +case 77: +YY_RULE_SETUP #line 137 "flex_lexer.l" - TOKEN(INSERT) - YY_BREAK - case 78: - YY_RULE_SETUP +TOKEN(INSERT) + YY_BREAK +case 78: +YY_RULE_SETUP #line 138 "flex_lexer.l" - TOKEN(INT) - YY_BREAK - case 79: - YY_RULE_SETUP +TOKEN(INT) + YY_BREAK +case 79: +YY_RULE_SETUP #line 139 "flex_lexer.l" - TOKEN(INTEGER) - YY_BREAK - case 80: - YY_RULE_SETUP +TOKEN(INTEGER) + YY_BREAK +case 80: +YY_RULE_SETUP #line 140 "flex_lexer.l" - TOKEN(INTERSECT) - YY_BREAK - case 81: - YY_RULE_SETUP +TOKEN(INTERSECT) + YY_BREAK +case 81: +YY_RULE_SETUP #line 141 "flex_lexer.l" - TOKEN(INTERVAL) - YY_BREAK - case 82: - YY_RULE_SETUP +TOKEN(INTERVAL) + YY_BREAK +case 82: +YY_RULE_SETUP #line 142 "flex_lexer.l" - TOKEN(INTO) - YY_BREAK - case 83: - YY_RULE_SETUP +TOKEN(INTO) + YY_BREAK +case 83: +YY_RULE_SETUP #line 143 "flex_lexer.l" - TOKEN(IS) - YY_BREAK - case 84: - YY_RULE_SETUP +TOKEN(IS) + YY_BREAK +case 84: +YY_RULE_SETUP #line 144 "flex_lexer.l" - TOKEN(ISNULL) - YY_BREAK - case 85: - YY_RULE_SETUP +TOKEN(ISNULL) + YY_BREAK +case 85: +YY_RULE_SETUP #line 145 "flex_lexer.l" - TOKEN(JOIN) - YY_BREAK - case 86: - YY_RULE_SETUP +TOKEN(JOIN) + YY_BREAK +case 86: +YY_RULE_SETUP #line 146 "flex_lexer.l" - TOKEN(KEY) - YY_BREAK - case 87: - YY_RULE_SETUP +TOKEN(KEY) + YY_BREAK +case 87: +YY_RULE_SETUP #line 147 "flex_lexer.l" - TOKEN(LEFT) - YY_BREAK - case 88: - YY_RULE_SETUP +TOKEN(LEFT) + YY_BREAK +case 88: +YY_RULE_SETUP #line 148 "flex_lexer.l" - TOKEN(LIKE) - YY_BREAK - case 89: - YY_RULE_SETUP +TOKEN(LIKE) + YY_BREAK +case 89: +YY_RULE_SETUP #line 149 "flex_lexer.l" - TOKEN(LIMIT) - YY_BREAK - case 90: - YY_RULE_SETUP +TOKEN(LIMIT) + YY_BREAK +case 90: +YY_RULE_SETUP #line 150 "flex_lexer.l" - TOKEN(LOAD) - YY_BREAK - case 91: - YY_RULE_SETUP +TOKEN(LOAD) + YY_BREAK +case 91: +YY_RULE_SETUP #line 151 "flex_lexer.l" - TOKEN(LOCAL) - YY_BREAK - case 92: - YY_RULE_SETUP +TOKEN(LOCAL) + YY_BREAK +case 92: +YY_RULE_SETUP #line 152 "flex_lexer.l" - TOKEN(LOCKED) - YY_BREAK - case 93: - YY_RULE_SETUP +TOKEN(LOCKED) + YY_BREAK +case 93: +YY_RULE_SETUP #line 153 "flex_lexer.l" - TOKEN(LONG) - YY_BREAK - case 94: - YY_RULE_SETUP +TOKEN(LONG) + YY_BREAK +case 94: +YY_RULE_SETUP #line 154 "flex_lexer.l" - TOKEN(MERGE) - YY_BREAK - case 95: - YY_RULE_SETUP +TOKEN(MERGE) + YY_BREAK +case 95: +YY_RULE_SETUP #line 155 "flex_lexer.l" - TOKEN(MINUS) - YY_BREAK - case 96: - YY_RULE_SETUP +TOKEN(MINUS) + YY_BREAK +case 96: +YY_RULE_SETUP #line 156 "flex_lexer.l" - TOKEN(MINUTE) - YY_BREAK - case 97: - YY_RULE_SETUP +TOKEN(MINUTE) + YY_BREAK +case 97: +YY_RULE_SETUP #line 157 "flex_lexer.l" - TOKEN(MINUTES) - YY_BREAK - case 98: - YY_RULE_SETUP +TOKEN(MINUTES) + YY_BREAK +case 98: +YY_RULE_SETUP #line 158 "flex_lexer.l" - TOKEN(MONTH) - YY_BREAK - case 99: - YY_RULE_SETUP +TOKEN(MONTH) + YY_BREAK +case 99: +YY_RULE_SETUP #line 159 "flex_lexer.l" - TOKEN(MONTHS) - YY_BREAK - case 100: - YY_RULE_SETUP +TOKEN(MONTHS) + YY_BREAK +case 100: +YY_RULE_SETUP #line 160 "flex_lexer.l" - TOKEN(NATURAL) - YY_BREAK - case 101: - YY_RULE_SETUP +TOKEN(NATURAL) + YY_BREAK +case 101: +YY_RULE_SETUP #line 161 "flex_lexer.l" - TOKEN(NO) - YY_BREAK - case 102: - YY_RULE_SETUP +TOKEN(NO) + YY_BREAK +case 102: +YY_RULE_SETUP #line 162 "flex_lexer.l" - TOKEN(NOT) - YY_BREAK - case 103: - YY_RULE_SETUP +TOKEN(NOT) + YY_BREAK +case 103: +YY_RULE_SETUP #line 163 "flex_lexer.l" - TOKEN(NOWAIT) - YY_BREAK - case 104: - YY_RULE_SETUP +TOKEN(NOWAIT) + YY_BREAK +case 104: +YY_RULE_SETUP #line 164 "flex_lexer.l" - TOKEN(NULL) - YY_BREAK - case 105: - YY_RULE_SETUP +TOKEN(NULL) + YY_BREAK +case 105: +YY_RULE_SETUP #line 165 "flex_lexer.l" - TOKEN(NVARCHAR) - YY_BREAK - case 106: - YY_RULE_SETUP +TOKEN(NVARCHAR) + YY_BREAK +case 106: +YY_RULE_SETUP #line 166 "flex_lexer.l" - TOKEN(OF) - YY_BREAK - case 107: - YY_RULE_SETUP +TOKEN(OF) + YY_BREAK +case 107: +YY_RULE_SETUP #line 167 "flex_lexer.l" - TOKEN(OFF) - YY_BREAK - case 108: - YY_RULE_SETUP +TOKEN(OFF) + YY_BREAK +case 108: +YY_RULE_SETUP #line 168 "flex_lexer.l" - TOKEN(OFFSET) - YY_BREAK - case 109: - YY_RULE_SETUP +TOKEN(OFFSET) + YY_BREAK +case 109: +YY_RULE_SETUP #line 169 "flex_lexer.l" - TOKEN(ON) - YY_BREAK - case 110: - YY_RULE_SETUP +TOKEN(ON) + YY_BREAK +case 110: +YY_RULE_SETUP #line 170 "flex_lexer.l" - TOKEN(OR) - YY_BREAK - case 111: - YY_RULE_SETUP +TOKEN(OR) + YY_BREAK +case 111: +YY_RULE_SETUP #line 171 "flex_lexer.l" - TOKEN(ORDER) - YY_BREAK - case 112: - YY_RULE_SETUP +TOKEN(ORDER) + YY_BREAK +case 112: +YY_RULE_SETUP #line 172 "flex_lexer.l" - TOKEN(OUTER) - YY_BREAK - case 113: - YY_RULE_SETUP +TOKEN(OUTER) + YY_BREAK +case 113: +YY_RULE_SETUP #line 173 "flex_lexer.l" - TOKEN(OVER) - YY_BREAK - case 114: - YY_RULE_SETUP +TOKEN(OVER) + YY_BREAK +case 114: +YY_RULE_SETUP #line 174 "flex_lexer.l" - TOKEN(PARAMETERS) - YY_BREAK - case 115: - YY_RULE_SETUP +TOKEN(PARAMETERS) + YY_BREAK +case 115: +YY_RULE_SETUP #line 175 "flex_lexer.l" - TOKEN(PARTITION) - YY_BREAK - case 116: - YY_RULE_SETUP +TOKEN(PARTITION) + YY_BREAK +case 116: +YY_RULE_SETUP #line 176 "flex_lexer.l" - TOKEN(PLAN) - YY_BREAK - case 117: - YY_RULE_SETUP +TOKEN(PLAN) + YY_BREAK +case 117: +YY_RULE_SETUP #line 177 "flex_lexer.l" - TOKEN(PRECEDING) - YY_BREAK - case 118: - YY_RULE_SETUP +TOKEN(PRECEDING) + YY_BREAK +case 118: +YY_RULE_SETUP #line 178 "flex_lexer.l" - TOKEN(PREPARE) - YY_BREAK - case 119: - YY_RULE_SETUP +TOKEN(PREPARE) + YY_BREAK +case 119: +YY_RULE_SETUP #line 179 "flex_lexer.l" - TOKEN(PRIMARY) - YY_BREAK - case 120: - YY_RULE_SETUP +TOKEN(PRIMARY) + YY_BREAK +case 120: +YY_RULE_SETUP #line 180 "flex_lexer.l" - TOKEN(RANGE) - YY_BREAK - case 121: - YY_RULE_SETUP +TOKEN(RANGE) + YY_BREAK +case 121: +YY_RULE_SETUP #line 181 "flex_lexer.l" - TOKEN(REAL) - YY_BREAK - case 122: - YY_RULE_SETUP +TOKEN(REAL) + YY_BREAK +case 122: +YY_RULE_SETUP #line 182 "flex_lexer.l" - TOKEN(RENAME) - YY_BREAK - case 123: - YY_RULE_SETUP +TOKEN(RENAME) + YY_BREAK +case 123: +YY_RULE_SETUP #line 183 "flex_lexer.l" - TOKEN(RESTRICT) - YY_BREAK - case 124: - YY_RULE_SETUP +TOKEN(RESTRICT) + YY_BREAK +case 124: +YY_RULE_SETUP #line 184 "flex_lexer.l" - TOKEN(RIGHT) - YY_BREAK - case 125: - YY_RULE_SETUP +TOKEN(RIGHT) + YY_BREAK +case 125: +YY_RULE_SETUP #line 185 "flex_lexer.l" - TOKEN(ROLLBACK) - YY_BREAK - case 126: - YY_RULE_SETUP +TOKEN(ROLLBACK) + YY_BREAK +case 126: +YY_RULE_SETUP #line 186 "flex_lexer.l" - TOKEN(ROWS) - YY_BREAK - case 127: - YY_RULE_SETUP +TOKEN(ROWS) + YY_BREAK +case 127: +YY_RULE_SETUP #line 187 "flex_lexer.l" - TOKEN(SCHEMA) - YY_BREAK - case 128: - YY_RULE_SETUP +TOKEN(SCHEMA) + YY_BREAK +case 128: +YY_RULE_SETUP #line 188 "flex_lexer.l" - TOKEN(SCHEMAS) - YY_BREAK - case 129: - YY_RULE_SETUP +TOKEN(SCHEMAS) + YY_BREAK +case 129: +YY_RULE_SETUP #line 189 "flex_lexer.l" - TOKEN(SECOND) - YY_BREAK - case 130: - YY_RULE_SETUP +TOKEN(SECOND) + YY_BREAK +case 130: +YY_RULE_SETUP #line 190 "flex_lexer.l" - TOKEN(SECONDS) - YY_BREAK - case 131: - YY_RULE_SETUP +TOKEN(SECONDS) + YY_BREAK +case 131: +YY_RULE_SETUP #line 191 "flex_lexer.l" - TOKEN(SELECT) - YY_BREAK - case 132: - YY_RULE_SETUP +TOKEN(SELECT) + YY_BREAK +case 132: +YY_RULE_SETUP #line 192 "flex_lexer.l" - TOKEN(SET) - YY_BREAK - case 133: - YY_RULE_SETUP +TOKEN(SET) + YY_BREAK +case 133: +YY_RULE_SETUP #line 193 "flex_lexer.l" - TOKEN(SHARE) - YY_BREAK - case 134: - YY_RULE_SETUP +TOKEN(SHARE) + YY_BREAK +case 134: +YY_RULE_SETUP #line 194 "flex_lexer.l" - TOKEN(SHOW) - YY_BREAK - case 135: - YY_RULE_SETUP +TOKEN(SHOW) + YY_BREAK +case 135: +YY_RULE_SETUP #line 195 "flex_lexer.l" - TOKEN(SKIP) - YY_BREAK - case 136: - YY_RULE_SETUP +TOKEN(SKIP) + YY_BREAK +case 136: +YY_RULE_SETUP #line 196 "flex_lexer.l" - TOKEN(SMALLINT) - YY_BREAK - case 137: - YY_RULE_SETUP +TOKEN(SMALLINT) + YY_BREAK +case 137: +YY_RULE_SETUP #line 197 "flex_lexer.l" - TOKEN(SORTED) - YY_BREAK - case 138: - YY_RULE_SETUP +TOKEN(SORTED) + YY_BREAK +case 138: +YY_RULE_SETUP #line 198 "flex_lexer.l" - TOKEN(SPATIAL) - YY_BREAK - case 139: - YY_RULE_SETUP +TOKEN(SPATIAL) + YY_BREAK +case 139: +YY_RULE_SETUP #line 199 "flex_lexer.l" - TOKEN(TABLE) - YY_BREAK - case 140: - YY_RULE_SETUP +TOKEN(TABLE) + YY_BREAK +case 140: +YY_RULE_SETUP #line 200 "flex_lexer.l" - TOKEN(TABLES) - YY_BREAK - case 141: - YY_RULE_SETUP +TOKEN(TABLES) + YY_BREAK +case 141: +YY_RULE_SETUP #line 201 "flex_lexer.l" - TOKEN(TEMPORARY) - YY_BREAK - case 142: - YY_RULE_SETUP +TOKEN(TEMPORARY) + YY_BREAK +case 142: +YY_RULE_SETUP #line 202 "flex_lexer.l" - TOKEN(TEXT) - YY_BREAK - case 143: - YY_RULE_SETUP +TOKEN(TEXT) + YY_BREAK +case 143: +YY_RULE_SETUP #line 203 "flex_lexer.l" - TOKEN(THEN) - YY_BREAK - case 144: - YY_RULE_SETUP +TOKEN(THEN) + YY_BREAK +case 144: +YY_RULE_SETUP #line 204 "flex_lexer.l" - TOKEN(TIME) - YY_BREAK - case 145: - YY_RULE_SETUP +TOKEN(TIME) + YY_BREAK +case 145: +YY_RULE_SETUP #line 205 "flex_lexer.l" - TOKEN(TIMESTAMP) - YY_BREAK - case 146: - YY_RULE_SETUP +TOKEN(TIMESTAMP) + YY_BREAK +case 146: +YY_RULE_SETUP #line 206 "flex_lexer.l" - TOKEN(TO) - YY_BREAK - case 147: - YY_RULE_SETUP +TOKEN(TO) + YY_BREAK +case 147: +YY_RULE_SETUP #line 207 "flex_lexer.l" - TOKEN(TOP) - YY_BREAK - case 148: - YY_RULE_SETUP +TOKEN(TOP) + YY_BREAK +case 148: +YY_RULE_SETUP #line 208 "flex_lexer.l" - TOKEN(TRANSACTION) - YY_BREAK - case 149: - YY_RULE_SETUP +TOKEN(TRANSACTION) + YY_BREAK +case 149: +YY_RULE_SETUP #line 209 "flex_lexer.l" - TOKEN(TRUE) - YY_BREAK - case 150: - YY_RULE_SETUP +TOKEN(TRUE) + YY_BREAK +case 150: +YY_RULE_SETUP #line 210 "flex_lexer.l" - TOKEN(TRUNCATE) - YY_BREAK - case 151: - YY_RULE_SETUP +TOKEN(TRUNCATE) + YY_BREAK +case 151: +YY_RULE_SETUP #line 211 "flex_lexer.l" - TOKEN(UNBOUNDED) - YY_BREAK - case 152: - YY_RULE_SETUP +TOKEN(UNBOUNDED) + YY_BREAK +case 152: +YY_RULE_SETUP #line 212 "flex_lexer.l" - TOKEN(UNION) - YY_BREAK - case 153: - YY_RULE_SETUP +TOKEN(UNION) + YY_BREAK +case 153: +YY_RULE_SETUP #line 213 "flex_lexer.l" - TOKEN(UNIQUE) - YY_BREAK - case 154: - YY_RULE_SETUP +TOKEN(UNIQUE) + YY_BREAK +case 154: +YY_RULE_SETUP #line 214 "flex_lexer.l" - TOKEN(UNLOAD) - YY_BREAK - case 155: - YY_RULE_SETUP +TOKEN(UNLOAD) + YY_BREAK +case 155: +YY_RULE_SETUP #line 215 "flex_lexer.l" - TOKEN(UPDATE) - YY_BREAK - case 156: - YY_RULE_SETUP +TOKEN(UPDATE) + YY_BREAK +case 156: +YY_RULE_SETUP #line 216 "flex_lexer.l" - TOKEN(USING) - YY_BREAK - case 157: - YY_RULE_SETUP +TOKEN(USING) + YY_BREAK +case 157: +YY_RULE_SETUP #line 217 "flex_lexer.l" - TOKEN(VALUES) - YY_BREAK - case 158: - YY_RULE_SETUP +TOKEN(VALUES) + YY_BREAK +case 158: +YY_RULE_SETUP #line 218 "flex_lexer.l" - TOKEN(VARCHAR) - YY_BREAK - case 159: - YY_RULE_SETUP +TOKEN(VARCHAR) + YY_BREAK +case 159: +YY_RULE_SETUP #line 219 "flex_lexer.l" - TOKEN(VIEW) - YY_BREAK - case 160: - YY_RULE_SETUP +TOKEN(VIEW) + YY_BREAK +case 160: +YY_RULE_SETUP #line 220 "flex_lexer.l" - TOKEN(VIRTUAL) - YY_BREAK - case 161: - YY_RULE_SETUP +TOKEN(VIRTUAL) + YY_BREAK +case 161: +YY_RULE_SETUP #line 221 "flex_lexer.l" - TOKEN(WHEN) - YY_BREAK - case 162: - YY_RULE_SETUP +TOKEN(WHEN) + YY_BREAK +case 162: +YY_RULE_SETUP #line 222 "flex_lexer.l" - TOKEN(WHERE) - YY_BREAK - case 163: - YY_RULE_SETUP +TOKEN(WHERE) + YY_BREAK +case 163: +YY_RULE_SETUP #line 223 "flex_lexer.l" - TOKEN(WITH) - YY_BREAK - case 164: - YY_RULE_SETUP +TOKEN(WITH) + YY_BREAK +case 164: +YY_RULE_SETUP #line 224 "flex_lexer.l" - TOKEN(YEAR) - YY_BREAK - case 165: - YY_RULE_SETUP +TOKEN(YEAR) + YY_BREAK +case 165: +YY_RULE_SETUP #line 225 "flex_lexer.l" - TOKEN(YEARS) - YY_BREAK - case 166: - /* rule 166 can match eol */ - YY_RULE_SETUP +TOKEN(YEARS) + YY_BREAK +case 166: +/* rule 166 can match eol */ +YY_RULE_SETUP +#line 227 "flex_lexer.l" +TOKEN(CURRENT_ROW) + YY_BREAK +case 167: +/* rule 167 can match eol */ +YY_RULE_SETUP #line 228 "flex_lexer.l" - TOKEN(CURRENT_ROW) - YY_BREAK - case 167: - /* rule 167 can match eol */ - YY_RULE_SETUP -#line 229 "flex_lexer.l" - TOKEN(CHARACTER_VARYING) - YY_BREAK - /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ - case 168: - YY_RULE_SETUP +TOKEN(CHARACTER_VARYING) + YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ +case 168: +YY_RULE_SETUP +#line 231 "flex_lexer.l" +TOKEN(EQUALS) + YY_BREAK +case 169: +YY_RULE_SETUP #line 232 "flex_lexer.l" - TOKEN(EQUALS) - YY_BREAK - case 169: - YY_RULE_SETUP +TOKEN(NOTEQUALS) + YY_BREAK +case 170: +YY_RULE_SETUP #line 233 "flex_lexer.l" - TOKEN(NOTEQUALS) - YY_BREAK - case 170: - YY_RULE_SETUP +TOKEN(NOTEQUALS) + YY_BREAK +case 171: +YY_RULE_SETUP #line 234 "flex_lexer.l" - TOKEN(NOTEQUALS) - YY_BREAK - case 171: - YY_RULE_SETUP +TOKEN(LESSEQ) + YY_BREAK +case 172: +YY_RULE_SETUP #line 235 "flex_lexer.l" - TOKEN(LESSEQ) - YY_BREAK - case 172: - YY_RULE_SETUP +TOKEN(GREATEREQ) + YY_BREAK +case 173: +YY_RULE_SETUP #line 236 "flex_lexer.l" - TOKEN(GREATEREQ) - YY_BREAK - case 173: - YY_RULE_SETUP -#line 237 "flex_lexer.l" - TOKEN(CONCAT) - YY_BREAK - case 174: - YY_RULE_SETUP -#line 239 "flex_lexer.l" - { - return yytext[0]; - } - YY_BREAK - case 175: -#line 242 "flex_lexer.l" - case 176: - YY_RULE_SETUP -#line 242 "flex_lexer.l" - { - yylval->fval = atof(yytext); - return SQL_FLOATVAL; - } - YY_BREAK - /* +TOKEN(CONCAT) + YY_BREAK +case 174: +YY_RULE_SETUP +#line 238 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 175: +#line 241 "flex_lexer.l" +case 176: +YY_RULE_SETUP +#line 241 "flex_lexer.l" +{ + yylval->fval = atof(yytext); + return SQL_FLOATVAL; +} + YY_BREAK +/* * Regularly, negative literals are treated as . This does not work for LLONG_MIN, as it has no * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where * numeric_limits::lowest() == -numeric_limits::max(); */ - case 177: - YY_RULE_SETUP -#line 252 "flex_lexer.l" - { - yylval->ival = LLONG_MIN; - return SQL_INTVAL; - } - YY_BREAK - case 178: - YY_RULE_SETUP -#line 257 "flex_lexer.l" - { - errno = 0; - yylval->ival = strtoll(yytext, nullptr, 0); - if (errno) { - return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); - return 0; - } - return SQL_INTVAL; - } - YY_BREAK - case 179: - YY_RULE_SETUP -#line 267 "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 180: - YY_RULE_SETUP -#line 273 "flex_lexer.l" - { - yylval->sval = strdup(yytext); - return SQL_IDENTIFIER; - } - YY_BREAK - case 181: - YY_RULE_SETUP +case 177: +YY_RULE_SETUP +#line 251 "flex_lexer.l" +{ + yylval->ival = LLONG_MIN; + return SQL_INTVAL; +} + YY_BREAK +case 178: +YY_RULE_SETUP +#line 256 "flex_lexer.l" +{ + errno = 0; + yylval->ival = strtoll(yytext, nullptr, 0); + if (errno) { + return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); + return 0; + } + return SQL_INTVAL; +} + YY_BREAK +case 179: +YY_RULE_SETUP +#line 266 "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 180: +YY_RULE_SETUP +#line 272 "flex_lexer.l" +{ + yylval->sval = strdup(yytext); + return SQL_IDENTIFIER; +} + YY_BREAK +case 181: +YY_RULE_SETUP +#line 277 "flex_lexer.l" +{ BEGIN singlequotedstring; strbuf.clear(); strbuf.str(""); } // Clear strbuf manually, see #170 + YY_BREAK +case 182: +YY_RULE_SETUP #line 278 "flex_lexer.l" - { - BEGIN singlequotedstring; - strbuf.clear(); - strbuf.str(""); - } // Clear strbuf manually, see #170 - YY_BREAK - case 182: - YY_RULE_SETUP +{ strbuf << '\''; } + YY_BREAK +case 183: +/* rule 183 can match eol */ +YY_RULE_SETUP #line 279 "flex_lexer.l" - { - strbuf << '\''; - } - YY_BREAK - case 183: - /* rule 183 can match eol */ - YY_RULE_SETUP +{ strbuf << yytext; } + YY_BREAK +case 184: +YY_RULE_SETUP #line 280 "flex_lexer.l" - { - strbuf << yytext; - } - YY_BREAK - case 184: - YY_RULE_SETUP +{ BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } + YY_BREAK +case YY_STATE_EOF(singlequotedstring): #line 281 "flex_lexer.l" - { - BEGIN 0; - yylval->sval = strdup(strbuf.str().c_str()); - return SQL_STRING; - } - YY_BREAK - case YY_STATE_EOF(singlequotedstring): -#line 282 "flex_lexer.l" - { - fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); - return 0; - } - YY_BREAK - case 185: - YY_RULE_SETUP -#line 284 "flex_lexer.l" - { - fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); - return 0; - } - YY_BREAK - case 186: - YY_RULE_SETUP -#line 286 "flex_lexer.l" - ECHO; - YY_BREAK +{ fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } + YY_BREAK +case 185: +YY_RULE_SETUP +#line 283 "flex_lexer.l" +{ fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 285 "flex_lexer.l" +ECHO; + YY_BREAK #line 4381 "flex_lexer.cpp" - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(COMMENT): - yyterminate(); - - case YY_END_OF_BUFFER: { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int)(yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) { - /* We're scanning a new file or input source. It's +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMENT): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure @@ -3470,26 +4403,27 @@ YY_DECL { * this is the first action (other than possibly a * back-up) that will match for the new input source. */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } - /* Note that here we test for yy_c_buf_p "<=" to the position + /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ - if (yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) { /* This was really a NUL. */ - yy_state_type yy_next_state; + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - yy_current_state = yy_get_previous_state(yyscanner); + yy_current_state = yy_get_previous_state( yyscanner ); - /* Okay, we're now positioned to make the NUL + /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal @@ -3498,31 +4432,35 @@ YY_DECL { * will run more slowly). */ - yy_next_state = yy_try_NUL_trans(yy_current_state, yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if (yy_next_state) { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else { - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - } - } - - else - switch (yy_get_next_buffer(yyscanner)) { - case EOB_ACT_END_OF_FILE: { - yyg->yy_did_buffer_switch_on_eof = 0; - - if (yywrap(yyscanner)) { - /* Note: because we've taken care in + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( yywrap( yyscanner ) ) + { + /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total @@ -3531,44 +4469,49 @@ YY_DECL { * YY_NULL, it'll still work - another * YY_NULL will get returned. */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else { - if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(yyscanner); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state(yyscanner); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR("fatal flex scanner internal error--no action found"); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -3578,142 +4521,171 @@ YY_DECL { * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ -static int yy_get_next_buffer(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - char* dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char* source = yyg->yytext_ptr; - int number_to_move, i; - int ret_val; - - if (yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) - YY_FATAL_ERROR("fatal flex scanner internal error--end of buffer missed"); - - if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) { /* Don't try to fill the buffer, so this is an EOF. */ - if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) { - /* We matched a single character, the EOB, so +static int yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = yyg->yytext_ptr; + int number_to_move, i; + int ret_val; + + if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so * treat this as a final EOF. */ - return EOB_ACT_END_OF_FILE; - } + return EOB_ACT_END_OF_FILE; + } - else { - /* We matched some text prior to the EOB, first + else + { + /* We matched some text prior to the EOB, first * process it. */ - return EOB_ACT_LAST_MATCH; - } - } + return EOB_ACT_LAST_MATCH; + } + } - /* Try to read more data. */ + /* Try to read more data. */ - /* First move last chars to start of buffer. */ - number_to_move = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr - 1); + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); - for (i = 0; i < number_to_move; ++i) *(dest++) = *(source++); + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); - if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) - /* don't do the read, it's not guaranteed to return an EOF, + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else { - int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while (num_to_read <= 0) { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = (int)(yyg->yy_c_buf_p - b->yy_ch_buf); - - if (b->yy_is_our_buffer) { - int new_size = b->yy_buf_size * 2; - - if (new_size <= 0) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char*) - /* Include room in for 2 EOB chars. */ - yyrealloc((void*)b->yy_ch_buf, (yy_size_t)(b->yy_buf_size + 2), yyscanner); - } else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if (!b->yy_ch_buf) YY_FATAL_ERROR("fatal error - scanner input buffer overflow"); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - } - - if (num_to_read > YY_READ_BUF_SIZE) num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if (yyg->yy_n_chars == 0) { - if (number_to_move == YY_MORE_ADJ) { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin, yyscanner); - } - - else { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = - (char*)yyrealloc((void*)YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t)new_size, yyscanner); - if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) YY_FATAL_ERROR("out of dynamic memory in yy_get_next_buffer()"); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int)(new_size - 2); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if ( yyg->yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin , yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ -static yy_state_type yy_get_previous_state(yyscan_t yyscanner) { - yy_state_type yy_current_state; - char* yy_cp; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp) { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if (yy_accept[yy_current_state]) { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1332) yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; + static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +{ + yy_state_type yy_current_state; + char *yy_cp; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) + { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character @@ -3721,25 +4693,29 @@ static yy_state_type yy_get_previous_state(yyscan_t yyscanner) { * synopsis * next_state = yy_try_NUL_trans( current_state ); */ -static yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state, yyscan_t yyscanner) { - int yy_is_jam; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - char* yy_cp = yyg->yy_c_buf_p; - - YY_CHAR yy_c = 1; - if (yy_accept[yy_current_state]) { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - 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 >= 1332) yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1331); - - (void)yyg; - return yy_is_jam ? 0 : yy_current_state; + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +{ + int yy_is_jam; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + char *yy_cp = yyg->yy_c_buf_p; + + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 1332 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 1331); + + (void)yyg; + return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT @@ -3748,32 +4724,36 @@ static yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state, yyscan_t y #ifndef YY_NO_INPUT #ifdef __cplusplus -static int yyinput(yyscan_t yyscanner) + static int yyinput (yyscan_t yyscanner) #else -static int input(yyscan_t yyscanner) + static int input (yyscan_t yyscanner) #endif { - int c; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + int c; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - *yyg->yy_c_buf_p = yyg->yy_hold_char; + *yyg->yy_c_buf_p = yyg->yy_hold_char; - if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) { - /* yy_c_buf_p now points to the character we want to return. + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ - if (yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else { /* need more input */ - int offset = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr); - ++yyg->yy_c_buf_p; - - switch (yy_get_next_buffer(yyscanner)) { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() + if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before @@ -3783,93 +4763,102 @@ static int input(yyscan_t yyscanner) * to EOB_ACT_END_OF_FILE. */ - /* Reset buffer status. */ - yyrestart(yyin, yyscanner); + /* Reset buffer status. */ + yyrestart( yyin , yyscanner); - /*FALLTHROUGH*/ + /*FALLTHROUGH*/ - case EOB_ACT_END_OF_FILE: { - if (yywrap(yyscanner)) return 0; + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( yyscanner ) ) + return 0; - if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE; + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; #ifdef __cplusplus - return yyinput(yyscanner); + return yyinput(yyscanner); #else - return input(yyscanner); + return input(yyscanner); #endif - } + } - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } - c = *(unsigned char*)yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; - return c; + return c; } -#endif /* ifndef YY_NO_INPUT */ +#endif /* ifndef YY_NO_INPUT */ - /** Immediately switch to a different input stream. +/** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ -void yyrestart(FILE* input_file, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + void yyrestart (FILE * input_file , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) { - yyensure_buffer_stack(yyscanner); - YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); - } + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); + } - yy_init_buffer(YY_CURRENT_BUFFER, input_file, yyscanner); - yy_load_buffer_state(yyscanner); + yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); + yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ -void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* TODO. We should be able to replace this entire function body + /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ - yyensure_buffer_stack(yyscanner); - if (YY_CURRENT_BUFFER == new_buffer) return; - - if (YY_CURRENT_BUFFER) { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state(yyscanner); - - /* We don't actually know whether we did this switch during + yyensure_buffer_stack (yyscanner); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( yyscanner ); + + /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ - yyg->yy_did_buffer_switch_on_eof = 1; + yyg->yy_did_buffer_switch_on_eof = 1; } -static void yy_load_buffer_state(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; +static void yy_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. @@ -3878,96 +4867,105 @@ static void yy_load_buffer_state(yyscan_t yyscanner) { * @param yyscanner The scanner object. * @return the allocated buffer state. */ -YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner) { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner); - if (!b) YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()"); + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = size; + b->yy_buf_size = size; - /* yy_ch_buf has to be 2 characters longer than the size given because + /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char*)yyalloc((yy_size_t)(b->yy_buf_size + 2), yyscanner); - if (!b->yy_ch_buf) YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()"); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_is_our_buffer = 1; + b->yy_is_our_buffer = 1; - yy_init_buffer(b, file, yyscanner); + yy_init_buffer( b, file , yyscanner); - return b; + return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ -void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!b) return; + if ( ! b ) + return; - if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE)0; + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - if (b->yy_is_our_buffer) yyfree((void*)b->yy_ch_buf, yyscanner); + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf , yyscanner ); - yyfree((void*)b, yyscanner); + yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ -static void yy_init_buffer(YY_BUFFER_STATE b, FILE* file, yyscan_t yyscanner) + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { - int oerrno = errno; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; + int oerrno = errno; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flush_buffer(b, yyscanner); + yy_flush_buffer( b , yyscanner); - b->yy_input_file = file; - b->yy_fill_buffer = 1; + b->yy_input_file = file; + b->yy_fill_buffer = 1; - /* If b is the current buffer, then yy_init_buffer was _probably_ + /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ - if (b != YY_CURRENT_BUFFER) { - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } - errno = oerrno; + b->yy_is_interactive = 0; + + errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ -void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (!b) return; + void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if ( ! b ) + return; - b->yy_n_chars = 0; + b->yy_n_chars = 0; - /* We always need two end-of-buffer characters. The first causes + /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - b->yy_buf_pos = &b->yy_ch_buf[0]; + b->yy_buf_pos = &b->yy_ch_buf[0]; - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; - if (b == YY_CURRENT_BUFFER) yy_load_buffer_state(yyscanner); + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes @@ -3976,83 +4974,99 @@ void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) { * @param new_buffer The new state. * @param yyscanner The scanner object. */ -void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) return; - - yyensure_buffer_stack(yyscanner); - - /* This block is copied from yy_switch_to_buffer. */ - if (YY_CURRENT_BUFFER) { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state(yyscanner); - yyg->yy_did_buffer_switch_on_eof = 1; +void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(yyscanner); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ -void yypop_buffer_state(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) return; - - yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state(yyscanner); - yyg->yy_did_buffer_switch_on_eof = 1; - } +void yypop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; + } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ -static void yyensure_buffer_stack(yyscan_t yyscanner) { - yy_size_t num_to_alloc; - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; +static void yyensure_buffer_stack (yyscan_t yyscanner) +{ + yy_size_t num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { - if (!yyg->yy_buffer_stack) { - /* First allocation is just for 2 elements, since we don't know if this + /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc(num_to_alloc * sizeof(struct yy_buffer_state*), yyscanner); - if (!yyg->yy_buffer_stack) YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()"); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) { - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc( - yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*), yyscanner); - if (!yyg->yy_buffer_stack) YY_FATAL_ERROR("out of dynamic memory in yyensure_buffer_stack()"); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } } /** Setup the input buffer state to scan directly from a user-specified character buffer. @@ -4061,29 +5075,33 @@ static void yyensure_buffer_stack(yyscan_t yyscanner) { * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner) { - YY_BUFFER_STATE b; - - if (size < 2 || base[size - 2] != YY_END_OF_BUFFER_CHAR || base[size - 1] != YY_END_OF_BUFFER_CHAR) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner); - if (!b) YY_FATAL_ERROR("out of dynamic memory in yy_scan_buffer()"); - - b->yy_buf_size = (int)(size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b, yyscanner); - - return b; +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b , yyscanner ); + + return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will @@ -4094,8 +5112,10 @@ YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner) { * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string(const char* yystr, yyscan_t yyscanner) { - return yy_scan_bytes(yystr, (int)strlen(yystr), yyscanner); +YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -4105,156 +5125,177 @@ YY_BUFFER_STATE yy_scan_string(const char* yystr, yyscan_t yyscanner) { * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes(const char* yybytes, int _yybytes_len, yyscan_t yyscanner) { - YY_BUFFER_STATE b; - char* buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t)(_yybytes_len + 2); - buf = (char*)yyalloc(n, yyscanner); - if (!buf) YY_FATAL_ERROR("out of dynamic memory in yy_scan_bytes()"); - - for (i = 0; i < _yybytes_len; ++i) buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf, n, yyscanner); - if (!b) YY_FATAL_ERROR("bad buffer in yy_scan_bytes()"); - - /* It's okay to grow etc. this buffer, and we should throw it +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n , yyscanner ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n , yyscanner); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ - b->yy_is_our_buffer = 1; + b->yy_is_our_buffer = 1; - return b; + return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error(const char* msg, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - fprintf(stderr, "%s\n", msg); - exit(YY_EXIT_FAILURE); +static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless -#define yyless(n) \ - do { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg); \ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } while (0) +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ -YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yyextra; +YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ -int yyget_lineno(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - if (!YY_CURRENT_BUFFER) return 0; +int yyget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yylineno; + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ -int yyget_column(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - if (!YY_CURRENT_BUFFER) return 0; +int yyget_column (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yycolumn; + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ -FILE* yyget_in(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yyin; +FILE *yyget_in (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ -FILE* yyget_out(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yyout; +FILE *yyget_out (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ -int yyget_leng(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yyleng; +int yyget_leng (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ -char* yyget_text(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yytext; +char *yyget_text (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ -void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined; +void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ -void yyset_lineno(int _line_number, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR("yyset_lineno called with no buffer"); +void yyset_lineno (int _line_number , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yylineno = _line_number; + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); + + yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ -void yyset_column(int _column_no, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR("yyset_column called with no buffer"); +void yyset_column (int _column_no , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yycolumn = _column_no; + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + YY_FATAL_ERROR( "yyset_column called with no buffer" ); + + yycolumn = _column_no; } /** Set the input stream. This does not discard the current @@ -4263,71 +5304,80 @@ void yyset_column(int _column_no, yyscan_t yyscanner) { * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ -void yyset_in(FILE* _in_str, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yyin = _in_str; +void yyset_in (FILE * _in_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = _in_str ; } -void yyset_out(FILE* _out_str, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yyout = _out_str; +void yyset_out (FILE * _out_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = _out_str ; } -int yyget_debug(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; +int yyget_debug (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; } -void yyset_debug(int _bdebug, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = _bdebug; +void yyset_debug (int _bdebug , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ -YYSTYPE* yyget_lval(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yylval; +YYSTYPE * yyget_lval (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylval; } -void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yylval = yylval_param; +void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; } -YYLTYPE* yyget_lloc(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - return yylloc; +YYLTYPE *yyget_lloc (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylloc; } - -void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - yylloc = yylloc_param; + +void yyset_lloc (YYLTYPE * yylloc_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylloc = yylloc_param; } - + /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ -int yylex_init(yyscan_t* ptr_yy_globals) { - if (ptr_yy_globals == NULL) { - errno = EINVAL; - return 1; - } +int yylex_init(yyscan_t* ptr_yy_globals) +{ + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } - *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), NULL); + *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); - if (*ptr_yy_globals == NULL) { - errno = ENOMEM; - return 1; - } + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t)); + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - return yy_init_globals(*ptr_yy_globals); + return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the @@ -4337,91 +5387,94 @@ int yylex_init(yyscan_t* ptr_yy_globals) { * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ -int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals) { - struct yyguts_t dummy_yyguts; +int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) +{ + struct yyguts_t dummy_yyguts; - yyset_extra(yy_user_defined, &dummy_yyguts); + yyset_extra (yy_user_defined, &dummy_yyguts); - if (ptr_yy_globals == NULL) { - errno = EINVAL; - return 1; - } + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } - *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), &dummy_yyguts); + *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - if (*ptr_yy_globals == NULL) { - errno = ENOMEM; - return 1; - } + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } - /* By setting to 0xAA, we expose bugs in + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t)); + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - yyset_extra(yy_user_defined, *ptr_yy_globals); + yyset_extra (yy_user_defined, *ptr_yy_globals); - return yy_init_globals(*ptr_yy_globals); + return yy_init_globals ( *ptr_yy_globals ); } -static int yy_init_globals(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. +static int yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ - yyg->yy_buffer_stack = NULL; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = NULL; - yyg->yy_init = 0; - yyg->yy_start = 0; + yyg->yy_buffer_stack = NULL; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = NULL; + yyg->yy_init = 0; + yyg->yy_start = 0; - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; + yyin = stdin; + yyout = stdout; #else - yyin = NULL; - yyout = NULL; + yyin = NULL; + yyout = NULL; #endif - /* For future reference: Set errno on error, since we are called by + /* For future reference: Set errno on error, since we are called by * yylex_init() */ - return 0; + return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy(yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while (YY_CURRENT_BUFFER) { - yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(yyscanner); - } +int yylex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(yyscanner); + } - /* Destroy the stack itself. */ - yyfree(yyg->yy_buffer_stack, yyscanner); - yyg->yy_buffer_stack = NULL; + /* Destroy the stack itself. */ + yyfree(yyg->yy_buffer_stack , yyscanner); + yyg->yy_buffer_stack = NULL; - /* Destroy the start condition stack. */ - yyfree(yyg->yy_start_stack, yyscanner); - yyg->yy_start_stack = NULL; + /* Destroy the start condition stack. */ + yyfree( yyg->yy_start_stack , yyscanner ); + yyg->yy_start_stack = NULL; - /* Reset the globals. This is important in a non-reentrant scanner so the next time + /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ - yy_init_globals(yyscanner); + yy_init_globals( yyscanner); - /* Destroy the main struct (reentrant only). */ - yyfree(yyscanner, yyscanner); - yyscanner = NULL; - return 0; + /* Destroy the main struct (reentrant only). */ + yyfree ( yyscanner , yyscanner ); + yyscanner = NULL; + return 0; } /* @@ -4429,60 +5482,66 @@ int yylex_destroy(yyscan_t yyscanner) { */ #ifndef yytext_ptr -static void yy_flex_strncpy(char* s1, const char* s2, int n, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - (void)yyg; +static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; - int i; - for (i = 0; i < n; ++i) s1[i] = s2[i]; + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen(const char* s, yyscan_t yyscanner) { - int n; - for (n = 0; s[n]; ++n) - ; +static int yy_flex_strlen (const char * s , yyscan_t yyscanner) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; - return n; + return n; } #endif -void* yyalloc(yy_size_t size, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - return malloc(size); +void *yyalloc (yy_size_t size , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + return malloc(size); } -void* yyrealloc(void* ptr, yy_size_t size, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - (void)yyg; +void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; - /* The cast to (char *) in the following accommodates both + /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return realloc(ptr, size); + return realloc(ptr, size); } -void yyfree(void* ptr, yyscan_t yyscanner) { - struct yyguts_t* yyg = (struct yyguts_t*)yyscanner; - (void)yyg; - free((char*)ptr); /* see yyrealloc() for (char *) cast */ +void yyfree (void * ptr , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + (void)yyg; + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 286 "flex_lexer.l" +#line 285 "flex_lexer.l" /*************************** ** Section 3: User code ***************************/ -int yyerror(const char* msg) { - fprintf(stderr, "[SQL-Lexer-Error] %s\n", msg); - return 0; +int yyerror(const char *msg) { + fprintf(stderr, "[SQL-Lexer-Error] %s\n",msg); return 0; } + diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 9b582a78..f392a3cf 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -6,7 +6,7 @@ #line 7 "flex_lexer.h" -#define YY_INT_ALIGNED short int +#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ @@ -255,10 +255,10 @@ /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ -#include #include -#include #include +#include +#include /* end standard C headers. */ @@ -269,7 +269,7 @@ /* C99 systems have . Non-C99 systems may or may not. */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -289,41 +289,41 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN -#define INT8_MIN (-128) +#define INT8_MIN (-128) #endif #ifndef INT16_MIN -#define INT16_MIN (-32767 - 1) +#define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN -#define INT32_MIN (-2147483647 - 1) +#define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX -#define INT8_MAX (127) +#define INT8_MAX (127) #endif #ifndef INT16_MAX -#define INT16_MAX (32767) +#define INT16_MAX (32767) #endif #ifndef INT32_MAX -#define INT32_MAX (2147483647) +#define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX -#define UINT8_MAX (255U) +#define UINT8_MAX (255U) #endif #ifndef UINT16_MAX -#define UINT16_MAX (65535U) +#define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) +#define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) +#define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ @@ -373,7 +373,7 @@ typedef void* yyscan_t; #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state* YY_BUFFER_STATE; +typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T @@ -383,72 +383,74 @@ typedef size_t yy_size_t; #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state { - FILE* yy_input_file; +struct yy_buffer_state + { + FILE *yy_input_file; - char* yy_ch_buf; /* input buffer */ - char* yy_buf_pos; /* current position in input buffer */ + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ - /* Size of input buffer in bytes, not including room for EOB + /* Size of input buffer in bytes, not including room for EOB * characters. */ - int yy_buf_size; + int yy_buf_size; - /* Number of characters read into yy_ch_buf, not including EOB + /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + int yy_n_chars; - /* Whether we "own" the buffer - i.e., we know we created it, + /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ - int yy_is_our_buffer; + int yy_is_our_buffer; - /* Whether this is an "interactive" input source; if so, and + /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ - int yy_is_interactive; + int yy_is_interactive; - /* Whether we're considered to be at the beginning of a line. + /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ - int yy_at_bol; + int yy_at_bol; - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ - /* Whether to try to fill the input buffer when we reach the + /* Whether to try to fill the input buffer when we reach the * end of it. */ - int yy_fill_buffer; + int yy_fill_buffer; - int yy_buffer_status; -}; + int yy_buffer_status; + + }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ -void yyrestart(FILE* input_file, yyscan_t yyscanner); -void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); -YY_BUFFER_STATE yy_create_buffer(FILE* file, int size, yyscan_t yyscanner); -void yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); -void yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner); -void yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); -void yypop_buffer_state(yyscan_t yyscanner); +void yyrestart ( FILE *input_file , yyscan_t yyscanner ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); +void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); +void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); +void yypop_buffer_state ( yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_buffer(char* base, yy_size_t size, yyscan_t yyscanner); -YY_BUFFER_STATE yy_scan_string(const char* yy_str, yyscan_t yyscanner); -YY_BUFFER_STATE yy_scan_bytes(const char* bytes, int len, yyscan_t yyscanner); +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); -void* yyalloc(yy_size_t, yyscan_t yyscanner); -void* yyrealloc(void*, yy_size_t, yyscan_t yyscanner); -void yyfree(void*, yyscan_t yyscanner); +void *yyalloc ( yy_size_t , yyscan_t yyscanner ); +void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); +void yyfree ( void * , yyscan_t yyscanner ); /* Begin user sect3 */ -#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1) +#define hsql_wrap(yyscanner) (/*CONSTCOND*/1) #define YY_SKIP_YYWRAP #define yytext_ptr yytext_r @@ -469,72 +471,72 @@ void yyfree(void*, yyscan_t yyscanner); #endif #ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void* +#define YY_EXTRA_TYPE void * #endif -int yylex_init(yyscan_t* scanner); +int yylex_init (yyscan_t* scanner); -int yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t* scanner); +int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy(yyscan_t yyscanner); - -int yyget_debug(yyscan_t yyscanner); +int yylex_destroy ( yyscan_t yyscanner ); -void yyset_debug(int debug_flag, yyscan_t yyscanner); +int yyget_debug ( yyscan_t yyscanner ); -YY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner); +void yyset_debug ( int debug_flag , yyscan_t yyscanner ); -void yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); +YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); -FILE* yyget_in(yyscan_t yyscanner); +void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); -void yyset_in(FILE* _in_str, yyscan_t yyscanner); +FILE *yyget_in ( yyscan_t yyscanner ); -FILE* yyget_out(yyscan_t yyscanner); +void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); -void yyset_out(FILE* _out_str, yyscan_t yyscanner); +FILE *yyget_out ( yyscan_t yyscanner ); -int yyget_leng(yyscan_t yyscanner); +void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); -char* yyget_text(yyscan_t yyscanner); + int yyget_leng ( yyscan_t yyscanner ); -int yyget_lineno(yyscan_t yyscanner); +char *yyget_text ( yyscan_t yyscanner ); -void yyset_lineno(int _line_number, yyscan_t yyscanner); +int yyget_lineno ( yyscan_t yyscanner ); -int yyget_column(yyscan_t yyscanner); +void yyset_lineno ( int _line_number , yyscan_t yyscanner ); -void yyset_column(int _column_no, yyscan_t yyscanner); +int yyget_column ( yyscan_t yyscanner ); -YYSTYPE* yyget_lval(yyscan_t yyscanner); +void yyset_column ( int _column_no , yyscan_t yyscanner ); -void yyset_lval(YYSTYPE* yylval_param, yyscan_t yyscanner); +YYSTYPE * yyget_lval ( yyscan_t yyscanner ); -YYLTYPE* yyget_lloc(yyscan_t yyscanner); - -void yyset_lloc(YYLTYPE* yylloc_param, yyscan_t yyscanner); +void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); + YYLTYPE *yyget_lloc ( yyscan_t yyscanner ); + + void yyset_lloc ( YYLTYPE * yylloc_param , yyscan_t yyscanner ); + /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap(yyscan_t yyscanner); +extern "C" int yywrap ( yyscan_t yyscanner ); #else -extern int yywrap(yyscan_t yyscanner); +extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr -static void yy_flex_strncpy(char*, const char*, int, yyscan_t yyscanner); +static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen(const char*, yyscan_t yyscanner); +static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT @@ -562,9 +564,11 @@ static int yy_flex_strlen(const char*, yyscan_t yyscanner); #ifndef YY_DECL #define YY_DECL_IS_OURS 1 -extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner); +extern int yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner); -#define YY_DECL int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanner) +#define YY_DECL int yylex \ + (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* yy_get_previous_state - get the state just before the EOB char was reached */ @@ -726,7 +730,8 @@ extern int yylex(YYSTYPE* yylval_param, YYLTYPE* yylloc_param, yyscan_t yyscanne #undef yyTABLES_NAME #endif -#line 286 "flex_lexer.l" +#line 285 "flex_lexer.l" + #line 736 "flex_lexer.h" #undef hsql_IN_HEADER diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 7318a4bc..4e756595 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -224,7 +224,6 @@ WITH TOKEN(WITH) YEAR TOKEN(YEAR) YEARS TOKEN(YEARS) - CURRENT[ \t\n]+ROW TOKEN(CURRENT_ROW) CHARACTER[ \t\n]+VARYING TOKEN(CHARACTER_VARYING) diff --git a/src/util/sqlhelper.h b/src/util/sqlhelper.h index 9ce7b5ec..3baa7da7 100644 --- a/src/util/sqlhelper.h +++ b/src/util/sqlhelper.h @@ -1,8 +1,6 @@ #ifndef SQLPARSER_SQLHELPER_H #define SQLPARSER_SQLHELPER_H -#include - #include "../sql/statements.h" namespace hsql { diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 3d93b4ca..00db5aad 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -992,18 +992,17 @@ TEST(MultipleLockingClause) { TEST(WindowExpression) { SelectStatement* stmt; TEST_PARSE_SQL_QUERY( - "SELECT t2, avg(t1) OVER() FROM t;" - "SELECT rank() OVER(ORDER BY t1) FROM t;" + "SELECT t2, avg(t1) OVER(), rank() OVER(ORDER BY t1) FROM t;" "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5 ROWS UNBOUNDED PRECEDING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND 2 FOLLOWING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM " "t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 GROUPS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t;", - result, 6); + result, 5); stmt = (SelectStatement*)result.getStatement(0); ASSERT_TRUE(stmt->selectList); - ASSERT_EQ(stmt->selectList->size(), 2); + ASSERT_EQ(stmt->selectList->size(), 3); ASSERT_EQ(stmt->selectList->at(1)->type, kExprWindow); ASSERT_FALSE(stmt->selectList->at(1)->exprList); ASSERT_TRUE(stmt->selectList->at(1)->expr); @@ -1020,27 +1019,24 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); - stmt = (SelectStatement*)result.getStatement(1); - ASSERT_TRUE(stmt->selectList); - ASSERT_EQ(stmt->selectList->size(), 1); - ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); - ASSERT_FALSE(stmt->selectList->at(0)->exprList); - ASSERT_TRUE(stmt->selectList->at(0)->expr); - ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); - ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "rank"); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()); - ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); - ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); - ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 1); - ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t1"); - ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription); + ASSERT_EQ(stmt->selectList->at(2)->type, kExprWindow); + ASSERT_FALSE(stmt->selectList->at(2)->exprList); + ASSERT_TRUE(stmt->selectList->at(2)->expr); + ASSERT_EQ(stmt->selectList->at(2)->expr->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(2)->expr->name, "rank"); + ASSERT_TRUE(stmt->selectList->at(2)->expr->exprList); + ASSERT_TRUE(stmt->selectList->at(2)->expr->exprList->empty()); + ASSERT_TRUE(stmt->selectList->at(2)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(2)->windowDescription->orderList); + ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->size(), 1); + ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->name, "t1"); + ASSERT_FALSE(stmt->selectList->at(2)->windowDescription->frameDescription); ASSERT_TRUE(stmt->fromTable); ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); - stmt = (SelectStatement*)result.getStatement(2); + stmt = (SelectStatement*)result.getStatement(1); ASSERT_TRUE(stmt->selectList); ASSERT_EQ(stmt->selectList->size(), 1); ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); @@ -1081,7 +1077,7 @@ TEST(WindowExpression) { std::vector{{2, kFollowing, false}, {0, kFollowing, true}, {0, kCurrentRow, false}}; for (auto bound_index = size_t{0}; bound_index < frame_starts.size(); ++bound_index) { - stmt = (SelectStatement*)result.getStatement(3 + bound_index); + stmt = (SelectStatement*)result.getStatement(2 + bound_index); const auto& expected_start = frame_starts[bound_index]; const auto& expected_end = frame_ends[bound_index]; From af8ac78b87a976708e1af1723e9a75d4d327aa63 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Wed, 31 May 2023 14:36:17 +0200 Subject: [PATCH 08/12] structure test cases a bit --- test/select_tests.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 00db5aad..4c8655a6 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -1003,6 +1003,10 @@ TEST(WindowExpression) { stmt = (SelectStatement*)result.getStatement(0); ASSERT_TRUE(stmt->selectList); ASSERT_EQ(stmt->selectList->size(), 3); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + ASSERT_EQ(stmt->selectList->at(1)->type, kExprWindow); ASSERT_FALSE(stmt->selectList->at(1)->exprList); ASSERT_TRUE(stmt->selectList->at(1)->expr); @@ -1015,9 +1019,6 @@ TEST(WindowExpression) { ASSERT_TRUE(stmt->selectList->at(1)->windowDescription); ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->orderList); ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->frameDescription); - ASSERT_TRUE(stmt->fromTable); - ASSERT_EQ(stmt->fromTable->type, kTableName); - ASSERT_STREQ(stmt->fromTable->name, "t"); ASSERT_EQ(stmt->selectList->at(2)->type, kExprWindow); ASSERT_FALSE(stmt->selectList->at(2)->exprList); @@ -1032,13 +1033,14 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->name, "t1"); ASSERT_FALSE(stmt->selectList->at(2)->windowDescription->frameDescription); - ASSERT_TRUE(stmt->fromTable); - ASSERT_EQ(stmt->fromTable->type, kTableName); - ASSERT_STREQ(stmt->fromTable->name, "t"); stmt = (SelectStatement*)result.getStatement(1); ASSERT_TRUE(stmt->selectList); ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); ASSERT_TRUE(stmt->selectList->at(0)->exprList); ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 2); @@ -1067,9 +1069,6 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->type, kPreceding); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start->unbounded); ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription->end); - ASSERT_TRUE(stmt->fromTable); - ASSERT_EQ(stmt->fromTable->type, kTableName); - ASSERT_STREQ(stmt->fromTable->name, "t"); const auto frame_starts = std::vector{{25, kPreceding, false}, {0, kPreceding, true}, {0, kPreceding, true}}; @@ -1083,6 +1082,10 @@ TEST(WindowExpression) { ASSERT_TRUE(stmt->selectList); ASSERT_EQ(stmt->selectList->size(), 1); + ASSERT_TRUE(stmt->fromTable); + ASSERT_EQ(stmt->fromTable->type, kTableName); + ASSERT_STREQ(stmt->fromTable->name, "t"); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); ASSERT_TRUE(stmt->selectList->at(0)->exprList); ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 1); @@ -1107,8 +1110,5 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->offset, expected_end.offset); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->type, expected_end.type); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->unbounded, expected_end.unbounded); - ASSERT_TRUE(stmt->fromTable); - ASSERT_EQ(stmt->fromTable->type, kTableName); - ASSERT_STREQ(stmt->fromTable->name, "t"); } } From bca7ebf33f3ac43df6baf284b3210db01844ca69 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Wed, 31 May 2023 15:07:18 +0200 Subject: [PATCH 09/12] add alias --- test/select_tests.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 4c8655a6..bd467b56 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -992,7 +992,7 @@ TEST(MultipleLockingClause) { TEST(WindowExpression) { SelectStatement* stmt; TEST_PARSE_SQL_QUERY( - "SELECT t2, avg(t1) OVER(), rank() OVER(ORDER BY t1) FROM t;" + "SELECT t2, avg(t1) OVER() average, rank() OVER(ORDER BY t1) FROM t;" "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5 ROWS UNBOUNDED PRECEDING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND 2 FOLLOWING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM " @@ -1008,6 +1008,7 @@ TEST(WindowExpression) { ASSERT_STREQ(stmt->fromTable->name, "t"); ASSERT_EQ(stmt->selectList->at(1)->type, kExprWindow); + ASSERT_STREQ(stmt->selectList->at(1)->alias, "average"); ASSERT_FALSE(stmt->selectList->at(1)->exprList); ASSERT_TRUE(stmt->selectList->at(1)->expr); ASSERT_EQ(stmt->selectList->at(1)->expr->type, kExprFunctionRef); From 3c4550d9ee92cfdc29757c422e23068752491051 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Thu, 1 Jun 2023 21:06:58 +0200 Subject: [PATCH 10/12] limit windows to functions expressions --- src/parser/bison_parser.cpp | 2674 +++++++++++++++++---------------- src/parser/bison_parser.h | 3 +- src/parser/bison_parser.y | 60 +- src/sql/Expr.cpp | 24 +- src/sql/Expr.h | 16 +- src/util/sqlhelper.cpp | 72 +- src/util/sqlhelper.h | 4 +- test/queries/queries-bad.sql | 2 + test/queries/queries-good.sql | 1 + test/select_tests.cpp | 119 +- 10 files changed, 1504 insertions(+), 1471 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index d50e47f3..df81a5e4 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -404,16 +404,16 @@ enum yysymbol_kind_t YYSYMBOL_binary_expr = 269, /* binary_expr */ YYSYMBOL_logic_expr = 270, /* logic_expr */ YYSYMBOL_in_expr = 271, /* in_expr */ - YYSYMBOL_window_expr = 272, /* window_expr */ - YYSYMBOL_opt_partition = 273, /* opt_partition */ - YYSYMBOL_opt_frame_clause = 274, /* opt_frame_clause */ - YYSYMBOL_frame_type = 275, /* frame_type */ - YYSYMBOL_frame_bound = 276, /* frame_bound */ - YYSYMBOL_case_expr = 277, /* case_expr */ - YYSYMBOL_case_list = 278, /* case_list */ - YYSYMBOL_exists_expr = 279, /* exists_expr */ - YYSYMBOL_comp_expr = 280, /* comp_expr */ - YYSYMBOL_function_expr = 281, /* function_expr */ + YYSYMBOL_case_expr = 272, /* case_expr */ + YYSYMBOL_case_list = 273, /* case_list */ + YYSYMBOL_exists_expr = 274, /* exists_expr */ + YYSYMBOL_comp_expr = 275, /* comp_expr */ + YYSYMBOL_function_expr = 276, /* function_expr */ + YYSYMBOL_opt_window = 277, /* opt_window */ + YYSYMBOL_opt_partition = 278, /* opt_partition */ + YYSYMBOL_frame_clause = 279, /* frame_clause */ + YYSYMBOL_frame_type = 280, /* frame_type */ + YYSYMBOL_frame_bound = 281, /* frame_bound */ YYSYMBOL_extract_expr = 282, /* extract_expr */ YYSYMBOL_cast_expr = 283, /* cast_expr */ YYSYMBOL_datetime_field = 284, /* datetime_field */ @@ -788,7 +788,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 887 +#define YYLAST 872 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 196 @@ -797,7 +797,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 335 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 604 +#define YYNSTATES 605 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 433 @@ -864,40 +864,40 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 320, 320, 339, 345, 352, 356, 360, 361, 362, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 379, 380, 382, 386, 391, 395, 405, 406, 407, 409, - 409, 415, 421, 423, 427, 438, 444, 452, 467, 472, - 473, 479, 485, 496, 497, 502, 513, 526, 538, 545, - 552, 561, 562, 564, 568, 573, 574, 576, 583, 584, - 585, 586, 587, 588, 589, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 605, 606, 608, 609, - 610, 612, 613, 615, 619, 624, 625, 626, 627, 629, - 630, 638, 644, 650, 656, 662, 663, 670, 676, 678, - 688, 695, 706, 713, 721, 722, 729, 736, 740, 745, - 755, 759, 763, 775, 775, 777, 778, 787, 788, 790, - 804, 816, 821, 825, 829, 834, 835, 837, 847, 848, - 850, 852, 853, 855, 857, 858, 860, 865, 867, 868, - 870, 871, 873, 877, 882, 884, 885, 886, 890, 891, - 893, 894, 895, 896, 897, 898, 903, 907, 912, 913, - 915, 919, 924, 932, 932, 932, 932, 932, 932, 934, - 935, 935, 935, 935, 935, 935, 935, 935, 936, 936, - 940, 940, 942, 943, 944, 945, 946, 948, 948, 949, - 950, 951, 952, 953, 954, 955, 956, 957, 959, 960, - 962, 963, 964, 965, 969, 971, 972, 974, 975, 976, - 978, 979, 980, 982, 983, 984, 985, 986, 990, 991, - 992, 993, 995, 996, 998, 999, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1009, 1010, 1012, 1014, 1016, 1017, 1018, - 1019, 1020, 1021, 1023, 1024, 1025, 1026, 1027, 1028, 1030, - 1030, 1032, 1034, 1036, 1038, 1039, 1040, 1041, 1043, 1043, - 1043, 1043, 1043, 1043, 1043, 1045, 1047, 1048, 1050, 1051, - 1053, 1055, 1057, 1068, 1072, 1083, 1115, 1124, 1124, 1131, - 1131, 1133, 1133, 1140, 1144, 1149, 1157, 1163, 1167, 1172, - 1173, 1175, 1175, 1177, 1177, 1179, 1180, 1182, 1182, 1188, - 1189, 1191, 1195, 1200, 1206, 1213, 1214, 1215, 1216, 1218, - 1219, 1220, 1226, 1226, 1228, 1230, 1234, 1239, 1249, 1256, - 1264, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, - 1297, 1299, 1305, 1305, 1308, 1312 + 0, 322, 322, 341, 347, 354, 358, 362, 363, 364, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 381, 382, 384, 388, 393, 397, 407, 408, 409, 411, + 411, 417, 423, 425, 429, 440, 446, 454, 469, 474, + 475, 481, 487, 498, 499, 504, 515, 528, 540, 547, + 554, 563, 564, 566, 570, 575, 576, 578, 585, 586, + 587, 588, 589, 590, 591, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 607, 608, 610, 611, + 612, 614, 615, 617, 621, 626, 627, 628, 629, 631, + 632, 640, 646, 652, 658, 664, 665, 672, 678, 680, + 690, 697, 708, 715, 723, 724, 731, 738, 742, 747, + 757, 761, 765, 777, 777, 779, 780, 789, 790, 792, + 806, 818, 823, 827, 831, 836, 837, 839, 849, 850, + 852, 854, 855, 857, 859, 860, 862, 867, 869, 870, + 872, 873, 875, 879, 884, 886, 887, 888, 892, 893, + 895, 896, 897, 898, 899, 900, 905, 909, 914, 915, + 917, 921, 926, 934, 934, 934, 934, 934, 936, 937, + 937, 937, 937, 937, 937, 937, 937, 938, 938, 942, + 942, 944, 945, 946, 947, 948, 950, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 961, 962, 964, + 965, 966, 967, 971, 972, 973, 974, 976, 977, 979, + 980, 982, 983, 984, 985, 986, 987, 988, 990, 991, + 995, 996, 998, 999, 1004, 1005, 1006, 1010, 1011, 1012, + 1014, 1015, 1016, 1017, 1018, 1020, 1022, 1024, 1025, 1026, + 1027, 1028, 1029, 1031, 1032, 1033, 1034, 1035, 1036, 1038, + 1038, 1040, 1042, 1044, 1046, 1047, 1048, 1049, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1053, 1055, 1056, 1058, 1059, + 1061, 1063, 1065, 1076, 1080, 1091, 1123, 1132, 1132, 1139, + 1139, 1141, 1141, 1148, 1152, 1157, 1165, 1171, 1175, 1180, + 1181, 1183, 1183, 1185, 1185, 1187, 1188, 1190, 1190, 1196, + 1197, 1199, 1203, 1208, 1214, 1221, 1222, 1223, 1224, 1226, + 1227, 1228, 1234, 1234, 1236, 1238, 1242, 1247, 1257, 1264, + 1272, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, + 1305, 1307, 1313, 1313, 1316, 1320 }; #endif @@ -960,9 +960,9 @@ static const char *const yytname[] = "order_list", "order_desc", "opt_order_type", "opt_top", "opt_limit", "expr_list", "opt_literal_list", "literal_list", "expr_alias", "expr", "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", - "in_expr", "window_expr", "opt_partition", "opt_frame_clause", - "frame_type", "frame_bound", "case_expr", "case_list", "exists_expr", - "comp_expr", "function_expr", "extract_expr", "cast_expr", + "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", + "function_expr", "opt_window", "opt_partition", "frame_clause", + "frame_type", "frame_bound", "extract_expr", "cast_expr", "datetime_field", "datetime_field_plural", "duration_field", "array_expr", "array_index", "between_expr", "column_name", "literal", "string_literal", "bool_literal", "num_literal", "int_literal", @@ -984,7 +984,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-512) +#define YYPACT_NINF (-527) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -998,67 +998,67 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 457, 51, 76, 88, 103, 76, 146, -50, 9, 127, - 76, 75, 19, 148, 27, 105, -10, -10, -10, 251, - 104, -512, 191, -512, 191, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -32, -512, 311, - 124, -512, 135, 259, -512, 231, 231, 231, 76, 359, - 76, 242, -512, 237, -32, 238, -37, 237, 237, 237, - 76, -512, 247, 193, -512, -512, -512, -512, -512, -512, - 618, -512, 292, -512, -512, 269, 47, -512, 54, -512, - 410, 36, 412, 294, 416, 76, 76, 336, -512, 331, - 236, 424, 383, 76, 243, 244, 434, 434, 434, 437, - 76, 76, -512, 253, 105, -512, 254, 439, 435, -512, - -512, -512, -32, 330, 320, -32, 118, -512, -512, -512, - -512, 448, -512, 449, -512, -512, -512, 263, 262, -512, - -512, -512, -512, 736, -512, -512, -512, -512, -512, -512, - 414, -512, 328, -43, 236, 332, -512, 434, 459, 134, - 295, -55, -512, -512, 371, -512, -512, 351, -512, 351, - 351, -512, -512, -512, -512, -512, 465, -512, -512, 332, - 390, -512, -512, 47, -512, -512, 332, 390, 332, 166, - 350, -512, 241, -512, 36, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, 76, 468, 362, 46, 346, -126, 287, 288, 290, - 175, 403, 302, 427, -512, 305, 139, 464, -512, -512, - -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -512, -512, -512, -512, -512, 394, -512, -34, 306, -512, - 332, 424, -512, 443, -512, -512, 450, -512, 336, -512, - 312, 101, -512, 406, 309, -512, 50, 118, -32, 310, - -512, 129, 118, 139, 451, 42, 12, -512, 350, -512, - -512, -512, 315, 413, -512, 658, 389, 322, 102, -512, - -512, -512, 362, 16, 11, 461, 241, 332, 332, 152, - 157, 327, 427, 649, 332, 116, 333, -63, 332, 332, - 427, -512, 335, 427, -47, 338, 80, 427, 427, 427, - 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, - 427, 427, 439, 76, -512, 518, 36, 139, -512, 237, - 359, -512, 36, -512, 465, 20, 336, -512, 332, -512, - 526, -512, -512, -512, -512, 332, -512, -512, -512, 350, - 332, 332, -512, 367, 409, -512, 107, -512, 459, 434, - -512, -512, 343, -512, 344, -512, -512, 345, -512, -512, - 347, -512, -512, -512, -512, 348, -512, -512, 113, 349, - 459, -512, 46, -512, -512, 332, -512, -512, 352, 441, - 108, 173, 213, 332, 332, -512, 461, 442, -113, -512, - -512, -512, 429, 611, 445, 669, 427, 357, 305, -512, - 436, 360, 669, 669, 669, 669, 687, 687, 687, 687, - 116, 116, 57, 57, 57, -5, 363, -512, -512, 156, - 550, -512, 177, -512, 362, -512, 65, -512, 364, -512, - 24, -512, 484, -512, -512, -512, -512, 139, 139, -512, - 496, 459, -512, 398, -512, 181, -512, 555, 556, -512, - 557, 561, 562, -512, 447, -512, -512, 467, -512, 113, - -512, 459, 198, -512, 205, -512, 332, 658, 332, 332, - -512, 196, 207, 379, -512, 427, 446, 390, 669, 305, - 382, 209, -512, -512, -512, -512, -512, 384, 476, -512, - -512, -512, 498, 499, 503, 483, 20, 581, -512, -512, - -512, 460, -512, -512, 3, -512, -512, 399, 210, 400, - 401, 405, -512, -512, -512, 211, -512, -512, -56, 408, - 139, 225, -512, 332, -512, 649, 332, 258, 415, 220, - -512, -512, 24, 20, -512, -512, -512, 20, 297, 407, - 332, -512, -512, -512, 583, -512, -512, -512, -512, -512, - -512, -512, 139, 309, -512, -512, -512, 417, 26, -512, - -512, -512, -512, 161, 459, -26, 420, -512, 69, 32, - 106, -512, -512, 411, 332, 221, 332, -512, -512, -512, - -512, 487, -512, -512, 21, 139, -512, -512, 139, 32, - 421, 428, -512, -512 + 577, 63, 101, 112, 195, 101, 188, -39, 108, 67, + 101, 142, 23, 211, 31, 213, 72, 72, 72, 238, + 49, -527, 130, -527, 130, -527, -527, -527, -527, -527, + -527, -527, -527, -527, -527, -527, -527, -23, -527, 252, + 84, -527, 88, 215, -527, 177, 177, 177, 101, 309, + 101, 197, -527, 220, -23, 181, -50, 220, 220, 220, + 101, -527, 193, 143, -527, -527, -527, -527, -527, -527, + 582, -527, 246, -527, -527, 243, 69, -527, 150, -527, + 361, 57, 367, 256, 380, 101, 101, 302, -527, 294, + 203, 402, 374, 101, 232, 236, 424, 424, 424, 426, + 101, 101, -527, 240, 213, -527, 244, 430, 425, -527, + -527, -527, -23, 325, 314, -23, 25, -527, -527, -527, + -527, 441, -527, 442, -527, -527, -527, 266, 265, -527, + -527, -527, -527, 509, -527, -527, -527, -527, -527, -527, + 404, -527, 329, -48, 203, 261, -527, 424, 460, 179, + 293, -46, -527, -527, 373, -527, -527, 353, -527, 353, + 353, -527, -527, -527, -527, -527, 465, -527, -527, 261, + 392, -527, -527, 69, -527, -527, 261, 392, 261, 131, + 350, -527, 259, -527, 57, -527, -527, -527, -527, -527, + -527, -527, -527, -527, -527, -527, -527, -527, -527, -527, + -527, 101, 470, 362, 157, 348, -2, 290, 295, 297, + 135, 349, 296, 369, -527, 257, 40, 395, -527, -527, + -527, -527, -527, -527, -527, -527, -527, -527, -527, -527, + -527, -527, -527, -527, 384, -527, -125, 298, -527, 261, + 402, -527, 450, -527, -527, 444, -527, 302, -527, 300, + 107, -527, 396, 304, -527, 37, 25, -23, 310, -527, + -47, 25, 40, 439, 35, 90, -527, 350, -527, -527, + -527, 306, 411, -527, 668, 385, 318, 133, -527, -527, + -527, 362, 9, 19, 451, 259, 261, 261, -59, 106, + 320, 369, 622, 261, 173, 321, -58, 261, 261, 369, + -527, 369, -28, 323, 71, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 430, 101, -527, 508, 57, 40, -527, 220, 309, -527, + 57, -527, 465, 24, 302, -527, 261, -527, 511, -527, + -527, -527, -527, 261, -527, -527, -527, 350, 261, 261, + -527, 352, 394, -527, -51, -527, 460, 424, -527, -527, + 327, -527, 330, -527, -527, 334, -527, -527, 337, -527, + -527, -527, -527, 338, -527, -527, 45, 339, 460, -527, + 157, -527, 452, 261, -527, -527, 328, 440, 163, 53, + 180, 261, 261, -527, 451, 434, -3, -527, -527, -527, + 420, 544, 660, 369, 351, 257, -527, 433, 354, 660, + 660, 660, 660, 684, 684, 684, 684, 173, 173, 47, + 47, 47, -89, 356, -527, -527, 138, 537, -527, 140, + -527, 362, -527, 381, -527, 355, -527, 38, -527, 473, + -527, -527, -527, -527, 40, 40, -527, 483, 460, -527, + 386, -527, 147, -527, 541, 547, -527, 548, 549, 550, + -527, 428, -527, -527, 453, -527, 45, -527, 460, 148, + -527, 370, -527, 154, -527, 261, 668, 261, 261, -527, + 122, 185, 366, -527, 369, 660, 257, 371, 169, -527, + -527, -527, -527, -527, 372, 461, -527, -527, -527, 486, + 492, 493, 485, 24, 583, -527, -527, -527, 459, -527, + -527, -108, -527, -527, 397, 174, 400, 403, 405, -527, + -527, -527, 176, -527, 484, 452, -33, 409, 40, 160, + -527, 261, -527, 622, 410, 187, -527, -527, 38, 24, + -527, -527, -527, 24, 399, 412, 261, -527, -527, -527, + 589, -527, -527, -527, -527, 477, 392, -527, -527, -527, + -527, 40, -527, -527, -527, -527, 687, 460, -22, 415, + 261, 226, 417, 261, 191, 261, -527, -527, 304, -527, + -527, -527, 418, 22, 21, 40, -527, -527, 40, -527, + 208, 26, 239, -527, -527, 419, 421, -527, -527, 496, + -527, -527, -527, 26, -527 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1087,82 +1087,82 @@ static const yytype_int16 yydefact[] = 300, 272, 275, 34, 0, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 273, 51, 0, 0, 313, 0, 0, 254, 0, 0, 0, - 0, 0, 0, 0, 256, 0, 134, 163, 171, 172, - 173, 165, 167, 168, 174, 166, 187, 175, 176, 177, - 178, 170, 164, 180, 181, 0, 334, 0, 0, 103, - 0, 0, 106, 0, 97, 98, 0, 42, 135, 41, - 24, 0, 22, 132, 130, 156, 298, 155, 0, 140, - 142, 147, 155, 151, 153, 150, 0, 119, 299, 301, - 274, 161, 0, 0, 48, 0, 0, 0, 0, 53, - 55, 56, 313, 129, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 0, 182, 0, 0, 0, 0, - 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 256, 0, 134, 163, 170, 171, + 172, 165, 167, 173, 166, 186, 174, 175, 176, 177, + 169, 164, 179, 180, 0, 334, 0, 0, 103, 0, + 0, 106, 0, 97, 98, 0, 42, 135, 41, 24, + 0, 22, 132, 130, 156, 298, 155, 0, 140, 142, + 147, 155, 151, 153, 150, 0, 119, 299, 301, 274, + 161, 0, 0, 48, 0, 0, 0, 0, 53, 55, + 56, 313, 129, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 182, 0, 181, 0, 0, 0, 0, 0, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 0, 0, 109, 108, 96, - 0, 36, 0, 20, 0, 0, 135, 131, 0, 296, - 0, 297, 162, 112, 116, 0, 146, 145, 144, 300, - 0, 0, 305, 0, 0, 307, 311, 302, 0, 0, - 74, 68, 0, 70, 80, 71, 58, 0, 65, 66, - 0, 62, 63, 69, 72, 77, 67, 59, 82, 0, - 0, 47, 0, 50, 233, 0, 255, 257, 0, 0, - 0, 0, 0, 0, 0, 220, 0, 0, 0, 179, - 169, 198, 199, 0, 206, 194, 0, 0, 0, 185, - 0, 197, 196, 226, 227, 228, 229, 230, 231, 232, - 189, 188, 191, 190, 192, 193, 0, 35, 335, 0, - 0, 39, 0, 23, 313, 133, 277, 279, 0, 281, - 294, 280, 137, 157, 295, 143, 120, 154, 152, 308, - 0, 0, 310, 0, 303, 0, 46, 0, 0, 64, - 0, 0, 0, 73, 0, 86, 87, 0, 57, 81, - 83, 0, 0, 54, 0, 224, 0, 0, 0, 0, - 218, 0, 0, 0, 251, 0, 0, 141, 195, 0, - 0, 0, 186, 252, 102, 99, 25, 0, 0, 329, - 321, 327, 325, 328, 323, 0, 0, 0, 293, 285, - 291, 0, 127, 306, 311, 309, 49, 0, 0, 0, - 0, 0, 85, 88, 84, 0, 90, 234, 0, 0, - 222, 0, 221, 0, 225, 253, 0, 209, 0, 0, - 202, 200, 294, 0, 324, 326, 322, 0, 278, 295, - 0, 304, 61, 79, 0, 75, 60, 76, 89, 235, - 236, 219, 223, 205, 210, 211, 212, 0, 0, 203, - 201, 282, 318, 330, 0, 139, 0, 204, 0, 0, - 0, 217, 207, 0, 0, 0, 0, 136, 78, 216, - 214, 0, 215, 213, 0, 331, 319, 292, 138, 0, - 254, 0, 208, 320 + 0, 0, 104, 0, 0, 109, 108, 96, 0, 36, + 0, 20, 0, 0, 135, 131, 0, 296, 0, 297, + 162, 112, 116, 0, 146, 145, 144, 300, 0, 0, + 305, 0, 0, 307, 311, 302, 0, 0, 74, 68, + 0, 70, 80, 71, 58, 0, 65, 66, 0, 62, + 63, 69, 72, 77, 67, 59, 82, 0, 0, 47, + 0, 50, 221, 0, 255, 257, 0, 0, 0, 0, + 0, 0, 0, 205, 0, 0, 0, 178, 168, 197, + 198, 0, 193, 0, 0, 0, 184, 0, 196, 195, + 211, 212, 213, 214, 215, 216, 217, 188, 187, 190, + 189, 191, 192, 0, 35, 335, 0, 0, 39, 0, + 23, 313, 133, 277, 279, 0, 281, 294, 280, 137, + 157, 295, 143, 120, 154, 152, 308, 0, 0, 310, + 0, 303, 0, 46, 0, 0, 64, 0, 0, 0, + 73, 0, 86, 87, 0, 57, 81, 83, 0, 0, + 54, 0, 218, 0, 209, 0, 0, 0, 0, 203, + 0, 0, 0, 251, 0, 194, 0, 0, 0, 185, + 252, 102, 99, 25, 0, 0, 329, 321, 327, 325, + 328, 323, 0, 0, 0, 293, 285, 291, 0, 127, + 306, 311, 309, 49, 0, 0, 0, 0, 0, 85, + 88, 84, 0, 90, 223, 221, 0, 0, 207, 0, + 206, 0, 210, 253, 0, 0, 201, 199, 294, 0, + 324, 326, 322, 0, 278, 295, 0, 304, 61, 79, + 0, 75, 60, 76, 89, 0, 141, 219, 235, 236, + 204, 208, 202, 200, 282, 318, 330, 0, 139, 0, + 0, 226, 0, 0, 0, 0, 136, 78, 222, 227, + 228, 229, 0, 0, 0, 331, 319, 292, 138, 220, + 0, 0, 0, 234, 224, 254, 0, 233, 231, 0, + 232, 230, 320, 0, 225 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -512, -512, -512, 530, -512, 588, -512, 271, -512, 267, - -512, -512, -512, -512, 277, -78, 180, -512, -512, -512, - 299, -512, 239, -512, 143, -512, -512, -512, -512, 154, - -512, -512, -51, -512, -512, -512, -512, -512, -512, 480, - -512, -512, 385, -200, -71, -512, 35, -53, -21, -512, - -512, -76, 358, -512, -512, -512, -121, -512, -512, -166, - -512, 282, -512, -512, -46, -259, -512, -252, 291, -145, - -198, -512, -512, -512, -512, -512, -512, -512, -512, -512, - -511, -512, 339, -512, -512, -512, -512, -512, -131, -512, - -512, -512, -512, -512, 37, -60, -80, -512, -512, -98, - -512, -512, -512, -512, -512, -444, 87, -512, -512, -512, - 0, -512, -512, 90, 378, -512, 304, -512, 386, -512, - 137, -512, -512, -512, 552, -512, -512, -512, -512, -321 + -527, -527, -527, 540, -527, 591, -527, 284, -527, 401, + -527, -527, -527, -527, 292, -87, 262, -527, -527, -527, + 379, -527, 241, -527, 149, -527, -527, -527, -527, 158, + -527, -527, -52, -527, -527, -527, -527, -527, -527, 482, + -527, -527, 387, -185, -84, -527, 168, -54, -30, -527, + -527, -82, 346, -527, -527, -527, -100, -527, -527, -169, + -527, 288, -527, -527, 30, -289, -527, -242, 301, -142, + -188, -527, -527, -527, -527, -527, -527, 344, -527, -527, + -527, 111, -527, -527, -527, -526, -527, -527, -136, -527, + -527, -527, -527, -527, 54, -79, -83, -527, -527, -91, + -527, -527, -527, -527, -527, -460, 94, -527, -527, -527, + 7, -527, -527, 103, 389, -527, 315, -527, 375, -527, + 128, -527, -527, -527, 543, -527, -527, -527, -527, -336 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 19, 20, 21, 22, 73, 251, 252, 23, 66, - 24, 139, 25, 26, 89, 157, 247, 27, 28, 29, - 84, 278, 279, 280, 378, 463, 459, 468, 469, 470, - 281, 30, 93, 31, 244, 245, 32, 33, 34, 149, + 0, 19, 20, 21, 22, 73, 250, 251, 23, 66, + 24, 139, 25, 26, 89, 157, 246, 27, 28, 29, + 84, 277, 278, 279, 376, 460, 456, 465, 466, 467, + 280, 30, 93, 31, 243, 244, 32, 33, 34, 149, 35, 151, 152, 36, 170, 171, 172, 77, 112, 113, - 175, 78, 169, 253, 336, 337, 146, 512, 587, 116, - 259, 260, 348, 108, 180, 254, 127, 128, 255, 256, - 217, 218, 219, 220, 221, 222, 223, 487, 567, 568, - 582, 224, 290, 225, 226, 227, 228, 229, 197, 198, - 199, 230, 231, 232, 233, 234, 130, 131, 132, 133, - 134, 135, 136, 137, 435, 436, 437, 438, 439, 51, - 440, 142, 508, 509, 510, 342, 267, 268, 269, 356, - 454, 37, 38, 63, 64, 441, 505, 596, 71, 237 + 175, 78, 169, 252, 334, 335, 146, 509, 576, 116, + 258, 259, 346, 108, 180, 253, 127, 128, 254, 255, + 217, 218, 219, 220, 221, 222, 223, 289, 224, 225, + 226, 472, 556, 582, 583, 594, 227, 228, 197, 198, + 199, 229, 230, 231, 232, 233, 130, 131, 132, 133, + 134, 135, 136, 137, 432, 433, 434, 435, 436, 51, + 437, 142, 505, 506, 507, 340, 266, 267, 268, 354, + 451, 37, 38, 63, 64, 438, 502, 586, 71, 236 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1170,188 +1170,186 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 216, 95, 41, 274, 257, 44, 99, 100, 101, 167, - 52, 262, 56, 293, 386, 295, 158, 158, 158, 159, - 160, 129, 40, 40, 600, 586, 75, 339, 168, 145, - 242, 261, 578, 263, 265, 398, 173, 455, 578, 173, - 118, 119, 120, 579, 177, 48, 60, 55, 87, 275, - 90, 270, 202, 339, 298, 406, 109, 115, 97, 472, - 102, 298, 548, 109, 283, 289, 284, 158, 591, 235, - 297, 299, 76, 276, 429, 352, 484, 39, 299, 40, - 432, 338, 383, 407, 203, 143, 144, 61, 602, 94, - 498, 42, 110, 154, 293, 327, 239, 351, 98, 110, - 162, 163, 403, 573, 49, 405, 43, 277, 62, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 271, 121, 474, 331, 400, 111, - 514, 114, 499, 307, 353, 559, 111, 500, 164, 241, - 464, 122, 390, 391, 501, 502, 65, 204, 354, 491, - 525, 507, 258, 401, 402, 389, 53, 324, 54, 298, - 325, 503, 296, 452, 453, -330, 504, 298, 338, 206, - 118, 119, 120, 178, 465, 355, 299, 340, 206, 118, - 119, 120, 173, 322, 299, 409, 498, 344, 123, 124, - 125, 179, 75, 580, 387, 307, 581, 325, 238, 580, - 261, 272, 581, 410, 214, 447, 448, 384, 488, 54, - 434, 343, 207, 208, 209, 442, 349, 45, 466, 57, - 346, 207, 208, 209, 426, 298, 50, 46, 499, 58, - 539, 126, 388, 500, 497, 477, 467, 589, 590, 451, - 501, 502, 299, 321, 583, 322, 298, 347, 481, 482, - 393, 69, 210, 585, 307, 121, 298, 503, 47, -283, - 59, 210, 504, 299, 121, 288, 129, 452, 453, 298, - 394, 122, 129, 299, 592, 593, 395, 563, 430, 158, - 122, 456, 264, 478, 67, 68, 299, 535, 288, 211, - 298, 575, 333, 381, 584, 334, 382, 70, 211, 318, - 319, 320, 321, 212, 322, 72, 479, 299, 206, 118, - 119, 120, 212, 298, 79, 532, 80, 533, 123, 124, - 125, 537, 498, 427, 298, 81, 394, 123, 124, 125, - 299, 528, 480, 530, 531, 206, 118, 119, 120, 248, - 249, 299, 298, 483, 561, 85, 86, 494, 213, 214, - 184, 207, 208, 209, 82, 490, 215, 213, 214, 299, - 83, 126, 88, 75, 499, 215, 92, 91, 496, 500, - 126, 184, 516, 96, 103, 325, 501, 502, 207, 208, - 209, 185, 186, 187, 188, 189, 190, 104, 562, 526, - 106, 210, 325, 503, 121, 107, 527, -330, 504, 338, - 541, 553, 558, 338, 554, 325, 206, 118, 119, 120, - 122, 570, 597, 117, 338, 325, 138, 140, 210, 141, - 145, 121, 564, 565, 566, 147, 148, 150, 211, 153, - 206, 118, 119, 120, 155, 156, 538, 122, 118, 595, - 161, 598, 212, 54, 166, 120, 174, 168, 176, 291, - 208, 209, 181, 182, 183, 211, 184, 123, 124, 125, - 200, 201, 236, 243, 1, 246, 240, 114, 250, 212, - 266, 273, 2, 282, 208, 209, 15, 285, 286, 3, - 287, 300, 329, 4, 123, 124, 125, 213, 214, 210, - 294, -284, 121, 323, 5, 215, 326, 6, 7, 330, - 126, 335, 332, 338, 345, 358, 350, 359, 122, 8, - 9, 379, 380, 210, 213, 214, 121, 396, 301, 75, - 10, 428, 215, 11, 399, 404, 292, 126, 408, 444, - 449, 450, 122, 457, 458, 460, 476, 461, 462, 471, - 212, 492, 302, 475, 406, 12, 298, 489, 322, 13, - 292, 486, 493, 495, 511, 123, 124, 125, 506, 513, - 515, 517, 518, 519, 212, 14, 303, 520, 521, 522, - 534, 15, 523, 540, 536, 542, 543, 544, 545, 123, - 124, 125, 546, 547, 549, 213, 214, 304, 550, 576, - 552, 555, 556, 215, 305, 306, 557, 574, 126, 560, - 105, 594, 307, 308, 599, 433, 569, 431, 577, 213, - 214, 588, 74, 284, 16, 17, 18, 215, -332, 603, - 529, 473, 126, 524, 205, 1, 328, 445, 392, 443, - 572, 601, 571, 2, 341, 309, 310, 311, 312, 313, - 3, 385, 314, 315, 4, 316, 317, 318, 319, 320, - 321, 551, 322, 446, 357, 5, 165, 0, 6, 7, - 0, 0, 0, 0, 0, 301, 0, 0, 0, 360, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 361, 0, 11, 0, 0, 362, 363, 364, - 365, 366, 0, 367, 0, 0, 0, 0, 0, 0, - 0, 368, 0, 301, 0, 0, 12, 0, 0, 0, - 13, 0, 0, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 301, 0, 0, 14, 369, 485, 0, - 0, 0, 15, 0, 397, 0, 0, 0, 0, 0, - 0, 301, 306, 0, 0, 370, 0, 371, 372, 307, - 308, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 373, 0, 0, 0, 0, 374, 0, 375, - 0, -333, 397, 0, 0, 16, 17, 18, 0, 376, - 306, 0, 309, 310, 311, 312, 313, 307, 308, 314, - 315, 0, 316, 317, 318, 319, 320, 321, 0, 322, - 306, 0, 0, 0, 0, 0, 0, 307, -333, 0, - 0, 0, 0, 377, 0, 0, 0, 0, 306, 0, - 309, 310, 311, 312, 313, 307, 0, 314, 315, 0, - 316, 317, 318, 319, 320, 321, 0, 322, 0, 0, - -333, -333, -333, 312, 313, 0, 0, 314, 315, 0, - 316, 317, 318, 319, 320, 321, 0, 322, 0, 0, - 0, -333, -333, 0, 0, -333, -333, 0, 316, 317, - 318, 319, 320, 321, 0, 322, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196 + 95, 256, 129, 216, 396, 99, 100, 101, 261, 41, + 159, 160, 44, 158, 158, 158, 167, 52, 273, 56, + 452, 168, 384, 292, 595, 294, 40, 40, 590, 575, + 173, 177, 590, 173, 260, 75, 262, 264, 145, 591, + 337, 337, 469, 544, 344, 97, 269, 202, 115, 305, + 60, 241, 449, 450, 287, 87, 48, 90, 297, 297, + 234, 118, 119, 120, 158, 599, 322, 102, 288, 323, + 297, 345, 461, 296, 403, 298, 298, 604, 109, 203, + 178, 448, 426, 566, 297, 98, 323, 298, 429, 39, + 349, 61, 143, 144, 473, 238, 381, 325, 179, 320, + 154, 298, 404, 292, 40, 270, 462, 162, 163, 449, + 450, 401, 511, 402, 110, 42, 488, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 522, 398, 206, 118, 119, 120, 206, 118, + 119, 120, 204, 257, 388, 389, 121, 329, 240, 387, + 463, 111, 297, 350, 297, 399, 400, 297, 558, 109, + 274, 295, 122, 477, 338, 504, 50, 54, 464, 298, + 297, 298, 336, 342, 298, 173, 406, 207, 208, 209, + 55, 207, 208, 209, 275, 305, 483, 298, 282, 592, + 283, 336, 593, 592, 407, 110, 593, 535, 43, 391, + 382, 260, 385, 49, 214, 76, 444, 445, 271, 123, + 124, 125, 351, 54, 431, 485, 62, 210, 276, 392, + 121, 210, 94, 53, 121, 393, 352, 114, 65, 423, + 386, 574, 111, 319, 439, 320, 122, 75, 69, 297, + 122, 530, 70, 237, 72, 129, 494, 263, 287, 480, + 481, 129, 126, 353, 211, 79, 298, 568, 211, 45, + 206, 118, 119, 120, 206, 118, 119, 120, 212, 46, + 453, 164, 212, 478, 158, 427, 80, 297, 81, 560, + 297, 578, 57, 123, 124, 125, 341, 123, 124, 125, + 476, 347, 58, 392, 298, 531, 533, 298, 331, 479, + 47, 332, 297, 207, 208, 209, 83, 207, 208, 209, + 82, 305, 88, 213, 214, 75, 96, 213, 214, 298, + 103, 215, 91, 59, 379, 215, 126, 380, 424, 491, + 126, 493, 184, 526, 184, 528, 529, 104, 513, 523, + 482, 323, 323, 210, 106, 525, 121, 210, 336, 92, + 121, 487, 206, 118, 119, 120, 316, 317, 318, 319, + 537, 320, 122, 336, 117, 549, 122, 554, 550, 107, + 323, 138, 206, 118, 119, 120, 597, 598, 563, 140, + 211, 336, 587, 141, 211, 323, 145, 571, 147, 561, + 579, 580, 581, 148, 212, 290, 208, 209, 212, 185, + 186, 187, 188, 189, 190, 150, 495, 600, 601, 123, + 124, 125, 299, 123, 124, 125, 208, 209, 67, 68, + 153, 247, 248, 155, 495, 85, 86, 156, 118, 161, + 54, 585, 534, 588, 166, 210, 120, 168, 121, 213, + 214, 174, 176, 213, 214, 181, 182, 215, 496, 300, + 200, 215, 126, 497, 122, 210, 126, 183, 121, 184, + 498, 499, 201, 235, 239, 242, 496, 245, 249, 114, + 265, 497, 291, 272, 122, 281, 15, 500, 498, 499, + 284, -330, 501, 321, 293, 285, 212, 286, 324, 327, + 330, 333, 291, 328, 348, 500, 356, 301, 336, -330, + 501, 123, 124, 125, 343, 357, 212, 377, 378, 75, + 394, 425, 397, 405, 441, 446, 447, 454, 302, 474, + 455, 123, 124, 125, 457, 303, 304, 458, 459, 468, + 471, 213, 214, 305, 306, 475, 403, 297, 489, 215, + 492, 486, 320, 508, 126, 490, 510, 514, 512, 503, + 519, 213, 214, 515, 516, 517, 518, 532, 520, 215, + 524, 539, 536, 538, 126, 540, 307, 308, 309, 310, + 311, 541, 542, 312, 313, -283, 314, 315, 316, 317, + 318, 319, -332, 320, 1, 543, 545, 546, 548, 1, + 555, 551, 2, -284, 552, 569, 553, 2, 300, 3, + 559, 562, 567, 4, 3, 570, 577, 584, 4, 589, + 105, 283, 602, 603, 5, 74, 430, 6, 7, 5, + 428, 470, 6, 7, 521, 527, 205, 326, 383, 8, + 9, 442, 390, 565, 8, 9, 557, 440, 596, 547, + 10, 564, 355, 11, 339, 10, 301, 165, 11, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 484, 443, 0, 0, 12, 0, 395, 0, 13, + 12, 0, 0, 0, 13, 304, 300, 0, 0, 358, + 0, 0, 305, 306, 0, 14, 0, 0, 0, 0, + 14, 15, 359, 0, 0, 0, 15, 360, 361, 362, + 363, 364, 0, 365, 0, 0, 0, 0, 0, 0, + 0, 366, 495, 0, 300, 307, 308, 309, 310, 311, + 0, 0, 312, 313, 301, 314, 315, 316, 317, 318, + 319, 0, 320, 0, 16, 17, 18, 367, 300, 16, + 17, 18, 0, 0, 0, 395, 0, 0, 0, 0, + 0, 0, 0, 304, 496, 368, 0, 369, 370, 497, + 305, 306, -333, 0, 0, 0, 498, 499, 0, 0, + 572, 0, 371, 0, 0, 0, 0, 372, 0, 373, + 0, 0, 0, 500, 0, 0, 0, 0, 501, 374, + 0, 304, 0, 307, 308, 309, 310, 311, 305, -333, + 312, 313, 0, 314, 315, 316, 317, 318, 319, 0, + 320, 0, 0, 0, 0, 304, 0, 0, 0, 0, + 573, 0, 305, 375, 0, 0, 0, 0, 0, 0, + 0, -333, -333, -333, 310, 311, 0, 0, 312, 313, + 0, 314, 315, 316, 317, 318, 319, 0, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -333, -333, + 0, 0, -333, -333, 0, 314, 315, 316, 317, 318, + 319, 0, 320 }; static const yytype_int16 yycheck[] = { - 145, 54, 2, 203, 170, 5, 57, 58, 59, 107, - 10, 177, 12, 211, 3, 213, 96, 97, 98, 97, - 98, 81, 3, 3, 3, 51, 58, 3, 12, 84, - 151, 176, 6, 178, 179, 294, 112, 358, 6, 115, - 4, 5, 6, 17, 115, 95, 19, 12, 48, 3, - 50, 182, 95, 3, 117, 102, 9, 78, 95, 380, - 60, 117, 506, 9, 190, 210, 192, 147, 579, 147, - 215, 134, 37, 27, 326, 63, 189, 26, 134, 3, - 332, 194, 282, 130, 127, 85, 86, 60, 599, 54, - 25, 3, 45, 93, 292, 240, 149, 55, 135, 45, - 100, 101, 300, 547, 95, 303, 3, 61, 3, 307, + 54, 170, 81, 145, 293, 57, 58, 59, 177, 2, + 97, 98, 5, 96, 97, 98, 107, 10, 203, 12, + 356, 12, 3, 211, 3, 213, 3, 3, 6, 51, + 112, 115, 6, 115, 176, 58, 178, 179, 84, 17, + 3, 3, 378, 503, 91, 95, 182, 95, 78, 138, + 19, 151, 160, 161, 113, 48, 95, 50, 117, 117, + 147, 4, 5, 6, 147, 591, 191, 60, 210, 194, + 117, 118, 27, 215, 102, 134, 134, 603, 9, 127, + 55, 132, 324, 543, 117, 135, 194, 134, 330, 26, + 55, 60, 85, 86, 383, 149, 281, 239, 73, 188, + 93, 134, 130, 291, 3, 184, 61, 100, 101, 160, + 161, 299, 448, 301, 45, 3, 405, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 184, 89, 385, 248, 191, 82, - 451, 77, 67, 138, 122, 191, 82, 72, 103, 194, - 27, 105, 287, 288, 79, 80, 156, 190, 136, 408, - 471, 127, 173, 298, 299, 286, 81, 191, 190, 117, - 194, 96, 215, 160, 161, 100, 101, 117, 194, 3, - 4, 5, 6, 55, 61, 163, 134, 127, 3, 4, - 5, 6, 258, 188, 134, 105, 25, 258, 152, 153, - 154, 73, 58, 167, 183, 138, 170, 194, 64, 167, - 345, 201, 170, 123, 183, 350, 351, 191, 406, 190, - 190, 257, 46, 47, 48, 336, 262, 71, 105, 71, - 91, 46, 47, 48, 322, 117, 99, 81, 67, 81, - 489, 195, 285, 72, 434, 127, 123, 168, 169, 132, - 79, 80, 134, 186, 83, 188, 117, 118, 393, 394, - 93, 0, 86, 574, 138, 89, 117, 96, 112, 194, - 112, 86, 101, 134, 89, 113, 326, 160, 161, 117, - 113, 105, 332, 134, 168, 169, 119, 536, 329, 359, - 105, 359, 116, 110, 17, 18, 134, 485, 113, 123, - 117, 550, 191, 191, 133, 194, 194, 193, 123, 183, - 184, 185, 186, 137, 188, 114, 93, 134, 3, 4, - 5, 6, 137, 117, 3, 119, 192, 110, 152, 153, - 154, 487, 25, 323, 117, 190, 113, 152, 153, 154, - 134, 476, 119, 478, 479, 3, 4, 5, 6, 159, - 160, 134, 117, 396, 119, 46, 47, 191, 182, 183, - 194, 46, 47, 48, 95, 408, 190, 182, 183, 134, - 129, 195, 3, 58, 67, 190, 129, 125, 191, 72, - 195, 194, 191, 135, 127, 194, 79, 80, 46, 47, - 48, 140, 141, 142, 143, 144, 145, 194, 533, 191, - 98, 86, 194, 96, 89, 126, 191, 100, 101, 194, - 191, 191, 191, 194, 194, 194, 3, 4, 5, 6, - 105, 191, 191, 3, 194, 194, 4, 123, 86, 3, - 84, 89, 164, 165, 166, 94, 190, 3, 123, 46, - 3, 4, 5, 6, 191, 191, 489, 105, 4, 584, - 3, 586, 137, 190, 190, 6, 116, 12, 128, 46, - 47, 48, 4, 4, 191, 123, 194, 152, 153, 154, - 46, 133, 3, 92, 7, 114, 171, 77, 3, 137, - 120, 3, 15, 127, 47, 48, 114, 190, 190, 22, - 190, 17, 39, 26, 152, 153, 154, 182, 183, 86, - 188, 194, 89, 99, 37, 190, 190, 40, 41, 49, - 195, 95, 190, 194, 194, 190, 55, 94, 105, 52, - 53, 122, 190, 86, 182, 183, 89, 190, 54, 58, - 63, 3, 190, 66, 191, 190, 123, 195, 190, 3, - 163, 122, 105, 190, 190, 190, 95, 190, 190, 190, - 137, 105, 78, 191, 102, 88, 117, 190, 188, 92, - 123, 106, 189, 3, 70, 152, 153, 154, 194, 63, - 162, 6, 6, 6, 137, 108, 102, 6, 6, 122, - 191, 114, 105, 191, 128, 191, 100, 79, 79, 152, - 153, 154, 79, 100, 3, 182, 183, 123, 128, 6, - 191, 191, 191, 190, 130, 131, 191, 190, 195, 191, - 70, 190, 138, 139, 117, 334, 191, 330, 191, 182, - 183, 191, 24, 192, 157, 158, 159, 190, 0, 191, - 477, 382, 195, 469, 144, 7, 241, 345, 289, 338, - 543, 594, 542, 15, 256, 171, 172, 173, 174, 175, - 22, 283, 178, 179, 26, 181, 182, 183, 184, 185, - 186, 514, 188, 349, 268, 37, 104, -1, 40, 41, - -1, -1, -1, -1, -1, 54, -1, -1, -1, 11, - 52, 53, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 63, 24, -1, 66, -1, -1, 29, 30, 31, + 318, 319, 468, 191, 3, 4, 5, 6, 3, 4, + 5, 6, 190, 173, 286, 287, 89, 247, 194, 285, + 105, 82, 117, 63, 117, 297, 298, 117, 191, 9, + 3, 215, 105, 110, 127, 127, 99, 190, 123, 134, + 117, 134, 194, 257, 134, 257, 105, 46, 47, 48, + 12, 46, 47, 48, 27, 138, 189, 134, 190, 167, + 192, 194, 170, 167, 123, 45, 170, 486, 3, 93, + 191, 343, 183, 95, 183, 37, 348, 349, 201, 152, + 153, 154, 122, 190, 190, 403, 3, 86, 61, 113, + 89, 86, 54, 81, 89, 119, 136, 77, 156, 320, + 284, 567, 82, 186, 334, 188, 105, 58, 0, 117, + 105, 119, 193, 64, 114, 324, 431, 116, 113, 391, + 392, 330, 195, 163, 123, 3, 134, 546, 123, 71, + 3, 4, 5, 6, 3, 4, 5, 6, 137, 81, + 357, 103, 137, 93, 357, 327, 192, 117, 190, 119, + 117, 570, 71, 152, 153, 154, 256, 152, 153, 154, + 127, 261, 81, 113, 134, 110, 484, 134, 191, 119, + 112, 194, 117, 46, 47, 48, 129, 46, 47, 48, + 95, 138, 3, 182, 183, 58, 135, 182, 183, 134, + 127, 190, 125, 112, 191, 190, 195, 194, 321, 191, + 195, 191, 194, 475, 194, 477, 478, 194, 191, 191, + 394, 194, 194, 86, 98, 191, 89, 86, 194, 129, + 89, 405, 3, 4, 5, 6, 183, 184, 185, 186, + 191, 188, 105, 194, 3, 191, 105, 191, 194, 126, + 194, 4, 3, 4, 5, 6, 168, 169, 191, 123, + 123, 194, 191, 3, 123, 194, 84, 556, 94, 531, + 164, 165, 166, 190, 137, 46, 47, 48, 137, 140, + 141, 142, 143, 144, 145, 3, 25, 168, 169, 152, + 153, 154, 17, 152, 153, 154, 47, 48, 17, 18, + 46, 159, 160, 191, 25, 46, 47, 191, 4, 3, + 190, 573, 486, 575, 190, 86, 6, 12, 89, 182, + 183, 116, 128, 182, 183, 4, 4, 190, 67, 54, + 46, 190, 195, 72, 105, 86, 195, 191, 89, 194, + 79, 80, 133, 3, 171, 92, 67, 114, 3, 77, + 120, 72, 123, 3, 105, 127, 114, 96, 79, 80, + 190, 100, 101, 99, 188, 190, 137, 190, 190, 39, + 190, 95, 123, 49, 55, 96, 190, 102, 194, 100, + 101, 152, 153, 154, 194, 94, 137, 122, 190, 58, + 190, 3, 191, 190, 3, 163, 122, 190, 123, 191, + 190, 152, 153, 154, 190, 130, 131, 190, 190, 190, + 78, 182, 183, 138, 139, 95, 102, 117, 105, 190, + 3, 190, 188, 70, 195, 189, 63, 6, 162, 194, + 122, 182, 183, 6, 6, 6, 6, 191, 105, 190, + 190, 100, 191, 191, 195, 79, 171, 172, 173, 174, + 175, 79, 79, 178, 179, 194, 181, 182, 183, 184, + 185, 186, 0, 188, 7, 100, 3, 128, 191, 7, + 106, 191, 15, 194, 191, 6, 191, 15, 54, 22, + 191, 191, 190, 26, 22, 128, 191, 190, 26, 191, + 70, 192, 191, 117, 37, 24, 332, 40, 41, 37, + 328, 380, 40, 41, 466, 476, 144, 240, 282, 52, + 53, 343, 288, 539, 52, 53, 525, 336, 584, 511, + 63, 538, 267, 66, 255, 63, 102, 104, 66, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 117, 347, -1, -1, 88, -1, 123, -1, 92, + 88, -1, -1, -1, 92, 131, 54, -1, -1, 11, + -1, -1, 138, 139, -1, 108, -1, -1, -1, -1, + 108, 114, 24, -1, -1, -1, 114, 29, 30, 31, 32, 33, -1, 35, -1, -1, -1, -1, -1, -1, - -1, 43, -1, 54, -1, -1, 88, -1, -1, -1, - 92, -1, -1, 102, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, -1, 108, 69, 117, -1, - -1, -1, 114, -1, 123, -1, -1, -1, -1, -1, - -1, 54, 131, -1, -1, 87, -1, 89, 90, 138, - 139, 102, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 104, -1, -1, -1, -1, 109, -1, 111, - -1, 102, 123, -1, -1, 157, 158, 159, -1, 121, - 131, -1, 171, 172, 173, 174, 175, 138, 139, 178, - 179, -1, 181, 182, 183, 184, 185, 186, -1, 188, - 131, -1, -1, -1, -1, -1, -1, 138, 139, -1, - -1, -1, -1, 155, -1, -1, -1, -1, 131, -1, - 171, 172, 173, 174, 175, 138, -1, 178, 179, -1, - 181, 182, 183, 184, 185, 186, -1, 188, -1, -1, - 171, 172, 173, 174, 175, -1, -1, 178, 179, -1, - 181, 182, 183, 184, 185, 186, -1, 188, -1, -1, - -1, 174, 175, -1, -1, 178, 179, -1, 181, 182, - 183, 184, 185, 186, -1, 188, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151 + -1, 43, 25, -1, 54, 171, 172, 173, 174, 175, + -1, -1, 178, 179, 102, 181, 182, 183, 184, 185, + 186, -1, 188, -1, 157, 158, 159, 69, 54, 157, + 158, 159, -1, -1, -1, 123, -1, -1, -1, -1, + -1, -1, -1, 131, 67, 87, -1, 89, 90, 72, + 138, 139, 102, -1, -1, -1, 79, 80, -1, -1, + 83, -1, 104, -1, -1, -1, -1, 109, -1, 111, + -1, -1, -1, 96, -1, -1, -1, -1, 101, 121, + -1, 131, -1, 171, 172, 173, 174, 175, 138, 139, + 178, 179, -1, 181, 182, 183, 184, 185, 186, -1, + 188, -1, -1, -1, -1, 131, -1, -1, -1, -1, + 133, -1, 138, 155, -1, -1, -1, -1, -1, -1, + -1, 171, 172, 173, 174, 175, -1, -1, 178, 179, + -1, 181, 182, 183, 184, 185, 186, -1, 188, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 174, 175, + -1, -1, 178, 179, -1, 181, 182, 183, 184, 185, + 186, -1, 188 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1380,45 +1378,45 @@ static const yytype_int16 yystos[] = 145, 146, 147, 148, 149, 150, 151, 284, 285, 286, 46, 133, 95, 127, 190, 235, 3, 46, 47, 48, 86, 123, 137, 182, 183, 190, 265, 266, 267, 268, - 269, 270, 271, 272, 277, 279, 280, 281, 282, 283, - 287, 288, 289, 290, 291, 211, 3, 325, 64, 243, - 171, 194, 252, 92, 230, 231, 114, 212, 212, 212, - 3, 202, 203, 249, 261, 264, 265, 255, 244, 256, - 257, 265, 255, 265, 116, 265, 120, 312, 313, 314, - 284, 291, 306, 3, 239, 3, 27, 61, 217, 218, - 219, 226, 127, 190, 192, 190, 190, 190, 113, 265, - 278, 46, 123, 266, 188, 266, 243, 265, 117, 134, - 17, 54, 78, 102, 123, 130, 131, 138, 139, 171, - 172, 173, 174, 175, 178, 179, 181, 182, 183, 184, - 185, 186, 188, 99, 191, 194, 190, 265, 238, 39, - 49, 252, 190, 191, 194, 95, 250, 251, 194, 3, - 127, 310, 311, 260, 240, 194, 91, 118, 258, 260, - 55, 55, 63, 122, 136, 163, 315, 314, 190, 94, - 11, 24, 29, 30, 31, 32, 33, 35, 43, 69, - 87, 89, 90, 104, 109, 111, 121, 155, 220, 122, - 190, 191, 194, 239, 191, 248, 3, 183, 243, 284, - 265, 265, 278, 93, 113, 119, 190, 123, 261, 191, - 191, 265, 265, 266, 190, 266, 102, 130, 190, 105, - 123, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 266, 266, 295, 306, 3, 263, - 228, 210, 263, 203, 190, 300, 301, 302, 303, 304, - 306, 321, 252, 264, 3, 257, 312, 265, 265, 163, - 122, 132, 160, 161, 316, 325, 211, 190, 190, 222, - 190, 190, 190, 221, 27, 61, 105, 123, 223, 224, - 225, 190, 325, 218, 261, 191, 95, 127, 110, 93, - 119, 265, 265, 243, 189, 117, 106, 273, 266, 190, - 243, 261, 105, 189, 191, 3, 191, 239, 25, 67, - 72, 79, 80, 96, 101, 322, 194, 127, 308, 309, - 310, 70, 253, 63, 325, 162, 191, 6, 6, 6, - 6, 6, 122, 105, 225, 325, 191, 191, 265, 220, - 265, 265, 119, 110, 191, 266, 128, 255, 243, 261, - 191, 191, 191, 100, 79, 79, 79, 100, 301, 3, - 128, 316, 191, 191, 194, 191, 191, 191, 191, 191, - 191, 119, 265, 261, 164, 165, 166, 274, 275, 191, - 191, 309, 302, 301, 190, 261, 6, 191, 6, 17, - 167, 170, 276, 83, 133, 325, 51, 254, 191, 168, - 169, 276, 168, 169, 190, 265, 323, 191, 265, 117, - 3, 290, 276, 191 + 269, 270, 271, 272, 274, 275, 276, 282, 283, 287, + 288, 289, 290, 291, 211, 3, 325, 64, 243, 171, + 194, 252, 92, 230, 231, 114, 212, 212, 212, 3, + 202, 203, 249, 261, 264, 265, 255, 244, 256, 257, + 265, 255, 265, 116, 265, 120, 312, 313, 314, 284, + 291, 306, 3, 239, 3, 27, 61, 217, 218, 219, + 226, 127, 190, 192, 190, 190, 190, 113, 265, 273, + 46, 123, 266, 188, 266, 243, 265, 117, 134, 17, + 54, 102, 123, 130, 131, 138, 139, 171, 172, 173, + 174, 175, 178, 179, 181, 182, 183, 184, 185, 186, + 188, 99, 191, 194, 190, 265, 238, 39, 49, 252, + 190, 191, 194, 95, 250, 251, 194, 3, 127, 310, + 311, 260, 240, 194, 91, 118, 258, 260, 55, 55, + 63, 122, 136, 163, 315, 314, 190, 94, 11, 24, + 29, 30, 31, 32, 33, 35, 43, 69, 87, 89, + 90, 104, 109, 111, 121, 155, 220, 122, 190, 191, + 194, 239, 191, 248, 3, 183, 243, 284, 265, 265, + 273, 93, 113, 119, 190, 123, 261, 191, 191, 265, + 265, 266, 266, 102, 130, 190, 105, 123, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 295, 306, 3, 263, 228, 210, 263, + 203, 190, 300, 301, 302, 303, 304, 306, 321, 252, + 264, 3, 257, 312, 265, 265, 163, 122, 132, 160, + 161, 316, 325, 211, 190, 190, 222, 190, 190, 190, + 221, 27, 61, 105, 123, 223, 224, 225, 190, 325, + 218, 78, 277, 261, 191, 95, 127, 110, 93, 119, + 265, 265, 243, 189, 117, 266, 190, 243, 261, 105, + 189, 191, 3, 191, 239, 25, 67, 72, 79, 80, + 96, 101, 322, 194, 127, 308, 309, 310, 70, 253, + 63, 325, 162, 191, 6, 6, 6, 6, 6, 122, + 105, 225, 325, 191, 190, 191, 265, 220, 265, 265, + 119, 110, 191, 266, 243, 261, 191, 191, 191, 100, + 79, 79, 79, 100, 301, 3, 128, 316, 191, 191, + 194, 191, 191, 191, 191, 106, 278, 277, 191, 191, + 119, 265, 191, 191, 309, 302, 301, 190, 261, 6, + 128, 255, 83, 133, 325, 51, 254, 191, 261, 164, + 165, 166, 279, 280, 190, 265, 323, 191, 265, 191, + 6, 17, 167, 170, 281, 3, 290, 168, 169, 281, + 168, 169, 191, 117, 281 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1440,14 +1438,14 @@ static const yytype_int16 yyr1[] = 249, 250, 250, 251, 252, 252, 253, 253, 254, 254, 255, 255, 256, 256, 257, 258, 258, 258, 259, 259, 260, 260, 260, 260, 260, 260, 261, 261, 262, 262, - 263, 263, 264, 265, 265, 265, 265, 265, 265, 266, - 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, - 267, 267, 268, 268, 268, 268, 268, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 270, 270, - 271, 271, 271, 271, 272, 273, 273, 274, 274, 274, - 275, 275, 275, 276, 276, 276, 276, 276, 277, 277, - 277, 277, 278, 278, 279, 279, 280, 280, 280, 280, - 280, 280, 280, 281, 281, 282, 283, 284, 284, 284, + 263, 263, 264, 265, 265, 265, 265, 265, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 267, + 267, 268, 268, 268, 268, 268, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 270, 270, 271, + 271, 271, 271, 272, 272, 272, 272, 273, 273, 274, + 274, 275, 275, 275, 275, 275, 275, 275, 276, 276, + 277, 277, 278, 278, 279, 279, 279, 280, 280, 280, + 281, 281, 281, 281, 281, 282, 283, 284, 284, 284, 284, 284, 284, 285, 285, 285, 285, 285, 285, 286, 286, 287, 288, 289, 290, 290, 290, 290, 291, 291, 291, 291, 291, 291, 291, 292, 293, 293, 294, 294, @@ -1479,14 +1477,14 @@ static const yytype_int8 yyr2[] = 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, 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, 7, 3, 0, 2, 5, 0, - 1, 1, 1, 2, 2, 2, 2, 1, 4, 6, - 3, 5, 4, 5, 4, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 6, 6, 1, 1, 1, + 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, 4, 6, + 6, 0, 3, 0, 2, 5, 0, 1, 1, 1, + 2, 2, 2, 2, 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2060,31 +2058,31 @@ yydestruct (const char *yymsg, switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2066 "bison_parser.cpp" +#line 2064 "bison_parser.cpp" break; case YYSYMBOL_STRING: /* STRING */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2072 "bison_parser.cpp" +#line 2070 "bison_parser.cpp" break; case YYSYMBOL_FLOATVAL: /* FLOATVAL */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2078 "bison_parser.cpp" +#line 2076 "bison_parser.cpp" break; case YYSYMBOL_INTVAL: /* INTVAL */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2084 "bison_parser.cpp" +#line 2082 "bison_parser.cpp" break; case YYSYMBOL_statement_list: /* statement_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).stmt_vec)) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -2093,23 +2091,23 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2097 "bison_parser.cpp" +#line 2095 "bison_parser.cpp" break; case YYSYMBOL_statement: /* statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2103 "bison_parser.cpp" +#line 2101 "bison_parser.cpp" break; case YYSYMBOL_preparable_statement: /* preparable_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2109 "bison_parser.cpp" +#line 2107 "bison_parser.cpp" break; case YYSYMBOL_opt_hints: /* opt_hints */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2118,11 +2116,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2122 "bison_parser.cpp" +#line 2120 "bison_parser.cpp" break; case YYSYMBOL_hint_list: /* hint_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2131,89 +2129,89 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2135 "bison_parser.cpp" +#line 2133 "bison_parser.cpp" break; case YYSYMBOL_hint: /* hint */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2141 "bison_parser.cpp" +#line 2139 "bison_parser.cpp" break; case YYSYMBOL_transaction_statement: /* transaction_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2147 "bison_parser.cpp" +#line 2145 "bison_parser.cpp" break; case YYSYMBOL_prepare_statement: /* prepare_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2153 "bison_parser.cpp" +#line 2151 "bison_parser.cpp" break; case YYSYMBOL_prepare_target_query: /* prepare_target_query */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2159 "bison_parser.cpp" +#line 2157 "bison_parser.cpp" break; case YYSYMBOL_execute_statement: /* execute_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2165 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" break; case YYSYMBOL_import_statement: /* import_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2171 "bison_parser.cpp" +#line 2169 "bison_parser.cpp" break; case YYSYMBOL_file_type: /* file_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2177 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; case YYSYMBOL_file_path: /* file_path */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2183 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; case YYSYMBOL_opt_file_type: /* opt_file_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2189 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" break; case YYSYMBOL_export_statement: /* export_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2195 "bison_parser.cpp" +#line 2193 "bison_parser.cpp" break; case YYSYMBOL_show_statement: /* show_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2201 "bison_parser.cpp" +#line 2199 "bison_parser.cpp" break; case YYSYMBOL_create_statement: /* create_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2207 "bison_parser.cpp" +#line 2205 "bison_parser.cpp" break; case YYSYMBOL_opt_not_exists: /* opt_not_exists */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2213 "bison_parser.cpp" +#line 2211 "bison_parser.cpp" break; case YYSYMBOL_table_elem_commalist: /* table_elem_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).table_element_vec)) { for (auto ptr : *(((*yyvaluep).table_element_vec))) { @@ -2222,113 +2220,113 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_element_vec)); } -#line 2226 "bison_parser.cpp" +#line 2224 "bison_parser.cpp" break; case YYSYMBOL_table_elem: /* table_elem */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table_element_t)); } -#line 2232 "bison_parser.cpp" +#line 2230 "bison_parser.cpp" break; case YYSYMBOL_column_def: /* column_def */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2238 "bison_parser.cpp" +#line 2236 "bison_parser.cpp" break; case YYSYMBOL_column_type: /* column_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2244 "bison_parser.cpp" +#line 2242 "bison_parser.cpp" break; case YYSYMBOL_opt_time_precision: /* opt_time_precision */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2250 "bison_parser.cpp" +#line 2248 "bison_parser.cpp" break; case YYSYMBOL_opt_decimal_specification: /* opt_decimal_specification */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).ival_pair)); } -#line 2256 "bison_parser.cpp" +#line 2254 "bison_parser.cpp" break; case YYSYMBOL_opt_column_constraints: /* opt_column_constraints */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2262 "bison_parser.cpp" +#line 2260 "bison_parser.cpp" break; case YYSYMBOL_column_constraint_set: /* column_constraint_set */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2268 "bison_parser.cpp" +#line 2266 "bison_parser.cpp" break; case YYSYMBOL_column_constraint: /* column_constraint */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2274 "bison_parser.cpp" +#line 2272 "bison_parser.cpp" break; case YYSYMBOL_table_constraint: /* table_constraint */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table_constraint_t)); } -#line 2280 "bison_parser.cpp" +#line 2278 "bison_parser.cpp" break; case YYSYMBOL_drop_statement: /* drop_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2286 "bison_parser.cpp" +#line 2284 "bison_parser.cpp" break; case YYSYMBOL_opt_exists: /* opt_exists */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2292 "bison_parser.cpp" +#line 2290 "bison_parser.cpp" break; case YYSYMBOL_alter_statement: /* alter_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alter_stmt)); } -#line 2298 "bison_parser.cpp" +#line 2296 "bison_parser.cpp" break; case YYSYMBOL_alter_action: /* alter_action */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alter_action_t)); } -#line 2304 "bison_parser.cpp" +#line 2302 "bison_parser.cpp" break; case YYSYMBOL_drop_action: /* drop_action */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).drop_action_t)); } -#line 2310 "bison_parser.cpp" +#line 2308 "bison_parser.cpp" break; case YYSYMBOL_delete_statement: /* delete_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2316 "bison_parser.cpp" +#line 2314 "bison_parser.cpp" break; case YYSYMBOL_truncate_statement: /* truncate_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2322 "bison_parser.cpp" +#line 2320 "bison_parser.cpp" break; case YYSYMBOL_insert_statement: /* insert_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2328 "bison_parser.cpp" +#line 2326 "bison_parser.cpp" break; case YYSYMBOL_opt_column_list: /* opt_column_list */ -#line 172 "bison_parser.y" +#line 173 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2337,17 +2335,17 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2341 "bison_parser.cpp" +#line 2339 "bison_parser.cpp" break; case YYSYMBOL_update_statement: /* update_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2347 "bison_parser.cpp" +#line 2345 "bison_parser.cpp" break; case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).update_vec)) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -2356,77 +2354,77 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2360 "bison_parser.cpp" +#line 2358 "bison_parser.cpp" break; case YYSYMBOL_update_clause: /* update_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2366 "bison_parser.cpp" +#line 2364 "bison_parser.cpp" break; case YYSYMBOL_select_statement: /* select_statement */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2372 "bison_parser.cpp" +#line 2370 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2378 "bison_parser.cpp" +#line 2376 "bison_parser.cpp" break; case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2384 "bison_parser.cpp" +#line 2382 "bison_parser.cpp" break; case YYSYMBOL_select_with_paren: /* select_with_paren */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2390 "bison_parser.cpp" +#line 2388 "bison_parser.cpp" break; case YYSYMBOL_select_no_paren: /* select_no_paren */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2396 "bison_parser.cpp" +#line 2394 "bison_parser.cpp" break; case YYSYMBOL_set_operator: /* set_operator */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2402 "bison_parser.cpp" +#line 2400 "bison_parser.cpp" break; case YYSYMBOL_set_type: /* set_type */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2408 "bison_parser.cpp" +#line 2406 "bison_parser.cpp" break; case YYSYMBOL_opt_all: /* opt_all */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2414 "bison_parser.cpp" +#line 2412 "bison_parser.cpp" break; case YYSYMBOL_select_clause: /* select_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2420 "bison_parser.cpp" +#line 2418 "bison_parser.cpp" break; case YYSYMBOL_opt_distinct: /* opt_distinct */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2426 "bison_parser.cpp" +#line 2424 "bison_parser.cpp" break; case YYSYMBOL_select_list: /* select_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2435,41 +2433,41 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2439 "bison_parser.cpp" +#line 2437 "bison_parser.cpp" break; case YYSYMBOL_opt_from_clause: /* opt_from_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2445 "bison_parser.cpp" +#line 2443 "bison_parser.cpp" break; case YYSYMBOL_from_clause: /* from_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2451 "bison_parser.cpp" +#line 2449 "bison_parser.cpp" break; case YYSYMBOL_opt_where: /* opt_where */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2457 "bison_parser.cpp" +#line 2455 "bison_parser.cpp" break; case YYSYMBOL_opt_group: /* opt_group */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2463 "bison_parser.cpp" +#line 2461 "bison_parser.cpp" break; case YYSYMBOL_opt_having: /* opt_having */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2469 "bison_parser.cpp" +#line 2467 "bison_parser.cpp" break; case YYSYMBOL_opt_order: /* opt_order */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2478,11 +2476,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2482 "bison_parser.cpp" +#line 2480 "bison_parser.cpp" break; case YYSYMBOL_order_list: /* order_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).order_vec)) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2491,35 +2489,35 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2495 "bison_parser.cpp" +#line 2493 "bison_parser.cpp" break; case YYSYMBOL_order_desc: /* order_desc */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2501 "bison_parser.cpp" +#line 2499 "bison_parser.cpp" break; case YYSYMBOL_opt_order_type: /* opt_order_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2507 "bison_parser.cpp" +#line 2505 "bison_parser.cpp" break; case YYSYMBOL_opt_top: /* opt_top */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2513 "bison_parser.cpp" +#line 2511 "bison_parser.cpp" break; case YYSYMBOL_opt_limit: /* opt_limit */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2519 "bison_parser.cpp" +#line 2517 "bison_parser.cpp" break; case YYSYMBOL_expr_list: /* expr_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2528,11 +2526,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2532 "bison_parser.cpp" +#line 2530 "bison_parser.cpp" break; case YYSYMBOL_opt_literal_list: /* opt_literal_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2541,11 +2539,11 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2545 "bison_parser.cpp" +#line 2543 "bison_parser.cpp" break; case YYSYMBOL_literal_list: /* literal_list */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2554,65 +2552,95 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2558 "bison_parser.cpp" +#line 2556 "bison_parser.cpp" break; case YYSYMBOL_expr_alias: /* expr_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2564 "bison_parser.cpp" +#line 2562 "bison_parser.cpp" break; case YYSYMBOL_expr: /* expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2570 "bison_parser.cpp" +#line 2568 "bison_parser.cpp" break; case YYSYMBOL_operand: /* operand */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2576 "bison_parser.cpp" +#line 2574 "bison_parser.cpp" break; case YYSYMBOL_scalar_expr: /* scalar_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2582 "bison_parser.cpp" +#line 2580 "bison_parser.cpp" break; case YYSYMBOL_unary_expr: /* unary_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2588 "bison_parser.cpp" +#line 2586 "bison_parser.cpp" break; case YYSYMBOL_binary_expr: /* binary_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2594 "bison_parser.cpp" +#line 2592 "bison_parser.cpp" break; case YYSYMBOL_logic_expr: /* logic_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2600 "bison_parser.cpp" +#line 2598 "bison_parser.cpp" break; case YYSYMBOL_in_expr: /* in_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2604 "bison_parser.cpp" + break; + + case YYSYMBOL_case_expr: /* case_expr */ +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2606 "bison_parser.cpp" +#line 2610 "bison_parser.cpp" break; - case YYSYMBOL_window_expr: /* window_expr */ -#line 189 "bison_parser.y" + case YYSYMBOL_case_list: /* case_list */ +#line 190 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2616 "bison_parser.cpp" + break; + + case YYSYMBOL_exists_expr: /* exists_expr */ +#line 190 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2622 "bison_parser.cpp" + break; + + case YYSYMBOL_comp_expr: /* comp_expr */ +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2612 "bison_parser.cpp" +#line 2628 "bison_parser.cpp" + break; + + case YYSYMBOL_function_expr: /* function_expr */ +#line 190 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2634 "bison_parser.cpp" + break; + + case YYSYMBOL_opt_window: /* opt_window */ +#line 190 "bison_parser.y" + { delete (((*yyvaluep).window_description)); } +#line 2640 "bison_parser.cpp" break; case YYSYMBOL_opt_partition: /* opt_partition */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).expr_vec)) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2621,185 +2649,155 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2625 "bison_parser.cpp" +#line 2653 "bison_parser.cpp" break; - case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ -#line 189 "bison_parser.y" + case YYSYMBOL_frame_clause: /* frame_clause */ +#line 190 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } -#line 2631 "bison_parser.cpp" +#line 2659 "bison_parser.cpp" break; case YYSYMBOL_frame_type: /* frame_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2637 "bison_parser.cpp" +#line 2665 "bison_parser.cpp" break; case YYSYMBOL_frame_bound: /* frame_bound */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).frame_bound)); } -#line 2643 "bison_parser.cpp" - break; - - case YYSYMBOL_case_expr: /* case_expr */ -#line 189 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2649 "bison_parser.cpp" - break; - - case YYSYMBOL_case_list: /* case_list */ -#line 189 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2655 "bison_parser.cpp" - break; - - case YYSYMBOL_exists_expr: /* exists_expr */ -#line 189 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2661 "bison_parser.cpp" - break; - - case YYSYMBOL_comp_expr: /* comp_expr */ -#line 189 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2667 "bison_parser.cpp" - break; - - case YYSYMBOL_function_expr: /* function_expr */ -#line 189 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2673 "bison_parser.cpp" +#line 2671 "bison_parser.cpp" break; case YYSYMBOL_extract_expr: /* extract_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2679 "bison_parser.cpp" +#line 2677 "bison_parser.cpp" break; case YYSYMBOL_cast_expr: /* cast_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2685 "bison_parser.cpp" +#line 2683 "bison_parser.cpp" break; case YYSYMBOL_datetime_field: /* datetime_field */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2691 "bison_parser.cpp" +#line 2689 "bison_parser.cpp" break; case YYSYMBOL_datetime_field_plural: /* datetime_field_plural */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2697 "bison_parser.cpp" +#line 2695 "bison_parser.cpp" break; case YYSYMBOL_duration_field: /* duration_field */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2703 "bison_parser.cpp" +#line 2701 "bison_parser.cpp" break; case YYSYMBOL_array_expr: /* array_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2709 "bison_parser.cpp" +#line 2707 "bison_parser.cpp" break; case YYSYMBOL_array_index: /* array_index */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2715 "bison_parser.cpp" +#line 2713 "bison_parser.cpp" break; case YYSYMBOL_between_expr: /* between_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2721 "bison_parser.cpp" +#line 2719 "bison_parser.cpp" break; case YYSYMBOL_column_name: /* column_name */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2727 "bison_parser.cpp" +#line 2725 "bison_parser.cpp" break; case YYSYMBOL_literal: /* literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2733 "bison_parser.cpp" +#line 2731 "bison_parser.cpp" break; case YYSYMBOL_string_literal: /* string_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2739 "bison_parser.cpp" +#line 2737 "bison_parser.cpp" break; case YYSYMBOL_bool_literal: /* bool_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2745 "bison_parser.cpp" +#line 2743 "bison_parser.cpp" break; case YYSYMBOL_num_literal: /* num_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2751 "bison_parser.cpp" +#line 2749 "bison_parser.cpp" break; case YYSYMBOL_int_literal: /* int_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2757 "bison_parser.cpp" +#line 2755 "bison_parser.cpp" break; case YYSYMBOL_null_literal: /* null_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2763 "bison_parser.cpp" +#line 2761 "bison_parser.cpp" break; case YYSYMBOL_date_literal: /* date_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2769 "bison_parser.cpp" +#line 2767 "bison_parser.cpp" break; case YYSYMBOL_interval_literal: /* interval_literal */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2775 "bison_parser.cpp" +#line 2773 "bison_parser.cpp" break; case YYSYMBOL_param_expr: /* param_expr */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2781 "bison_parser.cpp" +#line 2779 "bison_parser.cpp" break; case YYSYMBOL_table_ref: /* table_ref */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2787 "bison_parser.cpp" +#line 2785 "bison_parser.cpp" break; case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2793 "bison_parser.cpp" +#line 2791 "bison_parser.cpp" break; case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2799 "bison_parser.cpp" +#line 2797 "bison_parser.cpp" break; case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ -#line 181 "bison_parser.y" +#line 182 "bison_parser.y" { if (((*yyvaluep).table_vec)) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2808,134 +2806,134 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2812 "bison_parser.cpp" +#line 2810 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name: /* table_ref_name */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2818 "bison_parser.cpp" +#line 2816 "bison_parser.cpp" break; case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2824 "bison_parser.cpp" +#line 2822 "bison_parser.cpp" break; case YYSYMBOL_table_name: /* table_name */ -#line 168 "bison_parser.y" +#line 169 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2833 "bison_parser.cpp" +#line 2831 "bison_parser.cpp" break; case YYSYMBOL_opt_index_name: /* opt_index_name */ -#line 180 "bison_parser.y" +#line 181 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2839 "bison_parser.cpp" +#line 2837 "bison_parser.cpp" break; case YYSYMBOL_table_alias: /* table_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2845 "bison_parser.cpp" +#line 2843 "bison_parser.cpp" break; case YYSYMBOL_opt_table_alias: /* opt_table_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2851 "bison_parser.cpp" +#line 2849 "bison_parser.cpp" break; case YYSYMBOL_alias: /* alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2857 "bison_parser.cpp" +#line 2855 "bison_parser.cpp" break; case YYSYMBOL_opt_alias: /* opt_alias */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2863 "bison_parser.cpp" +#line 2861 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause: /* opt_locking_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2869 "bison_parser.cpp" +#line 2867 "bison_parser.cpp" break; case YYSYMBOL_opt_locking_clause_list: /* opt_locking_clause_list */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_clause_vec)); } -#line 2875 "bison_parser.cpp" +#line 2873 "bison_parser.cpp" break; case YYSYMBOL_locking_clause: /* locking_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).locking_t)); } -#line 2881 "bison_parser.cpp" +#line 2879 "bison_parser.cpp" break; case YYSYMBOL_row_lock_mode: /* row_lock_mode */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2887 "bison_parser.cpp" +#line 2885 "bison_parser.cpp" break; case YYSYMBOL_opt_row_lock_policy: /* opt_row_lock_policy */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2893 "bison_parser.cpp" +#line 2891 "bison_parser.cpp" break; case YYSYMBOL_opt_with_clause: /* opt_with_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2899 "bison_parser.cpp" +#line 2897 "bison_parser.cpp" break; case YYSYMBOL_with_clause: /* with_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2905 "bison_parser.cpp" +#line 2903 "bison_parser.cpp" break; case YYSYMBOL_with_description_list: /* with_description_list */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2911 "bison_parser.cpp" +#line 2909 "bison_parser.cpp" break; case YYSYMBOL_with_description: /* with_description */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2917 "bison_parser.cpp" +#line 2915 "bison_parser.cpp" break; case YYSYMBOL_join_clause: /* join_clause */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2923 "bison_parser.cpp" +#line 2921 "bison_parser.cpp" break; case YYSYMBOL_opt_join_type: /* opt_join_type */ -#line 167 "bison_parser.y" +#line 168 "bison_parser.y" { } -#line 2929 "bison_parser.cpp" +#line 2927 "bison_parser.cpp" break; case YYSYMBOL_join_condition: /* join_condition */ -#line 189 "bison_parser.y" +#line 190 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2935 "bison_parser.cpp" +#line 2933 "bison_parser.cpp" break; case YYSYMBOL_ident_commalist: /* ident_commalist */ -#line 172 "bison_parser.y" +#line 173 "bison_parser.y" { if (((*yyvaluep).str_vec)) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2944,7 +2942,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2948 "bison_parser.cpp" +#line 2946 "bison_parser.cpp" break; default: @@ -3052,7 +3050,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3056 "bison_parser.cpp" +#line 3054 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3263,7 +3261,7 @@ YYLTYPE yylloc = yyloc_default; switch (yyn) { case 2: /* input: statement_list opt_semicolon */ -#line 320 "bison_parser.y" +#line 322 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -3281,236 +3279,236 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3285 "bison_parser.cpp" +#line 3283 "bison_parser.cpp" break; case 3: /* statement_list: statement */ -#line 339 "bison_parser.y" +#line 341 "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 3296 "bison_parser.cpp" +#line 3294 "bison_parser.cpp" break; case 4: /* statement_list: statement_list ';' statement */ -#line 345 "bison_parser.y" +#line 347 "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 3307 "bison_parser.cpp" +#line 3305 "bison_parser.cpp" break; case 5: /* statement: prepare_statement opt_hints */ -#line 352 "bison_parser.y" +#line 354 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3316 "bison_parser.cpp" +#line 3314 "bison_parser.cpp" break; case 6: /* statement: preparable_statement opt_hints */ -#line 356 "bison_parser.y" +#line 358 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3325 "bison_parser.cpp" +#line 3323 "bison_parser.cpp" break; case 7: /* statement: show_statement */ -#line 360 "bison_parser.y" +#line 362 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3331 "bison_parser.cpp" +#line 3329 "bison_parser.cpp" break; case 8: /* statement: import_statement */ -#line 361 "bison_parser.y" +#line 363 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3337 "bison_parser.cpp" +#line 3335 "bison_parser.cpp" break; case 9: /* statement: export_statement */ -#line 362 "bison_parser.y" +#line 364 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3343 "bison_parser.cpp" +#line 3341 "bison_parser.cpp" break; case 10: /* preparable_statement: select_statement */ -#line 364 "bison_parser.y" +#line 366 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3349 "bison_parser.cpp" +#line 3347 "bison_parser.cpp" break; case 11: /* preparable_statement: create_statement */ -#line 365 "bison_parser.y" +#line 367 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3355 "bison_parser.cpp" +#line 3353 "bison_parser.cpp" break; case 12: /* preparable_statement: insert_statement */ -#line 366 "bison_parser.y" +#line 368 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3361 "bison_parser.cpp" +#line 3359 "bison_parser.cpp" break; case 13: /* preparable_statement: delete_statement */ -#line 367 "bison_parser.y" +#line 369 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3367 "bison_parser.cpp" +#line 3365 "bison_parser.cpp" break; case 14: /* preparable_statement: truncate_statement */ -#line 368 "bison_parser.y" +#line 370 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3373 "bison_parser.cpp" +#line 3371 "bison_parser.cpp" break; case 15: /* preparable_statement: update_statement */ -#line 369 "bison_parser.y" +#line 371 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3379 "bison_parser.cpp" +#line 3377 "bison_parser.cpp" break; case 16: /* preparable_statement: drop_statement */ -#line 370 "bison_parser.y" +#line 372 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3385 "bison_parser.cpp" +#line 3383 "bison_parser.cpp" break; case 17: /* preparable_statement: alter_statement */ -#line 371 "bison_parser.y" +#line 373 "bison_parser.y" { (yyval.statement) = (yyvsp[0].alter_stmt); } -#line 3391 "bison_parser.cpp" +#line 3389 "bison_parser.cpp" break; case 18: /* preparable_statement: execute_statement */ -#line 372 "bison_parser.y" +#line 374 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3397 "bison_parser.cpp" +#line 3395 "bison_parser.cpp" break; case 19: /* preparable_statement: transaction_statement */ -#line 373 "bison_parser.y" +#line 375 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3403 "bison_parser.cpp" +#line 3401 "bison_parser.cpp" break; case 20: /* opt_hints: WITH HINT '(' hint_list ')' */ -#line 379 "bison_parser.y" +#line 381 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3409 "bison_parser.cpp" +#line 3407 "bison_parser.cpp" break; case 21: /* opt_hints: %empty */ -#line 380 "bison_parser.y" +#line 382 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3415 "bison_parser.cpp" +#line 3413 "bison_parser.cpp" break; case 22: /* hint_list: hint */ -#line 382 "bison_parser.y" +#line 384 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3424 "bison_parser.cpp" +#line 3422 "bison_parser.cpp" break; case 23: /* hint_list: hint_list ',' hint */ -#line 386 "bison_parser.y" +#line 388 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3433 "bison_parser.cpp" +#line 3431 "bison_parser.cpp" break; case 24: /* hint: IDENTIFIER */ -#line 391 "bison_parser.y" +#line 393 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3442 "bison_parser.cpp" +#line 3440 "bison_parser.cpp" break; case 25: /* hint: IDENTIFIER '(' literal_list ')' */ -#line 395 "bison_parser.y" +#line 397 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3452 "bison_parser.cpp" +#line 3450 "bison_parser.cpp" break; case 26: /* transaction_statement: BEGIN opt_transaction_keyword */ -#line 405 "bison_parser.y" +#line 407 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3458 "bison_parser.cpp" +#line 3456 "bison_parser.cpp" break; case 27: /* transaction_statement: ROLLBACK opt_transaction_keyword */ -#line 406 "bison_parser.y" +#line 408 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3464 "bison_parser.cpp" +#line 3462 "bison_parser.cpp" break; case 28: /* transaction_statement: COMMIT opt_transaction_keyword */ -#line 407 "bison_parser.y" +#line 409 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3470 "bison_parser.cpp" +#line 3468 "bison_parser.cpp" break; case 31: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ -#line 415 "bison_parser.y" +#line 417 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3480 "bison_parser.cpp" +#line 3478 "bison_parser.cpp" break; case 33: /* execute_statement: EXECUTE IDENTIFIER */ -#line 423 "bison_parser.y" +#line 425 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3489 "bison_parser.cpp" +#line 3487 "bison_parser.cpp" break; case 34: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ -#line 427 "bison_parser.y" +#line 429 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3499 "bison_parser.cpp" +#line 3497 "bison_parser.cpp" break; case 35: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ -#line 438 "bison_parser.y" +#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 3510 "bison_parser.cpp" +#line 3508 "bison_parser.cpp" break; case 36: /* import_statement: COPY table_name FROM file_path opt_file_type opt_where */ -#line 444 "bison_parser.y" +#line 446 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-1].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); @@ -3518,11 +3516,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.import_stmt)->whereClause = (yyvsp[0].expr); } -#line 3522 "bison_parser.cpp" +#line 3520 "bison_parser.cpp" break; case 37: /* file_type: IDENTIFIER */ -#line 452 "bison_parser.y" +#line 454 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -3537,79 +3535,79 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3541 "bison_parser.cpp" +#line 3539 "bison_parser.cpp" break; case 38: /* file_path: string_literal */ -#line 467 "bison_parser.y" +#line 469 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3550 "bison_parser.cpp" +#line 3548 "bison_parser.cpp" break; case 39: /* opt_file_type: WITH FORMAT file_type */ -#line 472 "bison_parser.y" +#line 474 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3556 "bison_parser.cpp" +#line 3554 "bison_parser.cpp" break; case 40: /* opt_file_type: %empty */ -#line 473 "bison_parser.y" +#line 475 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3562 "bison_parser.cpp" +#line 3560 "bison_parser.cpp" break; case 41: /* export_statement: COPY table_name TO file_path opt_file_type */ -#line 479 "bison_parser.y" +#line 481 "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 3573 "bison_parser.cpp" +#line 3571 "bison_parser.cpp" break; case 42: /* export_statement: COPY select_with_paren TO file_path opt_file_type */ -#line 485 "bison_parser.y" +#line 487 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); (yyval.export_stmt)->filePath = (yyvsp[-1].sval); (yyval.export_stmt)->select = (yyvsp[-3].select_stmt); } -#line 3583 "bison_parser.cpp" +#line 3581 "bison_parser.cpp" break; case 43: /* show_statement: SHOW TABLES */ -#line 496 "bison_parser.y" +#line 498 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3589 "bison_parser.cpp" +#line 3587 "bison_parser.cpp" break; case 44: /* show_statement: SHOW COLUMNS table_name */ -#line 497 "bison_parser.y" +#line 499 "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 3599 "bison_parser.cpp" +#line 3597 "bison_parser.cpp" break; case 45: /* show_statement: DESCRIBE table_name */ -#line 502 "bison_parser.y" +#line 504 "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 3609 "bison_parser.cpp" +#line 3607 "bison_parser.cpp" break; case 46: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ -#line 513 "bison_parser.y" +#line 515 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3623,11 +3621,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3627 "bison_parser.cpp" +#line 3625 "bison_parser.cpp" break; case 47: /* create_statement: CREATE TABLE opt_not_exists table_name '(' table_elem_commalist ')' */ -#line 526 "bison_parser.y" +#line 528 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3640,11 +3638,11 @@ YYLTYPE yylloc = yyloc_default; YYERROR; } } -#line 3644 "bison_parser.cpp" +#line 3642 "bison_parser.cpp" break; case 48: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ -#line 538 "bison_parser.y" +#line 540 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3652,11 +3650,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3656 "bison_parser.cpp" +#line 3654 "bison_parser.cpp" break; case 49: /* create_statement: CREATE INDEX opt_not_exists opt_index_name ON table_name '(' ident_commalist ')' */ -#line 545 "bison_parser.y" +#line 547 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateIndex); (yyval.create_stmt)->indexName = (yyvsp[-5].sval); @@ -3664,11 +3662,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->indexColumns = (yyvsp[-1].str_vec); } -#line 3668 "bison_parser.cpp" +#line 3666 "bison_parser.cpp" break; case 50: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ -#line 552 "bison_parser.y" +#line 554 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3677,371 +3675,371 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3681 "bison_parser.cpp" +#line 3679 "bison_parser.cpp" break; case 51: /* opt_not_exists: IF NOT EXISTS */ -#line 561 "bison_parser.y" +#line 563 "bison_parser.y" { (yyval.bval) = true; } -#line 3687 "bison_parser.cpp" +#line 3685 "bison_parser.cpp" break; case 52: /* opt_not_exists: %empty */ -#line 562 "bison_parser.y" +#line 564 "bison_parser.y" { (yyval.bval) = false; } -#line 3693 "bison_parser.cpp" +#line 3691 "bison_parser.cpp" break; case 53: /* table_elem_commalist: table_elem */ -#line 564 "bison_parser.y" +#line 566 "bison_parser.y" { (yyval.table_element_vec) = new std::vector(); (yyval.table_element_vec)->push_back((yyvsp[0].table_element_t)); } -#line 3702 "bison_parser.cpp" +#line 3700 "bison_parser.cpp" break; case 54: /* table_elem_commalist: table_elem_commalist ',' table_elem */ -#line 568 "bison_parser.y" +#line 570 "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 3711 "bison_parser.cpp" +#line 3709 "bison_parser.cpp" break; case 55: /* table_elem: column_def */ -#line 573 "bison_parser.y" +#line 575 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].column_t); } -#line 3717 "bison_parser.cpp" +#line 3715 "bison_parser.cpp" break; case 56: /* table_elem: table_constraint */ -#line 574 "bison_parser.y" +#line 576 "bison_parser.y" { (yyval.table_element_t) = (yyvsp[0].table_constraint_t); } -#line 3723 "bison_parser.cpp" +#line 3721 "bison_parser.cpp" break; case 57: /* column_def: IDENTIFIER column_type opt_column_constraints */ -#line 576 "bison_parser.y" +#line 578 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].column_constraint_set)); if (!(yyval.column_t)->trySetNullableExplicit()) { yyerror(&yyloc, result, scanner, ("Conflicting nullability constraints for " + std::string{(yyvsp[-2].sval)}).c_str()); } } -#line 3734 "bison_parser.cpp" +#line 3732 "bison_parser.cpp" break; case 58: /* column_type: BIGINT */ -#line 583 "bison_parser.y" +#line 585 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BIGINT}; } -#line 3740 "bison_parser.cpp" +#line 3738 "bison_parser.cpp" break; case 59: /* column_type: BOOLEAN */ -#line 584 "bison_parser.y" +#line 586 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::BOOLEAN}; } -#line 3746 "bison_parser.cpp" +#line 3744 "bison_parser.cpp" break; case 60: /* column_type: CHAR '(' INTVAL ')' */ -#line 585 "bison_parser.y" +#line 587 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3752 "bison_parser.cpp" +#line 3750 "bison_parser.cpp" break; case 61: /* column_type: CHARACTER_VARYING '(' INTVAL ')' */ -#line 586 "bison_parser.y" +#line 588 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3758 "bison_parser.cpp" +#line 3756 "bison_parser.cpp" break; case 62: /* column_type: DATE */ -#line 587 "bison_parser.y" +#line 589 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3764 "bison_parser.cpp" +#line 3762 "bison_parser.cpp" break; case 63: /* column_type: DATETIME */ -#line 588 "bison_parser.y" +#line 590 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3770 "bison_parser.cpp" +#line 3768 "bison_parser.cpp" break; case 64: /* column_type: DECIMAL opt_decimal_specification */ -#line 589 "bison_parser.y" +#line 591 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DECIMAL, 0, (yyvsp[0].ival_pair)->first, (yyvsp[0].ival_pair)->second}; delete (yyvsp[0].ival_pair); } -#line 3779 "bison_parser.cpp" +#line 3777 "bison_parser.cpp" break; case 65: /* column_type: DOUBLE */ -#line 593 "bison_parser.y" +#line 595 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3785 "bison_parser.cpp" +#line 3783 "bison_parser.cpp" break; case 66: /* column_type: FLOAT */ -#line 594 "bison_parser.y" +#line 596 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3791 "bison_parser.cpp" +#line 3789 "bison_parser.cpp" break; case 67: /* column_type: INT */ -#line 595 "bison_parser.y" +#line 597 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3797 "bison_parser.cpp" +#line 3795 "bison_parser.cpp" break; case 68: /* column_type: INTEGER */ -#line 596 "bison_parser.y" +#line 598 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3803 "bison_parser.cpp" +#line 3801 "bison_parser.cpp" break; case 69: /* column_type: LONG */ -#line 597 "bison_parser.y" +#line 599 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3809 "bison_parser.cpp" +#line 3807 "bison_parser.cpp" break; case 70: /* column_type: REAL */ -#line 598 "bison_parser.y" +#line 600 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::REAL}; } -#line 3815 "bison_parser.cpp" +#line 3813 "bison_parser.cpp" break; case 71: /* column_type: SMALLINT */ -#line 599 "bison_parser.y" +#line 601 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::SMALLINT}; } -#line 3821 "bison_parser.cpp" +#line 3819 "bison_parser.cpp" break; case 72: /* column_type: TEXT */ -#line 600 "bison_parser.y" +#line 602 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3827 "bison_parser.cpp" +#line 3825 "bison_parser.cpp" break; case 73: /* column_type: TIME opt_time_precision */ -#line 601 "bison_parser.y" +#line 603 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TIME, 0, (yyvsp[0].ival)}; } -#line 3833 "bison_parser.cpp" +#line 3831 "bison_parser.cpp" break; case 74: /* column_type: TIMESTAMP */ -#line 602 "bison_parser.y" +#line 604 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3839 "bison_parser.cpp" +#line 3837 "bison_parser.cpp" break; case 75: /* column_type: VARCHAR '(' INTVAL ')' */ -#line 603 "bison_parser.y" +#line 605 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3845 "bison_parser.cpp" +#line 3843 "bison_parser.cpp" break; case 76: /* opt_time_precision: '(' INTVAL ')' */ -#line 605 "bison_parser.y" +#line 607 "bison_parser.y" { (yyval.ival) = (yyvsp[-1].ival); } -#line 3851 "bison_parser.cpp" +#line 3849 "bison_parser.cpp" break; case 77: /* opt_time_precision: %empty */ -#line 606 "bison_parser.y" +#line 608 "bison_parser.y" { (yyval.ival) = 0; } -#line 3857 "bison_parser.cpp" +#line 3855 "bison_parser.cpp" break; case 78: /* opt_decimal_specification: '(' INTVAL ',' INTVAL ')' */ -#line 608 "bison_parser.y" +#line 610 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-3].ival), (yyvsp[-1].ival)}; } -#line 3863 "bison_parser.cpp" +#line 3861 "bison_parser.cpp" break; case 79: /* opt_decimal_specification: '(' INTVAL ')' */ -#line 609 "bison_parser.y" +#line 611 "bison_parser.y" { (yyval.ival_pair) = new std::pair{(yyvsp[-1].ival), 0}; } -#line 3869 "bison_parser.cpp" +#line 3867 "bison_parser.cpp" break; case 80: /* opt_decimal_specification: %empty */ -#line 610 "bison_parser.y" +#line 612 "bison_parser.y" { (yyval.ival_pair) = new std::pair{0, 0}; } -#line 3875 "bison_parser.cpp" +#line 3873 "bison_parser.cpp" break; case 81: /* opt_column_constraints: column_constraint_set */ -#line 612 "bison_parser.y" +#line 614 "bison_parser.y" { (yyval.column_constraint_set) = (yyvsp[0].column_constraint_set); } -#line 3881 "bison_parser.cpp" +#line 3879 "bison_parser.cpp" break; case 82: /* opt_column_constraints: %empty */ -#line 613 "bison_parser.y" +#line 615 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); } -#line 3887 "bison_parser.cpp" +#line 3885 "bison_parser.cpp" break; case 83: /* column_constraint_set: column_constraint */ -#line 615 "bison_parser.y" +#line 617 "bison_parser.y" { (yyval.column_constraint_set) = new std::unordered_set(); (yyval.column_constraint_set)->insert((yyvsp[0].column_constraint_t)); } -#line 3896 "bison_parser.cpp" +#line 3894 "bison_parser.cpp" break; case 84: /* column_constraint_set: column_constraint_set column_constraint */ -#line 619 "bison_parser.y" +#line 621 "bison_parser.y" { (yyvsp[-1].column_constraint_set)->insert((yyvsp[0].column_constraint_t)); (yyval.column_constraint_set) = (yyvsp[-1].column_constraint_set); } -#line 3905 "bison_parser.cpp" +#line 3903 "bison_parser.cpp" break; case 85: /* column_constraint: PRIMARY KEY */ -#line 624 "bison_parser.y" +#line 626 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::PrimaryKey; } -#line 3911 "bison_parser.cpp" +#line 3909 "bison_parser.cpp" break; case 86: /* column_constraint: UNIQUE */ -#line 625 "bison_parser.y" +#line 627 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Unique; } -#line 3917 "bison_parser.cpp" +#line 3915 "bison_parser.cpp" break; case 87: /* column_constraint: NULL */ -#line 626 "bison_parser.y" +#line 628 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::Null; } -#line 3923 "bison_parser.cpp" +#line 3921 "bison_parser.cpp" break; case 88: /* column_constraint: NOT NULL */ -#line 627 "bison_parser.y" +#line 629 "bison_parser.y" { (yyval.column_constraint_t) = ConstraintType::NotNull; } -#line 3929 "bison_parser.cpp" +#line 3927 "bison_parser.cpp" break; case 89: /* table_constraint: PRIMARY KEY '(' ident_commalist ')' */ -#line 629 "bison_parser.y" +#line 631 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::PrimaryKey, (yyvsp[-1].str_vec)); } -#line 3935 "bison_parser.cpp" +#line 3933 "bison_parser.cpp" break; case 90: /* table_constraint: UNIQUE '(' ident_commalist ')' */ -#line 630 "bison_parser.y" +#line 632 "bison_parser.y" { (yyval.table_constraint_t) = new TableConstraint(ConstraintType::Unique, (yyvsp[-1].str_vec)); } -#line 3941 "bison_parser.cpp" +#line 3939 "bison_parser.cpp" break; case 91: /* drop_statement: DROP TABLE opt_exists table_name */ -#line 638 "bison_parser.y" +#line 640 "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 3952 "bison_parser.cpp" +#line 3950 "bison_parser.cpp" break; case 92: /* drop_statement: DROP VIEW opt_exists table_name */ -#line 644 "bison_parser.y" +#line 646 "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 3963 "bison_parser.cpp" +#line 3961 "bison_parser.cpp" break; case 93: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ -#line 650 "bison_parser.y" +#line 652 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3973 "bison_parser.cpp" +#line 3971 "bison_parser.cpp" break; case 94: /* drop_statement: DROP INDEX opt_exists IDENTIFIER */ -#line 656 "bison_parser.y" +#line 658 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropIndex); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->indexName = (yyvsp[0].sval); } -#line 3983 "bison_parser.cpp" +#line 3981 "bison_parser.cpp" break; case 95: /* opt_exists: IF EXISTS */ -#line 662 "bison_parser.y" +#line 664 "bison_parser.y" { (yyval.bval) = true; } -#line 3989 "bison_parser.cpp" +#line 3987 "bison_parser.cpp" break; case 96: /* opt_exists: %empty */ -#line 663 "bison_parser.y" +#line 665 "bison_parser.y" { (yyval.bval) = false; } -#line 3995 "bison_parser.cpp" +#line 3993 "bison_parser.cpp" break; case 97: /* alter_statement: ALTER TABLE opt_exists table_name alter_action */ -#line 670 "bison_parser.y" +#line 672 "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 4005 "bison_parser.cpp" +#line 4003 "bison_parser.cpp" break; case 98: /* alter_action: drop_action */ -#line 676 "bison_parser.y" +#line 678 "bison_parser.y" { (yyval.alter_action_t) = (yyvsp[0].drop_action_t); } -#line 4011 "bison_parser.cpp" +#line 4009 "bison_parser.cpp" break; case 99: /* drop_action: DROP COLUMN opt_exists IDENTIFIER */ -#line 678 "bison_parser.y" +#line 680 "bison_parser.y" { (yyval.drop_action_t) = new DropColumnAction((yyvsp[0].sval)); (yyval.drop_action_t)->ifExists = (yyvsp[-1].bval); } -#line 4020 "bison_parser.cpp" +#line 4018 "bison_parser.cpp" break; case 100: /* delete_statement: DELETE FROM table_name opt_where */ -#line 688 "bison_parser.y" +#line 690 "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 4031 "bison_parser.cpp" +#line 4029 "bison_parser.cpp" break; case 101: /* truncate_statement: TRUNCATE table_name */ -#line 695 "bison_parser.y" +#line 697 "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 4041 "bison_parser.cpp" +#line 4039 "bison_parser.cpp" break; case 102: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ -#line 706 "bison_parser.y" +#line 708 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -4049,11 +4047,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 4053 "bison_parser.cpp" +#line 4051 "bison_parser.cpp" break; case 103: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ -#line 713 "bison_parser.y" +#line 715 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -4061,80 +4059,80 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 4065 "bison_parser.cpp" +#line 4063 "bison_parser.cpp" break; case 104: /* opt_column_list: '(' ident_commalist ')' */ -#line 721 "bison_parser.y" +#line 723 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 4071 "bison_parser.cpp" +#line 4069 "bison_parser.cpp" break; case 105: /* opt_column_list: %empty */ -#line 722 "bison_parser.y" +#line 724 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 4077 "bison_parser.cpp" +#line 4075 "bison_parser.cpp" break; case 106: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ -#line 729 "bison_parser.y" +#line 731 "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 4088 "bison_parser.cpp" +#line 4086 "bison_parser.cpp" break; case 107: /* update_clause_commalist: update_clause */ -#line 736 "bison_parser.y" +#line 738 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 4097 "bison_parser.cpp" +#line 4095 "bison_parser.cpp" break; case 108: /* update_clause_commalist: update_clause_commalist ',' update_clause */ -#line 740 "bison_parser.y" +#line 742 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 4106 "bison_parser.cpp" +#line 4104 "bison_parser.cpp" break; case 109: /* update_clause: IDENTIFIER '=' expr */ -#line 745 "bison_parser.y" +#line 747 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 4116 "bison_parser.cpp" +#line 4114 "bison_parser.cpp" break; case 110: /* select_statement: opt_with_clause select_with_paren */ -#line 755 "bison_parser.y" +#line 757 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4125 "bison_parser.cpp" +#line 4123 "bison_parser.cpp" break; case 111: /* select_statement: opt_with_clause select_no_paren */ -#line 759 "bison_parser.y" +#line 761 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 4134 "bison_parser.cpp" +#line 4132 "bison_parser.cpp" break; case 112: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ -#line 763 "bison_parser.y" +#line 765 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4146,17 +4144,17 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 4150 "bison_parser.cpp" +#line 4148 "bison_parser.cpp" break; case 115: /* select_within_set_operation_no_parentheses: select_clause */ -#line 777 "bison_parser.y" +#line 779 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 4156 "bison_parser.cpp" +#line 4154 "bison_parser.cpp" break; case 116: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ -#line 778 "bison_parser.y" +#line 780 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4165,23 +4163,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 4169 "bison_parser.cpp" +#line 4167 "bison_parser.cpp" break; case 117: /* select_with_paren: '(' select_no_paren ')' */ -#line 787 "bison_parser.y" +#line 789 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4175 "bison_parser.cpp" +#line 4173 "bison_parser.cpp" break; case 118: /* select_with_paren: '(' select_with_paren ')' */ -#line 788 "bison_parser.y" +#line 790 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 4181 "bison_parser.cpp" +#line 4179 "bison_parser.cpp" break; case 119: /* select_no_paren: select_clause opt_order opt_limit opt_locking_clause */ -#line 790 "bison_parser.y" +#line 792 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-3].select_stmt); (yyval.select_stmt)->order = (yyvsp[-2].order_vec); @@ -4196,11 +4194,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } } -#line 4200 "bison_parser.cpp" +#line 4198 "bison_parser.cpp" break; case 120: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit opt_locking_clause */ -#line 804 "bison_parser.y" +#line 806 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-5].select_stmt); if ((yyval.select_stmt)->setOperations == nullptr) { @@ -4212,59 +4210,59 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[-1].limit); (yyval.select_stmt)->lockings = (yyvsp[0].locking_clause_vec); } -#line 4216 "bison_parser.cpp" +#line 4214 "bison_parser.cpp" break; case 121: /* set_operator: set_type opt_all */ -#line 816 "bison_parser.y" +#line 818 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 4225 "bison_parser.cpp" +#line 4223 "bison_parser.cpp" break; case 122: /* set_type: UNION */ -#line 821 "bison_parser.y" +#line 823 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 4234 "bison_parser.cpp" +#line 4232 "bison_parser.cpp" break; case 123: /* set_type: INTERSECT */ -#line 825 "bison_parser.y" +#line 827 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 4243 "bison_parser.cpp" +#line 4241 "bison_parser.cpp" break; case 124: /* set_type: EXCEPT */ -#line 829 "bison_parser.y" +#line 831 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4252 "bison_parser.cpp" +#line 4250 "bison_parser.cpp" break; case 125: /* opt_all: ALL */ -#line 834 "bison_parser.y" +#line 836 "bison_parser.y" { (yyval.bval) = true; } -#line 4258 "bison_parser.cpp" +#line 4256 "bison_parser.cpp" break; case 126: /* opt_all: %empty */ -#line 835 "bison_parser.y" +#line 837 "bison_parser.y" { (yyval.bval) = false; } -#line 4264 "bison_parser.cpp" +#line 4262 "bison_parser.cpp" break; case 127: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ -#line 837 "bison_parser.y" +#line 839 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -4274,231 +4272,231 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4278 "bison_parser.cpp" +#line 4276 "bison_parser.cpp" break; case 128: /* opt_distinct: DISTINCT */ -#line 847 "bison_parser.y" +#line 849 "bison_parser.y" { (yyval.bval) = true; } -#line 4284 "bison_parser.cpp" +#line 4282 "bison_parser.cpp" break; case 129: /* opt_distinct: %empty */ -#line 848 "bison_parser.y" +#line 850 "bison_parser.y" { (yyval.bval) = false; } -#line 4290 "bison_parser.cpp" +#line 4288 "bison_parser.cpp" break; case 131: /* opt_from_clause: from_clause */ -#line 852 "bison_parser.y" +#line 854 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4296 "bison_parser.cpp" +#line 4294 "bison_parser.cpp" break; case 132: /* opt_from_clause: %empty */ -#line 853 "bison_parser.y" +#line 855 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4302 "bison_parser.cpp" +#line 4300 "bison_parser.cpp" break; case 133: /* from_clause: FROM table_ref */ -#line 855 "bison_parser.y" +#line 857 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4308 "bison_parser.cpp" +#line 4306 "bison_parser.cpp" break; case 134: /* opt_where: WHERE expr */ -#line 857 "bison_parser.y" +#line 859 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4314 "bison_parser.cpp" +#line 4312 "bison_parser.cpp" break; case 135: /* opt_where: %empty */ -#line 858 "bison_parser.y" +#line 860 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4320 "bison_parser.cpp" +#line 4318 "bison_parser.cpp" break; case 136: /* opt_group: GROUP BY expr_list opt_having */ -#line 860 "bison_parser.y" +#line 862 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4330 "bison_parser.cpp" +#line 4328 "bison_parser.cpp" break; case 137: /* opt_group: %empty */ -#line 865 "bison_parser.y" +#line 867 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4336 "bison_parser.cpp" +#line 4334 "bison_parser.cpp" break; case 138: /* opt_having: HAVING expr */ -#line 867 "bison_parser.y" +#line 869 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4342 "bison_parser.cpp" +#line 4340 "bison_parser.cpp" break; case 139: /* opt_having: %empty */ -#line 868 "bison_parser.y" +#line 870 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4348 "bison_parser.cpp" +#line 4346 "bison_parser.cpp" break; case 140: /* opt_order: ORDER BY order_list */ -#line 870 "bison_parser.y" +#line 872 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4354 "bison_parser.cpp" +#line 4352 "bison_parser.cpp" break; case 141: /* opt_order: %empty */ -#line 871 "bison_parser.y" +#line 873 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4360 "bison_parser.cpp" +#line 4358 "bison_parser.cpp" break; case 142: /* order_list: order_desc */ -#line 873 "bison_parser.y" +#line 875 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4369 "bison_parser.cpp" +#line 4367 "bison_parser.cpp" break; case 143: /* order_list: order_list ',' order_desc */ -#line 877 "bison_parser.y" +#line 879 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4378 "bison_parser.cpp" +#line 4376 "bison_parser.cpp" break; case 144: /* order_desc: expr opt_order_type */ -#line 882 "bison_parser.y" +#line 884 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4384 "bison_parser.cpp" +#line 4382 "bison_parser.cpp" break; case 145: /* opt_order_type: ASC */ -#line 884 "bison_parser.y" +#line 886 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4390 "bison_parser.cpp" +#line 4388 "bison_parser.cpp" break; case 146: /* opt_order_type: DESC */ -#line 885 "bison_parser.y" +#line 887 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4396 "bison_parser.cpp" +#line 4394 "bison_parser.cpp" break; case 147: /* opt_order_type: %empty */ -#line 886 "bison_parser.y" +#line 888 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4402 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; case 148: /* opt_top: TOP int_literal */ -#line 890 "bison_parser.y" +#line 892 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4408 "bison_parser.cpp" +#line 4406 "bison_parser.cpp" break; case 149: /* opt_top: %empty */ -#line 891 "bison_parser.y" +#line 893 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4414 "bison_parser.cpp" +#line 4412 "bison_parser.cpp" break; case 150: /* opt_limit: LIMIT expr */ -#line 893 "bison_parser.y" +#line 895 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4420 "bison_parser.cpp" +#line 4418 "bison_parser.cpp" break; case 151: /* opt_limit: OFFSET expr */ -#line 894 "bison_parser.y" +#line 896 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4426 "bison_parser.cpp" +#line 4424 "bison_parser.cpp" break; case 152: /* opt_limit: LIMIT expr OFFSET expr */ -#line 895 "bison_parser.y" +#line 897 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4432 "bison_parser.cpp" +#line 4430 "bison_parser.cpp" break; case 153: /* opt_limit: LIMIT ALL */ -#line 896 "bison_parser.y" +#line 898 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4438 "bison_parser.cpp" +#line 4436 "bison_parser.cpp" break; case 154: /* opt_limit: LIMIT ALL OFFSET expr */ -#line 897 "bison_parser.y" +#line 899 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4444 "bison_parser.cpp" +#line 4442 "bison_parser.cpp" break; case 155: /* opt_limit: %empty */ -#line 898 "bison_parser.y" +#line 900 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4450 "bison_parser.cpp" +#line 4448 "bison_parser.cpp" break; case 156: /* expr_list: expr_alias */ -#line 903 "bison_parser.y" +#line 905 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4459 "bison_parser.cpp" +#line 4457 "bison_parser.cpp" break; case 157: /* expr_list: expr_list ',' expr_alias */ -#line 907 "bison_parser.y" +#line 909 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4468 "bison_parser.cpp" +#line 4466 "bison_parser.cpp" break; case 158: /* opt_literal_list: literal_list */ -#line 912 "bison_parser.y" +#line 914 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4474 "bison_parser.cpp" +#line 4472 "bison_parser.cpp" break; case 159: /* opt_literal_list: %empty */ -#line 913 "bison_parser.y" +#line 915 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4480 "bison_parser.cpp" +#line 4478 "bison_parser.cpp" break; case 160: /* literal_list: literal */ -#line 915 "bison_parser.y" +#line 917 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4489 "bison_parser.cpp" +#line 4487 "bison_parser.cpp" break; case 161: /* literal_list: literal_list ',' literal */ -#line 919 "bison_parser.y" +#line 921 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4498 "bison_parser.cpp" +#line 4496 "bison_parser.cpp" break; case 162: /* expr_alias: expr opt_alias */ -#line 924 "bison_parser.y" +#line 926 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -4506,499 +4504,507 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4510 "bison_parser.cpp" +#line 4508 "bison_parser.cpp" break; - case 169: /* operand: '(' expr ')' */ -#line 934 "bison_parser.y" + case 168: /* operand: '(' expr ')' */ +#line 936 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4516 "bison_parser.cpp" +#line 4514 "bison_parser.cpp" break; - case 179: /* operand: '(' select_no_paren ')' */ -#line 936 "bison_parser.y" + case 178: /* operand: '(' select_no_paren ')' */ +#line 938 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4524 "bison_parser.cpp" +#line 4522 "bison_parser.cpp" break; - case 182: /* unary_expr: '-' operand */ -#line 942 "bison_parser.y" + case 181: /* unary_expr: '-' operand */ +#line 944 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4530 "bison_parser.cpp" +#line 4528 "bison_parser.cpp" break; - case 183: /* unary_expr: NOT operand */ -#line 943 "bison_parser.y" + case 182: /* unary_expr: NOT operand */ +#line 945 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4536 "bison_parser.cpp" +#line 4534 "bison_parser.cpp" break; - case 184: /* unary_expr: operand ISNULL */ -#line 944 "bison_parser.y" + case 183: /* unary_expr: operand ISNULL */ +#line 946 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4542 "bison_parser.cpp" +#line 4540 "bison_parser.cpp" break; - case 185: /* unary_expr: operand IS NULL */ -#line 945 "bison_parser.y" + case 184: /* unary_expr: operand IS NULL */ +#line 947 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4548 "bison_parser.cpp" +#line 4546 "bison_parser.cpp" break; - case 186: /* unary_expr: operand IS NOT NULL */ -#line 946 "bison_parser.y" + case 185: /* unary_expr: operand IS NOT NULL */ +#line 948 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4554 "bison_parser.cpp" +#line 4552 "bison_parser.cpp" break; - case 188: /* binary_expr: operand '-' operand */ -#line 948 "bison_parser.y" + case 187: /* binary_expr: operand '-' operand */ +#line 950 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4560 "bison_parser.cpp" +#line 4558 "bison_parser.cpp" break; - case 189: /* binary_expr: operand '+' operand */ -#line 949 "bison_parser.y" + case 188: /* binary_expr: operand '+' operand */ +#line 951 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4566 "bison_parser.cpp" +#line 4564 "bison_parser.cpp" break; - case 190: /* binary_expr: operand '/' operand */ -#line 950 "bison_parser.y" + case 189: /* binary_expr: operand '/' operand */ +#line 952 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4572 "bison_parser.cpp" +#line 4570 "bison_parser.cpp" break; - case 191: /* binary_expr: operand '*' operand */ -#line 951 "bison_parser.y" + case 190: /* binary_expr: operand '*' operand */ +#line 953 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4578 "bison_parser.cpp" +#line 4576 "bison_parser.cpp" break; - case 192: /* binary_expr: operand '%' operand */ -#line 952 "bison_parser.y" + case 191: /* binary_expr: operand '%' operand */ +#line 954 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4584 "bison_parser.cpp" +#line 4582 "bison_parser.cpp" break; - case 193: /* binary_expr: operand '^' operand */ -#line 953 "bison_parser.y" + case 192: /* binary_expr: operand '^' operand */ +#line 955 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4590 "bison_parser.cpp" +#line 4588 "bison_parser.cpp" break; - case 194: /* binary_expr: operand LIKE operand */ -#line 954 "bison_parser.y" + case 193: /* binary_expr: operand LIKE operand */ +#line 956 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4596 "bison_parser.cpp" +#line 4594 "bison_parser.cpp" break; - case 195: /* binary_expr: operand NOT LIKE operand */ -#line 955 "bison_parser.y" + case 194: /* binary_expr: operand NOT LIKE operand */ +#line 957 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4602 "bison_parser.cpp" +#line 4600 "bison_parser.cpp" break; - case 196: /* binary_expr: operand ILIKE operand */ -#line 956 "bison_parser.y" + case 195: /* binary_expr: operand ILIKE operand */ +#line 958 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4608 "bison_parser.cpp" +#line 4606 "bison_parser.cpp" break; - case 197: /* binary_expr: operand CONCAT operand */ -#line 957 "bison_parser.y" + case 196: /* binary_expr: operand CONCAT operand */ +#line 959 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4614 "bison_parser.cpp" +#line 4612 "bison_parser.cpp" break; - case 198: /* logic_expr: expr AND expr */ -#line 959 "bison_parser.y" + case 197: /* logic_expr: expr AND expr */ +#line 961 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4620 "bison_parser.cpp" +#line 4618 "bison_parser.cpp" break; - case 199: /* logic_expr: expr OR expr */ -#line 960 "bison_parser.y" + case 198: /* logic_expr: expr OR expr */ +#line 962 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4626 "bison_parser.cpp" +#line 4624 "bison_parser.cpp" break; - case 200: /* in_expr: operand IN '(' expr_list ')' */ -#line 962 "bison_parser.y" + case 199: /* in_expr: operand IN '(' expr_list ')' */ +#line 964 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4632 "bison_parser.cpp" +#line 4630 "bison_parser.cpp" break; - case 201: /* in_expr: operand NOT IN '(' expr_list ')' */ -#line 963 "bison_parser.y" + case 200: /* in_expr: operand NOT IN '(' expr_list ')' */ +#line 965 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4638 "bison_parser.cpp" +#line 4636 "bison_parser.cpp" break; - case 202: /* in_expr: operand IN '(' select_no_paren ')' */ -#line 964 "bison_parser.y" + case 201: /* in_expr: operand IN '(' select_no_paren ')' */ +#line 966 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4644 "bison_parser.cpp" +#line 4642 "bison_parser.cpp" break; - case 203: /* in_expr: operand NOT IN '(' select_no_paren ')' */ -#line 965 "bison_parser.y" + case 202: /* in_expr: operand NOT IN '(' select_no_paren ')' */ +#line 967 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4650 "bison_parser.cpp" - break; - - case 204: /* window_expr: operand OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 969 "bison_parser.y" - { (yyval.expr) = Expr::makeWindow((yyvsp[-6].expr), (yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } -#line 4656 "bison_parser.cpp" +#line 4648 "bison_parser.cpp" break; - case 205: /* opt_partition: PARTITION BY expr_list */ + case 203: /* case_expr: CASE expr case_list END */ #line 971 "bison_parser.y" - { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4662 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } +#line 4654 "bison_parser.cpp" break; - case 206: /* opt_partition: %empty */ + case 204: /* case_expr: CASE expr case_list ELSE expr END */ #line 972 "bison_parser.y" - { (yyval.expr_vec) = nullptr; } -#line 4668 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 4660 "bison_parser.cpp" break; - case 207: /* opt_frame_clause: frame_type frame_bound */ -#line 974 "bison_parser.y" - { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), nullptr}; } -#line 4674 "bison_parser.cpp" + case 205: /* case_expr: CASE case_list END */ +#line 973 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } +#line 4666 "bison_parser.cpp" break; - case 208: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 975 "bison_parser.y" - { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } -#line 4680 "bison_parser.cpp" + case 206: /* case_expr: CASE case_list ELSE expr END */ +#line 974 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 4672 "bison_parser.cpp" break; - case 209: /* opt_frame_clause: %empty */ + case 207: /* case_list: WHEN expr THEN expr */ #line 976 "bison_parser.y" - { (yyval.frame_description) = nullptr; } -#line 4686 "bison_parser.cpp" + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 4678 "bison_parser.cpp" break; - case 210: /* frame_type: RANGE */ -#line 978 "bison_parser.y" - { (yyval.frame_type) = FrameType::kRange; } -#line 4692 "bison_parser.cpp" + case 208: /* case_list: case_list WHEN expr THEN expr */ +#line 977 "bison_parser.y" + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 4684 "bison_parser.cpp" break; - case 211: /* frame_type: ROWS */ + case 209: /* exists_expr: EXISTS '(' select_no_paren ')' */ #line 979 "bison_parser.y" - { (yyval.frame_type) = FrameType::kRows; } -#line 4698 "bison_parser.cpp" + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 4690 "bison_parser.cpp" break; - case 212: /* frame_type: GROUPS */ + case 210: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ #line 980 "bison_parser.y" - { (yyval.frame_type) = FrameType::kGroups; } -#line 4704 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 4696 "bison_parser.cpp" break; - case 213: /* frame_bound: UNBOUNDED PRECEDING */ + case 211: /* comp_expr: operand '=' operand */ #line 982 "bison_parser.y" - { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } -#line 4710 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 4702 "bison_parser.cpp" break; - case 214: /* frame_bound: INTVAL PRECEDING */ + case 212: /* comp_expr: operand EQUALS operand */ #line 983 "bison_parser.y" - { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } -#line 4716 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 4708 "bison_parser.cpp" break; - case 215: /* frame_bound: UNBOUNDED FOLLOWING */ + case 213: /* comp_expr: operand NOTEQUALS operand */ #line 984 "bison_parser.y" - { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } -#line 4722 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 4714 "bison_parser.cpp" break; - case 216: /* frame_bound: INTVAL FOLLOWING */ + case 214: /* comp_expr: operand '<' operand */ #line 985 "bison_parser.y" - { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } -#line 4728 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 4720 "bison_parser.cpp" break; - case 217: /* frame_bound: CURRENT_ROW */ + case 215: /* comp_expr: operand '>' operand */ #line 986 "bison_parser.y" - { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } -#line 4734 "bison_parser.cpp" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 4726 "bison_parser.cpp" break; - case 218: /* case_expr: CASE expr case_list END */ -#line 990 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4740 "bison_parser.cpp" + case 216: /* comp_expr: operand LESSEQ operand */ +#line 987 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 4732 "bison_parser.cpp" break; - case 219: /* case_expr: CASE expr case_list ELSE expr END */ -#line 991 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4746 "bison_parser.cpp" + case 217: /* comp_expr: operand GREATEREQ operand */ +#line 988 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 4738 "bison_parser.cpp" break; - case 220: /* case_expr: CASE case_list END */ -#line 992 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4752 "bison_parser.cpp" + case 218: /* function_expr: IDENTIFIER '(' ')' opt_window */ +#line 990 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } +#line 4744 "bison_parser.cpp" break; - case 221: /* case_expr: CASE case_list ELSE expr END */ -#line 993 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4758 "bison_parser.cpp" + case 219: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ +#line 991 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } +#line 4750 "bison_parser.cpp" break; - case 222: /* case_list: WHEN expr THEN expr */ + case 220: /* opt_window: OVER '(' opt_partition opt_order frame_clause ')' */ #line 995 "bison_parser.y" - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4764 "bison_parser.cpp" + { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } +#line 4756 "bison_parser.cpp" break; - case 223: /* case_list: case_list WHEN expr THEN expr */ + case 221: /* opt_window: %empty */ #line 996 "bison_parser.y" - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4770 "bison_parser.cpp" + { (yyval.window_description) = nullptr; } +#line 4762 "bison_parser.cpp" break; - case 224: /* exists_expr: EXISTS '(' select_no_paren ')' */ + case 222: /* opt_partition: PARTITION BY expr_list */ #line 998 "bison_parser.y" - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4776 "bison_parser.cpp" + { (yyval.expr_vec) = (yyvsp[0].expr_vec); } +#line 4768 "bison_parser.cpp" break; - case 225: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ + case 223: /* opt_partition: %empty */ #line 999 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4782 "bison_parser.cpp" + { (yyval.expr_vec) = nullptr; } +#line 4774 "bison_parser.cpp" break; - case 226: /* comp_expr: operand '=' operand */ -#line 1001 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4788 "bison_parser.cpp" + case 224: /* frame_clause: frame_type frame_bound */ +#line 1004 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } +#line 4780 "bison_parser.cpp" break; - case 227: /* comp_expr: operand EQUALS operand */ -#line 1002 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 225: /* frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ +#line 1005 "bison_parser.y" + { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } +#line 4786 "bison_parser.cpp" + break; + + case 226: /* frame_clause: %empty */ +#line 1006 "bison_parser.y" + { + (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; +} #line 4794 "bison_parser.cpp" break; - case 228: /* comp_expr: operand NOTEQUALS operand */ -#line 1003 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } + case 227: /* frame_type: RANGE */ +#line 1010 "bison_parser.y" + { (yyval.frame_type) = kRange; } #line 4800 "bison_parser.cpp" break; - case 229: /* comp_expr: operand '<' operand */ -#line 1004 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } + case 228: /* frame_type: ROWS */ +#line 1011 "bison_parser.y" + { (yyval.frame_type) = kRows; } #line 4806 "bison_parser.cpp" break; - case 230: /* comp_expr: operand '>' operand */ -#line 1005 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } + case 229: /* frame_type: GROUPS */ +#line 1012 "bison_parser.y" + { (yyval.frame_type) = kGroups; } #line 4812 "bison_parser.cpp" break; - case 231: /* comp_expr: operand LESSEQ operand */ -#line 1006 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } + case 230: /* frame_bound: UNBOUNDED PRECEDING */ +#line 1014 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } #line 4818 "bison_parser.cpp" break; - case 232: /* comp_expr: operand GREATEREQ operand */ -#line 1007 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } + case 231: /* frame_bound: INTVAL PRECEDING */ +#line 1015 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } #line 4824 "bison_parser.cpp" break; - case 233: /* function_expr: IDENTIFIER '(' ')' */ -#line 1009 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } + case 232: /* frame_bound: UNBOUNDED FOLLOWING */ +#line 1016 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } #line 4830 "bison_parser.cpp" break; - case 234: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ -#line 1010 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } + case 233: /* frame_bound: INTVAL FOLLOWING */ +#line 1017 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } #line 4836 "bison_parser.cpp" break; + case 234: /* frame_bound: CURRENT_ROW */ +#line 1018 "bison_parser.y" + { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } +#line 4842 "bison_parser.cpp" + break; + case 235: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1012 "bison_parser.y" +#line 1020 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4842 "bison_parser.cpp" +#line 4848 "bison_parser.cpp" break; case 236: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1014 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4848 "bison_parser.cpp" +#line 4854 "bison_parser.cpp" break; case 237: /* datetime_field: SECOND */ -#line 1016 "bison_parser.y" +#line 1024 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4854 "bison_parser.cpp" +#line 4860 "bison_parser.cpp" break; case 238: /* datetime_field: MINUTE */ -#line 1017 "bison_parser.y" +#line 1025 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4860 "bison_parser.cpp" +#line 4866 "bison_parser.cpp" break; case 239: /* datetime_field: HOUR */ -#line 1018 "bison_parser.y" +#line 1026 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4866 "bison_parser.cpp" +#line 4872 "bison_parser.cpp" break; case 240: /* datetime_field: DAY */ -#line 1019 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4872 "bison_parser.cpp" +#line 4878 "bison_parser.cpp" break; case 241: /* datetime_field: MONTH */ -#line 1020 "bison_parser.y" +#line 1028 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4878 "bison_parser.cpp" +#line 4884 "bison_parser.cpp" break; case 242: /* datetime_field: YEAR */ -#line 1021 "bison_parser.y" +#line 1029 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4884 "bison_parser.cpp" +#line 4890 "bison_parser.cpp" break; case 243: /* datetime_field_plural: SECONDS */ -#line 1023 "bison_parser.y" +#line 1031 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4890 "bison_parser.cpp" +#line 4896 "bison_parser.cpp" break; case 244: /* datetime_field_plural: MINUTES */ -#line 1024 "bison_parser.y" +#line 1032 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4896 "bison_parser.cpp" +#line 4902 "bison_parser.cpp" break; case 245: /* datetime_field_plural: HOURS */ -#line 1025 "bison_parser.y" +#line 1033 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4902 "bison_parser.cpp" +#line 4908 "bison_parser.cpp" break; case 246: /* datetime_field_plural: DAYS */ -#line 1026 "bison_parser.y" +#line 1034 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4908 "bison_parser.cpp" +#line 4914 "bison_parser.cpp" break; case 247: /* datetime_field_plural: MONTHS */ -#line 1027 "bison_parser.y" +#line 1035 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4914 "bison_parser.cpp" +#line 4920 "bison_parser.cpp" break; case 248: /* datetime_field_plural: YEARS */ -#line 1028 "bison_parser.y" +#line 1036 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4920 "bison_parser.cpp" +#line 4926 "bison_parser.cpp" break; case 251: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1032 "bison_parser.y" +#line 1040 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4926 "bison_parser.cpp" +#line 4932 "bison_parser.cpp" break; case 252: /* array_index: operand '[' int_literal ']' */ -#line 1034 "bison_parser.y" +#line 1042 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4932 "bison_parser.cpp" +#line 4938 "bison_parser.cpp" break; case 253: /* between_expr: operand BETWEEN operand AND operand */ -#line 1036 "bison_parser.y" +#line 1044 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4938 "bison_parser.cpp" +#line 4944 "bison_parser.cpp" break; case 254: /* column_name: IDENTIFIER */ -#line 1038 "bison_parser.y" +#line 1046 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4944 "bison_parser.cpp" +#line 4950 "bison_parser.cpp" break; case 255: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1039 "bison_parser.y" +#line 1047 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4950 "bison_parser.cpp" +#line 4956 "bison_parser.cpp" break; case 256: /* column_name: '*' */ -#line 1040 "bison_parser.y" +#line 1048 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4956 "bison_parser.cpp" +#line 4962 "bison_parser.cpp" break; case 257: /* column_name: IDENTIFIER '.' '*' */ -#line 1041 "bison_parser.y" +#line 1049 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4962 "bison_parser.cpp" +#line 4968 "bison_parser.cpp" break; case 265: /* string_literal: STRING */ -#line 1045 "bison_parser.y" +#line 1053 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4968 "bison_parser.cpp" +#line 4974 "bison_parser.cpp" break; case 266: /* bool_literal: TRUE */ -#line 1047 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4974 "bison_parser.cpp" +#line 4980 "bison_parser.cpp" break; case 267: /* bool_literal: FALSE */ -#line 1048 "bison_parser.y" +#line 1056 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4980 "bison_parser.cpp" +#line 4986 "bison_parser.cpp" break; case 268: /* num_literal: FLOATVAL */ -#line 1050 "bison_parser.y" +#line 1058 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4986 "bison_parser.cpp" +#line 4992 "bison_parser.cpp" break; case 270: /* int_literal: INTVAL */ -#line 1053 "bison_parser.y" +#line 1061 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4992 "bison_parser.cpp" +#line 4998 "bison_parser.cpp" break; case 271: /* null_literal: NULL */ -#line 1055 "bison_parser.y" +#line 1063 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4998 "bison_parser.cpp" +#line 5004 "bison_parser.cpp" break; case 272: /* date_literal: DATE STRING */ -#line 1057 "bison_parser.y" +#line 1065 "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 @@ -5009,20 +5015,20 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeDateLiteral((yyvsp[0].sval)); } -#line 5013 "bison_parser.cpp" +#line 5019 "bison_parser.cpp" break; case 273: /* interval_literal: int_literal duration_field */ -#line 1068 "bison_parser.y" +#line 1076 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); } -#line 5022 "bison_parser.cpp" +#line 5028 "bison_parser.cpp" break; case 274: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1072 "bison_parser.y" +#line 1080 "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 @@ -5034,11 +5040,11 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-1].sval)); (yyval.expr) = Expr::makeIntervalLiteral(duration, (yyvsp[0].datetime_field)); } -#line 5038 "bison_parser.cpp" +#line 5044 "bison_parser.cpp" break; case 275: /* interval_literal: INTERVAL STRING */ -#line 1083 "bison_parser.y" +#line 1091 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5070,61 +5076,61 @@ YYLTYPE yylloc = yyloc_default; } (yyval.expr) = Expr::makeIntervalLiteral(duration, unit); } -#line 5074 "bison_parser.cpp" +#line 5080 "bison_parser.cpp" break; case 276: /* param_expr: '?' */ -#line 1115 "bison_parser.y" +#line 1123 "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 5084 "bison_parser.cpp" +#line 5090 "bison_parser.cpp" break; case 278: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1124 "bison_parser.y" +#line 1132 "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 5095 "bison_parser.cpp" +#line 5101 "bison_parser.cpp" break; case 282: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1133 "bison_parser.y" +#line 1141 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5106 "bison_parser.cpp" +#line 5112 "bison_parser.cpp" break; case 283: /* table_ref_commalist: table_ref_atomic */ -#line 1140 "bison_parser.y" +#line 1148 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 5115 "bison_parser.cpp" +#line 5121 "bison_parser.cpp" break; case 284: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1144 "bison_parser.y" +#line 1152 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 5124 "bison_parser.cpp" +#line 5130 "bison_parser.cpp" break; case 285: /* table_ref_name: table_name opt_table_alias */ -#line 1149 "bison_parser.y" +#line 1157 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5132,215 +5138,215 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 5136 "bison_parser.cpp" +#line 5142 "bison_parser.cpp" break; case 286: /* table_ref_name_no_alias: table_name */ -#line 1157 "bison_parser.y" +#line 1165 "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 5146 "bison_parser.cpp" +#line 5152 "bison_parser.cpp" break; case 287: /* table_name: IDENTIFIER */ -#line 1163 "bison_parser.y" +#line 1171 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); } -#line 5155 "bison_parser.cpp" +#line 5161 "bison_parser.cpp" break; case 288: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1167 "bison_parser.y" +#line 1175 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 5164 "bison_parser.cpp" +#line 5170 "bison_parser.cpp" break; case 289: /* opt_index_name: IDENTIFIER */ -#line 1172 "bison_parser.y" +#line 1180 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } -#line 5170 "bison_parser.cpp" +#line 5176 "bison_parser.cpp" break; case 290: /* opt_index_name: %empty */ -#line 1173 "bison_parser.y" +#line 1181 "bison_parser.y" { (yyval.sval) = nullptr; } -#line 5176 "bison_parser.cpp" +#line 5182 "bison_parser.cpp" break; case 292: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1175 "bison_parser.y" +#line 1183 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 5182 "bison_parser.cpp" +#line 5188 "bison_parser.cpp" break; case 294: /* opt_table_alias: %empty */ -#line 1177 "bison_parser.y" +#line 1185 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5188 "bison_parser.cpp" +#line 5194 "bison_parser.cpp" break; case 295: /* alias: AS IDENTIFIER */ -#line 1179 "bison_parser.y" +#line 1187 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5194 "bison_parser.cpp" +#line 5200 "bison_parser.cpp" break; case 296: /* alias: IDENTIFIER */ -#line 1180 "bison_parser.y" +#line 1188 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 5200 "bison_parser.cpp" +#line 5206 "bison_parser.cpp" break; case 298: /* opt_alias: %empty */ -#line 1182 "bison_parser.y" +#line 1190 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 5206 "bison_parser.cpp" +#line 5212 "bison_parser.cpp" break; case 299: /* opt_locking_clause: opt_locking_clause_list */ -#line 1188 "bison_parser.y" +#line 1196 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } -#line 5212 "bison_parser.cpp" +#line 5218 "bison_parser.cpp" break; case 300: /* opt_locking_clause: %empty */ -#line 1189 "bison_parser.y" +#line 1197 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } -#line 5218 "bison_parser.cpp" +#line 5224 "bison_parser.cpp" break; case 301: /* opt_locking_clause_list: locking_clause */ -#line 1191 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); } -#line 5227 "bison_parser.cpp" +#line 5233 "bison_parser.cpp" break; case 302: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1195 "bison_parser.y" +#line 1203 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); } -#line 5236 "bison_parser.cpp" +#line 5242 "bison_parser.cpp" break; case 303: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1200 "bison_parser.y" +#line 1208 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); (yyval.locking_t)->tables = nullptr; } -#line 5247 "bison_parser.cpp" +#line 5253 "bison_parser.cpp" break; case 304: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1206 "bison_parser.y" +#line 1214 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); (yyval.locking_t)->tables = (yyvsp[-1].str_vec); (yyval.locking_t)->rowLockWaitPolicy = (yyvsp[0].lock_wait_policy_t); } -#line 5258 "bison_parser.cpp" +#line 5264 "bison_parser.cpp" break; case 305: /* row_lock_mode: UPDATE */ -#line 1213 "bison_parser.y" +#line 1221 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } -#line 5264 "bison_parser.cpp" +#line 5270 "bison_parser.cpp" break; case 306: /* row_lock_mode: NO KEY UPDATE */ -#line 1214 "bison_parser.y" +#line 1222 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } -#line 5270 "bison_parser.cpp" +#line 5276 "bison_parser.cpp" break; case 307: /* row_lock_mode: SHARE */ -#line 1215 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } -#line 5276 "bison_parser.cpp" +#line 5282 "bison_parser.cpp" break; case 308: /* row_lock_mode: KEY SHARE */ -#line 1216 "bison_parser.y" +#line 1224 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } -#line 5282 "bison_parser.cpp" +#line 5288 "bison_parser.cpp" break; case 309: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1218 "bison_parser.y" +#line 1226 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } -#line 5288 "bison_parser.cpp" +#line 5294 "bison_parser.cpp" break; case 310: /* opt_row_lock_policy: NOWAIT */ -#line 1219 "bison_parser.y" +#line 1227 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } -#line 5294 "bison_parser.cpp" +#line 5300 "bison_parser.cpp" break; case 311: /* opt_row_lock_policy: %empty */ -#line 1220 "bison_parser.y" +#line 1228 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } -#line 5300 "bison_parser.cpp" +#line 5306 "bison_parser.cpp" break; case 313: /* opt_with_clause: %empty */ -#line 1226 "bison_parser.y" +#line 1234 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 5306 "bison_parser.cpp" +#line 5312 "bison_parser.cpp" break; case 314: /* with_clause: WITH with_description_list */ -#line 1228 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 5312 "bison_parser.cpp" +#line 5318 "bison_parser.cpp" break; case 315: /* with_description_list: with_description */ -#line 1230 "bison_parser.y" +#line 1238 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 5321 "bison_parser.cpp" +#line 5327 "bison_parser.cpp" break; case 316: /* with_description_list: with_description_list ',' with_description */ -#line 1234 "bison_parser.y" +#line 1242 "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 5330 "bison_parser.cpp" +#line 5336 "bison_parser.cpp" break; case 317: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1239 "bison_parser.y" +#line 1247 "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 5340 "bison_parser.cpp" +#line 5346 "bison_parser.cpp" break; case 318: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1249 "bison_parser.y" +#line 1257 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5348,11 +5354,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 5352 "bison_parser.cpp" +#line 5358 "bison_parser.cpp" break; case 319: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1256 "bison_parser.y" +#line 1264 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5361,11 +5367,11 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 5365 "bison_parser.cpp" +#line 5371 "bison_parser.cpp" break; case 320: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1264 "bison_parser.y" +#line 1272 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5389,89 +5395,89 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 5393 "bison_parser.cpp" +#line 5399 "bison_parser.cpp" break; case 321: /* opt_join_type: INNER */ -#line 1288 "bison_parser.y" +#line 1296 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5399 "bison_parser.cpp" +#line 5405 "bison_parser.cpp" break; case 322: /* opt_join_type: LEFT OUTER */ -#line 1289 "bison_parser.y" +#line 1297 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5405 "bison_parser.cpp" +#line 5411 "bison_parser.cpp" break; case 323: /* opt_join_type: LEFT */ -#line 1290 "bison_parser.y" +#line 1298 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } -#line 5411 "bison_parser.cpp" +#line 5417 "bison_parser.cpp" break; case 324: /* opt_join_type: RIGHT OUTER */ -#line 1291 "bison_parser.y" +#line 1299 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5417 "bison_parser.cpp" +#line 5423 "bison_parser.cpp" break; case 325: /* opt_join_type: RIGHT */ -#line 1292 "bison_parser.y" +#line 1300 "bison_parser.y" { (yyval.join_type) = kJoinRight; } -#line 5423 "bison_parser.cpp" +#line 5429 "bison_parser.cpp" break; case 326: /* opt_join_type: FULL OUTER */ -#line 1293 "bison_parser.y" +#line 1301 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5429 "bison_parser.cpp" +#line 5435 "bison_parser.cpp" break; case 327: /* opt_join_type: OUTER */ -#line 1294 "bison_parser.y" +#line 1302 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5435 "bison_parser.cpp" +#line 5441 "bison_parser.cpp" break; case 328: /* opt_join_type: FULL */ -#line 1295 "bison_parser.y" +#line 1303 "bison_parser.y" { (yyval.join_type) = kJoinFull; } -#line 5441 "bison_parser.cpp" +#line 5447 "bison_parser.cpp" break; case 329: /* opt_join_type: CROSS */ -#line 1296 "bison_parser.y" +#line 1304 "bison_parser.y" { (yyval.join_type) = kJoinCross; } -#line 5447 "bison_parser.cpp" +#line 5453 "bison_parser.cpp" break; case 330: /* opt_join_type: %empty */ -#line 1297 "bison_parser.y" +#line 1305 "bison_parser.y" { (yyval.join_type) = kJoinInner; } -#line 5453 "bison_parser.cpp" +#line 5459 "bison_parser.cpp" break; case 334: /* ident_commalist: IDENTIFIER */ -#line 1308 "bison_parser.y" +#line 1316 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 5462 "bison_parser.cpp" +#line 5468 "bison_parser.cpp" break; case 335: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1312 "bison_parser.y" +#line 1320 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 5471 "bison_parser.cpp" +#line 5477 "bison_parser.cpp" break; -#line 5475 "bison_parser.cpp" +#line 5481 "bison_parser.cpp" default: break; } @@ -5700,7 +5706,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1318 "bison_parser.y" +#line 1326 "bison_parser.y" // clang-format on /********************************* diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 286eabda..6005a081 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -320,6 +320,7 @@ union HSQL_STYPE hsql::TableName table_name; hsql::TableRef* table; hsql::UpdateClause* update_t; + hsql::WindowDescription* window_description; hsql::WithDescription* with_description_t; std::vector* str_vec; @@ -338,7 +339,7 @@ union HSQL_STYPE hsql::RowLockMode lock_mode_t; hsql::RowLockWaitPolicy lock_wait_policy_t; -#line 342 "bison_parser.h" +#line 343 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 21e6bf3c..6bd5a3fc 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -141,6 +141,7 @@ hsql::TableName table_name; hsql::TableRef* table; hsql::UpdateClause* update_t; + hsql::WindowDescription* window_description; hsql::WithDescription* with_description_t; std::vector* str_vec; @@ -239,9 +240,10 @@ %type table_name %type opt_index_name %type file_path prepare_target_query - %type opt_frame_clause + %type frame_clause %type frame_bound %type frame_type + %type opt_window %type opt_not_exists opt_exists opt_distinct opt_all %type opt_decimal_specification %type opt_time_precision @@ -249,7 +251,7 @@ %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 window_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 @@ -929,7 +931,7 @@ expr_alias : expr opt_alias { } }; -expr : operand | between_expr | logic_expr | exists_expr | in_expr | window_expr; +expr : operand | between_expr | logic_expr | exists_expr | in_expr; operand : '(' expr ')' { $$ = $2; } | array_index | scalar_expr | unary_expr | binary_expr | case_expr | function_expr | extract_expr | cast_expr | @@ -964,27 +966,6 @@ in_expr : operand IN '(' expr_list ')' { $$ = Expr::makeInOperator($1, $4); } | operand IN '(' select_no_paren ')' { $$ = Expr::makeInOperator($1, $4); } | operand NOT IN '(' select_no_paren ')' { $$ = Expr::makeOpUnary(kOpNot, Expr::makeInOperator($1, $5)); }; -// Window function expressions, based on https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS -// We do not support named windows (for simplicity) and filters (not part of the SQL standard). -window_expr : operand OVER '(' opt_partition opt_order opt_frame_clause ')' { $$ = Expr::makeWindow($1, $4, $5, $6); }; - -opt_partition : PARTITION BY expr_list { $$ = $3; } -| /* empty */ { $$ = nullptr; }; - -opt_frame_clause : frame_type frame_bound { $$ = new FrameDescription{$1, $2, nullptr}; } -| frame_type BETWEEN frame_bound AND frame_bound { $$ = new FrameDescription{$1, $3, $5}; } -| /* empty */ { $$ = nullptr; }; - -frame_type : RANGE { $$ = FrameType::kRange; } -| ROWS { $$ = FrameType::kRows; } -| GROUPS { $$ = FrameType::kGroups; }; - -frame_bound : UNBOUNDED PRECEDING { $$ = new FrameBound{0, kPreceding, true}; } -| INTVAL PRECEDING { $$ = new FrameBound{$1, kPreceding, false}; } -| UNBOUNDED FOLLOWING { $$ = new FrameBound{0, kFollowing, true}; } -| INTVAL FOLLOWING { $$ = new FrameBound{$1, kFollowing, false}; } -| CURRENT_ROW { $$ = new FrameBound{0, kCurrentRow, false}; }; - // CASE grammar based on: flex & bison by John Levine // https://www.safaribooksonline.com/library/view/flex-bison/9780596805418/ch04.html#id352665 case_expr : CASE expr case_list END { $$ = Expr::makeCase($2, $3, nullptr); } @@ -1006,8 +987,35 @@ comp_expr : operand '=' operand { $$ = Expr::makeOpBinary($1, kOpEquals, $3); } | operand LESSEQ operand { $$ = Expr::makeOpBinary($1, kOpLessEq, $3); } | operand GREATEREQ operand { $$ = Expr::makeOpBinary($1, kOpGreaterEq, $3); }; -function_expr : IDENTIFIER '(' ')' { $$ = Expr::makeFunctionRef($1, new std::vector(), false); } -| IDENTIFIER '(' opt_distinct expr_list ')' { $$ = Expr::makeFunctionRef($1, $4, $3); }; +function_expr : IDENTIFIER '(' ')' opt_window { $$ = Expr::makeFunctionRef($1, new std::vector(), false, $4); } +| IDENTIFIER '(' opt_distinct expr_list ')' opt_window { $$ = Expr::makeFunctionRef($1, $4, $3, $6); }; + +// Window function expressions, based on https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS +// We do not support named windows, collations and exclusions (for simplicity) and filters (not part of the SQL standard). +opt_window : OVER '(' opt_partition opt_order frame_clause ')' { $$ = new WindowDescription($3, $4, $5); } +| /* empty */ { $$ = nullptr; }; + +opt_partition : PARTITION BY expr_list { $$ = $3; } +| /* empty */ { $$ = nullptr; }; + +// We use the Postgres default if the frame end or the whole frame clause is omitted. "If `frame_end` is omitted, the +// end defaults to `CURRENT ROW`. [...] The default framing option is `RANGE UNBOUNDED PRECEDING`, which is the same as +// `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`." +frame_clause : frame_type frame_bound { $$ = new FrameDescription{$1, $2, new FrameBound{0, kCurrentRow, false}}; } +| frame_type BETWEEN frame_bound AND frame_bound { $$ = new FrameDescription{$1, $3, $5}; } +| /* empty */ { + $$ = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; +}; + +frame_type : RANGE { $$ = kRange; } +| ROWS { $$ = kRows; } +| GROUPS { $$ = kGroups; }; + +frame_bound : UNBOUNDED PRECEDING { $$ = new FrameBound{0, kPreceding, true}; } +| INTVAL PRECEDING { $$ = new FrameBound{$1, kPreceding, false}; } +| UNBOUNDED FOLLOWING { $$ = new FrameBound{0, kFollowing, true}; } +| INTVAL FOLLOWING { $$ = new FrameBound{$1, kFollowing, false}; } +| CURRENT_ROW { $$ = new FrameBound{0, kCurrentRow, false}; }; extract_expr : EXTRACT '(' datetime_field FROM expr ')' { $$ = Expr::makeExtract($3, $5); }; diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index bd543786..ff838cac 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -16,10 +16,18 @@ FrameDescription::~FrameDescription() { delete end; } -WindowDescription::WindowDescription(std::vector* orderList, FrameDescription* frameDescription) - : orderList{orderList}, frameDescription(frameDescription) {} +WindowDescription::WindowDescription(std::vector* partitionList, std::vector* orderList, + FrameDescription* frameDescription) + : partitionList{partitionList}, orderList{orderList}, frameDescription(frameDescription) {} WindowDescription::~WindowDescription() { + if (partitionList) { + for (Expr* e : *partitionList) { + delete e; + } + delete partitionList; + } + if (orderList) { for (OrderDescription* orderDescription : *orderList) { delete orderDescription; @@ -199,11 +207,12 @@ Expr* Expr::makeStar(char* table) { return e; } -Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, bool distinct) { +Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, bool distinct, WindowDescription* window) { Expr* e = new Expr(kExprFunctionRef); e->name = func_name; e->exprList = exprList; e->distinct = distinct; + e->windowDescription = window; return e; } @@ -271,15 +280,6 @@ Expr* Expr::makeCast(Expr* expr, ColumnType columnType) { return e; } -Expr* Expr::makeWindow(Expr* expr, std::vector* partitionList, std::vector* orderList, - FrameDescription* frameDescription) { - Expr* e = new Expr(kExprWindow); - e->expr = expr; - e->exprList = partitionList; - e->windowDescription = new WindowDescription(orderList, frameDescription); - return e; -} - bool Expr::isType(ExprType exprType) const { return exprType == type; } bool Expr::isLiteral() const { diff --git a/src/sql/Expr.h b/src/sql/Expr.h index 23882c63..e44c42ca 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -31,8 +31,7 @@ enum ExprType { kExprArray, kExprArrayIndex, kExprExtract, - kExprCast, - kExprWindow + kExprCast }; // Operator types. These are important for expressions of type kExprOperator. @@ -105,17 +104,19 @@ struct FrameDescription { FrameBound* end; }; +typedef struct Expr Expr; + // Description of additional fields for a window expression. struct WindowDescription { - WindowDescription(std::vector* orderList, FrameDescription* frameDescription); + WindowDescription(std::vector* partitionList, std::vector* orderList, + FrameDescription* frameDescription); virtual ~WindowDescription(); + std::vector* partitionList; std::vector* orderList; FrameDescription* frameDescription; }; -typedef struct Expr Expr; - // Represents SQL expressions (i.e. literals, operators, column_refs). // TODO: When destructing a placeholder expression, we might need to alter the // placeholder_list. @@ -197,7 +198,7 @@ struct Expr { static Expr* makeStar(char* table); - static Expr* makeFunctionRef(char* func_name, std::vector* exprList, bool distinct); + static Expr* makeFunctionRef(char* func_name, std::vector* exprList, bool distinct, WindowDescription* window); static Expr* makeArray(std::vector* exprList); @@ -216,9 +217,6 @@ struct Expr { static Expr* makeExtract(DatetimeField datetimeField1, Expr* expr); static Expr* makeCast(Expr* expr, ColumnType columnType); - - static Expr* makeWindow(Expr* expr, std::vector* partitionList, std::vector* orderList, - FrameDescription* frameDescription); }; // Zero initializes an Expr object and assigns it to a space in the heap diff --git a/src/util/sqlhelper.cpp b/src/util/sqlhelper.cpp index f728859f..7c2f16d9 100644 --- a/src/util/sqlhelper.cpp +++ b/src/util/sqlhelper.cpp @@ -11,7 +11,8 @@ void printOperatorExpression(Expr* expr, uintmax_t num_indent); void printAlias(Alias* alias, uintmax_t num_indent); std::ostream& operator<<(std::ostream& os, const OperatorType& op); -std::ostream& operator<<(std::ostream& os, const DatetimeField& op); +std::ostream& operator<<(std::ostream& os, const DatetimeField& datetime); +std::ostream& operator<<(std::ostream& os, const FrameBound& frame_bound); std::string indent(uintmax_t num_indent) { return std::string(num_indent, '\t'); } void inprint(int64_t val, uintmax_t num_indent) { std::cout << indent(num_indent).c_str() << val << " " << std::endl; } @@ -123,7 +124,13 @@ void printExpression(Expr* expr, uintmax_t num_indent) { break; case kExprFunctionRef: inprint(expr->name, num_indent); - for (Expr* e : *expr->exprList) printExpression(e, num_indent + 1); + for (Expr* e : *expr->exprList) { + printExpression(e, num_indent + 1); + } + + if (expr->windowDescription) { + printWindowDescription(expr->windowDescription, num_indent + 1); + } break; case kExprExtract: inprint("EXTRACT", num_indent); @@ -153,25 +160,6 @@ void printExpression(Expr* expr, uintmax_t num_indent) { printExpression(expr->expr, num_indent + 1); inprint(expr->ival, num_indent); break; - case kExprWindow: - printExpression(expr->expr, num_indent); - inprint("OVER", num_indent); - if (expr->exprList) { - inprint("PARTITION BY", num_indent + 1); - for (const auto e : *expr->exprList) { - printExpression(e, num_indent + 2); - } - } - if (expr->windowDescription) { - if (expr->windowDescription->orderList) { - inprint("ORDER BY", num_indent + 1); - printOrderBy(expr->windowDescription->orderList, num_indent + 2); - } - if (expr->windowDescription->frameDescription) { - printFrameDescription(expr->windowDescription->frameDescription, num_indent + 2); - } - } - break; default: std::cerr << "Unrecognized expression type " << expr->type << std::endl; return; @@ -194,10 +182,22 @@ void printOrderBy(const std::vector* expr, uintmax_t num_inde } } -void printFrameDescription(FrameDescription* frame_description, uintmax_t num_indent) { - std::ostringstream stream; - stream << indent(num_indent); - switch (frame_description->type) { +void printWindowDescription(WindowDescription* window_description, uintmax_t num_indent) { + inprint("OVER", num_indent); + if (window_description->partitionList) { + inprint("PARTITION BY", num_indent + 1); + for (const auto e : *window_description->partitionList) { + printExpression(e, num_indent + 2); + } + } + + if (window_description->orderList) { + inprint("ORDER BY", num_indent + 1); + printOrderBy(window_description->orderList, num_indent + 2); + } + + std::stringstream stream; + switch (window_description->frameDescription->type) { case kRows: stream << "ROWS"; break; @@ -208,15 +208,9 @@ void printFrameDescription(FrameDescription* frame_description, uintmax_t num_in stream << "GROUPS"; break; } - - stream << " "; - - if (frame_description->end) { - stream << "BETWEEN " << frame_description->start << " AND " << frame_description->end; - } else { - stream << frame_description->start; - } - inprint(stream.str().c_str(), num_indent); + stream << " BETWEEN " << *window_description->frameDescription->start << " AND " + << *window_description->frameDescription->end; + inprint(stream.str().c_str(), num_indent + 1); } void printSelectStatementInfo(const SelectStatement* stmt, uintmax_t num_indent) { @@ -477,21 +471,21 @@ std::ostream& operator<<(std::ostream& os, const DatetimeField& datetime) { } } -std::ostream& operator<<(std::ostream& os, FrameBound* frame_bound) { - if (frame_bound->type == kCurrentRow) { +std::ostream& operator<<(std::ostream& os, const FrameBound& frame_bound) { + if (frame_bound.type == kCurrentRow) { os << "CURRENT ROW"; return os; } - if (frame_bound->unbounded) { + if (frame_bound.unbounded) { os << "UNBOUNDED"; } else { - os << frame_bound->offset; + os << frame_bound.offset; } os << " "; - if (frame_bound->type == kPreceding) { + if (frame_bound.type == kPreceding) { os << "PRECEDING"; } else { os << "FOLLOWING"; diff --git a/src/util/sqlhelper.h b/src/util/sqlhelper.h index 3baa7da7..f48f43db 100644 --- a/src/util/sqlhelper.h +++ b/src/util/sqlhelper.h @@ -32,8 +32,8 @@ void printExpression(Expr* expr, uintmax_t num_indent); // Prints an ORDER BY clause void printOrderBy(const std::vector* expr, uintmax_t num_indent); -// Prints the type and bounds of a WindowExpression's frame. -void printFrameDescription(FrameDescription* frame_description, uintmax_t num_indent); +// Prints WindowDescription. +void printWindowDescription(WindowDescription* window_description, uintmax_t num_indent); } // namespace hsql diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 8052d96a..96fd4503 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -54,6 +54,8 @@ !SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN -1 PRECEDING AND CURRENT ROW) FROM test; !SELECT test1, rank() OVER (INVALID UNBOUNDED PRECEDING) FROM test; !SELECT rank() OVER (INVALID) FROM test; +!SELECT rank OVER () FROM test; +!SELECT a = 1 OVER () FROM test; !SELECT rank() OVER (ROWS UNBOUNDEDD PRECEDING) FROM test; !SELECT rank() OVER (ROWS UNBOUNDED PRECEDINGG) FROM test; !SELECT test1, rank() OVER (ROWS -1 PRECEDING) FROM test; diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index cc2a36b5..3a412510 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -102,6 +102,7 @@ SELECT * FROM test1, test2 WHERE test2.val = 2 FOR SHARE OF test1, test2; SELECT * FROM test1, test2 WHERE test2.val = 2 FOR UPDATE OF test1 FOR SHARE OF test2; # WINDOW EXPRESSIONS SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3 ORDER BY test4 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) an_alias FROM test; +SELECT sum(test2)/sum(sum(test2)) OVER (PARTITION BY test1) FROM test GROUP BY test3; SELECT test1, sum(sum(test2)) OVER (PARTITION BY test3, test4 ORDER BY test5, test6 ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING) FROM test; SELECT test1, rank() OVER (ORDER BY test2 DESC, test3 ASC) rnk FROM test; SELECT rank() OVER () FROM test; diff --git a/test/select_tests.cpp b/test/select_tests.cpp index bd467b56..40ad4e51 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -989,10 +989,10 @@ TEST(MultipleLockingClause) { ASSERT_STREQ(stmt->lockings->at(2)->tables->at(1), "s"); } -TEST(WindowExpression) { +TEST(WindowFunctions) { SelectStatement* stmt; TEST_PARSE_SQL_QUERY( - "SELECT t2, avg(t1) OVER() average, rank() OVER(ORDER BY t1) FROM t;" + "SELECT t2, 1 / avg(t1) OVER(), rank() OVER(ORDER BY t1 DESC) rnk FROM t;" "SELECT avg(t1) OVER(PARTITION BY t2, t3 ORDER BY t4, t5 ROWS UNBOUNDED PRECEDING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 ROWS BETWEEN 25 PRECEDING AND 2 FOLLOWING) FROM t;" "SELECT rank() OVER(PARTITION BY t1 ORDER BY t2 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM " @@ -1007,33 +1007,51 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); - ASSERT_EQ(stmt->selectList->at(1)->type, kExprWindow); - ASSERT_STREQ(stmt->selectList->at(1)->alias, "average"); - ASSERT_FALSE(stmt->selectList->at(1)->exprList); + ASSERT_EQ(stmt->selectList->at(1)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(1)->opType, kOpSlash); ASSERT_TRUE(stmt->selectList->at(1)->expr); - ASSERT_EQ(stmt->selectList->at(1)->expr->type, kExprFunctionRef); - ASSERT_STREQ(stmt->selectList->at(1)->expr->name, "avg"); - ASSERT_TRUE(stmt->selectList->at(1)->expr->exprList) - ASSERT_EQ(stmt->selectList->at(1)->expr->exprList->size(), 1); - ASSERT_EQ(stmt->selectList->at(1)->expr->exprList->at(0)->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(1)->expr->exprList->at(0)->name, "t1"); - ASSERT_TRUE(stmt->selectList->at(1)->windowDescription); - ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->orderList); - ASSERT_FALSE(stmt->selectList->at(1)->windowDescription->frameDescription); - - ASSERT_EQ(stmt->selectList->at(2)->type, kExprWindow); - ASSERT_FALSE(stmt->selectList->at(2)->exprList); - ASSERT_TRUE(stmt->selectList->at(2)->expr); - ASSERT_EQ(stmt->selectList->at(2)->expr->type, kExprFunctionRef); - ASSERT_STREQ(stmt->selectList->at(2)->expr->name, "rank"); - ASSERT_TRUE(stmt->selectList->at(2)->expr->exprList); - ASSERT_TRUE(stmt->selectList->at(2)->expr->exprList->empty()); + ASSERT_EQ(stmt->selectList->at(1)->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(1)->expr->ival, 1); + + ASSERT_TRUE(stmt->selectList->at(1)->expr2); + ASSERT_EQ(stmt->selectList->at(1)->expr2->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(1)->expr2->name, "avg"); + ASSERT_TRUE(stmt->selectList->at(1)->expr2->exprList); + ASSERT_EQ(stmt->selectList->at(1)->expr2->exprList->size(), 1); + ASSERT_EQ(stmt->selectList->at(1)->expr2->exprList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(1)->expr2->exprList->at(0)->name, "t1"); + + ASSERT_TRUE(stmt->selectList->at(1)->expr2->windowDescription); + ASSERT_FALSE(stmt->selectList->at(1)->expr2->windowDescription->partitionList); + ASSERT_FALSE(stmt->selectList->at(1)->expr2->windowDescription->orderList); + ASSERT_TRUE(stmt->selectList->at(1)->expr2->windowDescription->frameDescription); + ASSERT_EQ(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->type, kRange); + ASSERT_TRUE(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->start); + ASSERT_EQ(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->start->offset, 0); + ASSERT_EQ(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->start->type, kPreceding); + ASSERT_TRUE(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->start->unbounded); + ASSERT_TRUE(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->end); + ASSERT_EQ(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->end->offset, 0); + ASSERT_EQ(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->end->type, kCurrentRow); + ASSERT_FALSE(stmt->selectList->at(1)->expr2->windowDescription->frameDescription->end->unbounded); + + ASSERT_TRUE(stmt->selectList->at(2)); + ASSERT_EQ(stmt->selectList->at(2)->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(2)->name, "rank"); + ASSERT_TRUE(stmt->selectList->at(2)->alias); + ASSERT_STREQ(stmt->selectList->at(2)->alias, "rnk"); + ASSERT_TRUE(stmt->selectList->at(2)->exprList); + ASSERT_TRUE(stmt->selectList->at(2)->exprList->empty()); + ASSERT_TRUE(stmt->selectList->at(2)->windowDescription); + ASSERT_FALSE(stmt->selectList->at(2)->windowDescription->partitionList); ASSERT_TRUE(stmt->selectList->at(2)->windowDescription->orderList); ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->size(), 1); + ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->type, kOrderDesc); + ASSERT_TRUE(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr); ASSERT_EQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(2)->windowDescription->orderList->at(0)->expr->name, "t1"); - ASSERT_FALSE(stmt->selectList->at(2)->windowDescription->frameDescription); + ASSERT_TRUE(stmt->selectList->at(2)->windowDescription->frameDescription); stmt = (SelectStatement*)result.getStatement(1); ASSERT_TRUE(stmt->selectList); @@ -1042,34 +1060,38 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); - ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); - ASSERT_TRUE(stmt->selectList->at(0)->exprList); - ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 2); - ASSERT_EQ(stmt->selectList->at(0)->exprList->at(0)->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(0)->name, "t2"); - ASSERT_EQ(stmt->selectList->at(0)->exprList->at(1)->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(1)->name, "t3"); - ASSERT_TRUE(stmt->selectList->at(0)->expr); - ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); - ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "avg"); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); - ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->size(), 1); - ASSERT_EQ(stmt->selectList->at(0)->expr->exprList->at(0)->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(0)->expr->exprList->at(0)->name, "t1"); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(0)->name, "avg"); + ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 1); + ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(0)->name, "t1"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->partitionList); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->partitionList->size(), 2); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->partitionList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->partitionList->at(0)->name, "t2"); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->partitionList->at(1)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->partitionList->at(1)->name, "t3"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 2); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->type, kOrderAsc); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t4"); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(1)->expr->name, "t5"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->type, kRows); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->offset, 0); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->start->type, kPreceding); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->start->unbounded); - ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription->end); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription->end); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->offset, 0); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->frameDescription->end->type, kCurrentRow); + ASSERT_FALSE(stmt->selectList->at(0)->windowDescription->frameDescription->end->unbounded); const auto frame_starts = std::vector{{25, kPreceding, false}, {0, kPreceding, true}, {0, kPreceding, true}}; @@ -1087,19 +1109,20 @@ TEST(WindowExpression) { ASSERT_EQ(stmt->fromTable->type, kTableName); ASSERT_STREQ(stmt->fromTable->name, "t"); - ASSERT_EQ(stmt->selectList->at(0)->type, kExprWindow); - ASSERT_TRUE(stmt->selectList->at(0)->exprList); - ASSERT_EQ(stmt->selectList->at(0)->exprList->size(), 1); - ASSERT_EQ(stmt->selectList->at(0)->exprList->at(0)->type, kExprColumnRef); - ASSERT_STREQ(stmt->selectList->at(0)->exprList->at(0)->name, "t1"); - ASSERT_TRUE(stmt->selectList->at(0)->expr); - ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprFunctionRef); - ASSERT_STREQ(stmt->selectList->at(0)->expr->name, "rank"); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList); - ASSERT_TRUE(stmt->selectList->at(0)->expr->exprList->empty()); + ASSERT_EQ(stmt->selectList->at(0)->type, kExprFunctionRef); + ASSERT_STREQ(stmt->selectList->at(0)->name, "rank"); + ASSERT_TRUE(stmt->selectList->at(0)->exprList->empty()); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->partitionList); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->partitionList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->partitionList->at(0)->type, kExprColumnRef); + ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->partitionList->at(0)->name, "t1"); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->size(), 1); + ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->type, kOrderAsc); + ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr); ASSERT_EQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->type, kExprColumnRef); ASSERT_STREQ(stmt->selectList->at(0)->windowDescription->orderList->at(0)->expr->name, "t2"); ASSERT_TRUE(stmt->selectList->at(0)->windowDescription->frameDescription); From d90394a7832fcf3a09af3193de072b027204f9af Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Wed, 7 Jun 2023 20:41:23 +0200 Subject: [PATCH 11/12] opt_frame_clause --- src/parser/bison_parser.cpp | 18 +++++++++--------- src/parser/bison_parser.y | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index df81a5e4..5f5d4ce5 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -411,7 +411,7 @@ enum yysymbol_kind_t YYSYMBOL_function_expr = 276, /* function_expr */ YYSYMBOL_opt_window = 277, /* opt_window */ YYSYMBOL_opt_partition = 278, /* opt_partition */ - YYSYMBOL_frame_clause = 279, /* frame_clause */ + YYSYMBOL_opt_frame_clause = 279, /* opt_frame_clause */ YYSYMBOL_frame_type = 280, /* frame_type */ YYSYMBOL_frame_bound = 281, /* frame_bound */ YYSYMBOL_extract_expr = 282, /* extract_expr */ @@ -961,7 +961,7 @@ static const char *const yytname[] = "expr_list", "opt_literal_list", "literal_list", "expr_alias", "expr", "operand", "scalar_expr", "unary_expr", "binary_expr", "logic_expr", "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", - "function_expr", "opt_window", "opt_partition", "frame_clause", + "function_expr", "opt_window", "opt_partition", "opt_frame_clause", "frame_type", "frame_bound", "extract_expr", "cast_expr", "datetime_field", "datetime_field_plural", "duration_field", "array_expr", "array_index", "between_expr", "column_name", "literal", @@ -2652,7 +2652,7 @@ yydestruct (const char *yymsg, #line 2653 "bison_parser.cpp" break; - case YYSYMBOL_frame_clause: /* frame_clause */ + case YYSYMBOL_opt_frame_clause: /* opt_frame_clause */ #line 190 "bison_parser.y" { delete (((*yyvaluep).frame_description)); } #line 2659 "bison_parser.cpp" @@ -4749,9 +4749,9 @@ YYLTYPE yylloc = yyloc_default; #line 4750 "bison_parser.cpp" break; - case 220: /* opt_window: OVER '(' opt_partition opt_order frame_clause ')' */ + case 220: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ #line 995 "bison_parser.y" - { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } + { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } #line 4756 "bison_parser.cpp" break; @@ -4773,19 +4773,19 @@ YYLTYPE yylloc = yyloc_default; #line 4774 "bison_parser.cpp" break; - case 224: /* frame_clause: frame_type frame_bound */ + case 224: /* opt_frame_clause: frame_type frame_bound */ #line 1004 "bison_parser.y" - { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } + { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } #line 4780 "bison_parser.cpp" break; - case 225: /* frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ + case 225: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ #line 1005 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } #line 4786 "bison_parser.cpp" break; - case 226: /* frame_clause: %empty */ + case 226: /* opt_frame_clause: %empty */ #line 1006 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 6bd5a3fc..e11be2d2 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -240,7 +240,7 @@ %type table_name %type opt_index_name %type file_path prepare_target_query - %type frame_clause + %type opt_frame_clause %type frame_bound %type frame_type %type opt_window @@ -992,7 +992,7 @@ function_expr : IDENTIFIER '(' ')' opt_window { $$ = Expr::makeFunctionRef($1, n // Window function expressions, based on https://www.postgresql.org/docs/15/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS // We do not support named windows, collations and exclusions (for simplicity) and filters (not part of the SQL standard). -opt_window : OVER '(' opt_partition opt_order frame_clause ')' { $$ = new WindowDescription($3, $4, $5); } +opt_window : OVER '(' opt_partition opt_order opt_frame_clause ')' { $$ = new WindowDescription($3, $4, $5); } | /* empty */ { $$ = nullptr; }; opt_partition : PARTITION BY expr_list { $$ = $3; } @@ -1001,7 +1001,7 @@ opt_partition : PARTITION BY expr_list { $$ = $3; } // We use the Postgres default if the frame end or the whole frame clause is omitted. "If `frame_end` is omitted, the // end defaults to `CURRENT ROW`. [...] The default framing option is `RANGE UNBOUNDED PRECEDING`, which is the same as // `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`." -frame_clause : frame_type frame_bound { $$ = new FrameDescription{$1, $2, new FrameBound{0, kCurrentRow, false}}; } +opt_frame_clause : frame_type frame_bound { $$ = new FrameDescription{$1, $2, new FrameBound{0, kCurrentRow, false}}; } | frame_type BETWEEN frame_bound AND frame_bound { $$ = new FrameDescription{$1, $3, $5}; } | /* empty */ { $$ = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; From 3fdb20a7aa53a9d1e6d6589eff8937eb60c7eb06 Mon Sep 17 00:00:00 2001 From: dey4ss <27929897+dey4ss@users.noreply.github.com> Date: Thu, 8 Jun 2023 23:46:18 +0200 Subject: [PATCH 12/12] feedback --- src/parser/bison_parser.cpp | 222 ++++++++++++++++++------------------ src/parser/bison_parser.y | 2 + src/sql/Expr.cpp | 2 +- 3 files changed, 114 insertions(+), 112 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 5f5d4ce5..9b2a3964 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -885,19 +885,19 @@ static const yytype_int16 yyrline[] = 942, 944, 945, 946, 947, 948, 950, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 961, 962, 964, 965, 966, 967, 971, 972, 973, 974, 976, 977, 979, - 980, 982, 983, 984, 985, 986, 987, 988, 990, 991, - 995, 996, 998, 999, 1004, 1005, 1006, 1010, 1011, 1012, - 1014, 1015, 1016, 1017, 1018, 1020, 1022, 1024, 1025, 1026, - 1027, 1028, 1029, 1031, 1032, 1033, 1034, 1035, 1036, 1038, - 1038, 1040, 1042, 1044, 1046, 1047, 1048, 1049, 1051, 1051, - 1051, 1051, 1051, 1051, 1051, 1053, 1055, 1056, 1058, 1059, - 1061, 1063, 1065, 1076, 1080, 1091, 1123, 1132, 1132, 1139, - 1139, 1141, 1141, 1148, 1152, 1157, 1165, 1171, 1175, 1180, - 1181, 1183, 1183, 1185, 1185, 1187, 1188, 1190, 1190, 1196, - 1197, 1199, 1203, 1208, 1214, 1221, 1222, 1223, 1224, 1226, - 1227, 1228, 1234, 1234, 1236, 1238, 1242, 1247, 1257, 1264, - 1272, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, - 1305, 1307, 1313, 1313, 1316, 1320 + 980, 982, 983, 984, 985, 986, 987, 988, 992, 993, + 997, 998, 1000, 1001, 1006, 1007, 1008, 1012, 1013, 1014, + 1016, 1017, 1018, 1019, 1020, 1022, 1024, 1026, 1027, 1028, + 1029, 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038, 1040, + 1040, 1042, 1044, 1046, 1048, 1049, 1050, 1051, 1053, 1053, + 1053, 1053, 1053, 1053, 1053, 1055, 1057, 1058, 1060, 1061, + 1063, 1065, 1067, 1078, 1082, 1093, 1125, 1134, 1134, 1141, + 1141, 1143, 1143, 1150, 1154, 1159, 1167, 1173, 1177, 1182, + 1183, 1185, 1185, 1187, 1187, 1189, 1190, 1192, 1192, 1198, + 1199, 1201, 1205, 1210, 1216, 1223, 1224, 1225, 1226, 1228, + 1229, 1230, 1236, 1236, 1238, 1240, 1244, 1249, 1259, 1266, + 1274, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, + 1307, 1309, 1315, 1315, 1318, 1322 }; #endif @@ -4738,55 +4738,55 @@ YYLTYPE yylloc = yyloc_default; break; case 218: /* function_expr: IDENTIFIER '(' ')' opt_window */ -#line 990 "bison_parser.y" +#line 992 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-3].sval), new std::vector(), false, (yyvsp[0].window_description)); } #line 4744 "bison_parser.cpp" break; case 219: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' opt_window */ -#line 991 "bison_parser.y" +#line 993 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-5].sval), (yyvsp[-2].expr_vec), (yyvsp[-3].bval), (yyvsp[0].window_description)); } #line 4750 "bison_parser.cpp" break; case 220: /* opt_window: OVER '(' opt_partition opt_order opt_frame_clause ')' */ -#line 995 "bison_parser.y" +#line 997 "bison_parser.y" { (yyval.window_description) = new WindowDescription((yyvsp[-3].expr_vec), (yyvsp[-2].order_vec), (yyvsp[-1].frame_description)); } #line 4756 "bison_parser.cpp" break; case 221: /* opt_window: %empty */ -#line 996 "bison_parser.y" +#line 998 "bison_parser.y" { (yyval.window_description) = nullptr; } #line 4762 "bison_parser.cpp" break; case 222: /* opt_partition: PARTITION BY expr_list */ -#line 998 "bison_parser.y" +#line 1000 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } #line 4768 "bison_parser.cpp" break; case 223: /* opt_partition: %empty */ -#line 999 "bison_parser.y" +#line 1001 "bison_parser.y" { (yyval.expr_vec) = nullptr; } #line 4774 "bison_parser.cpp" break; case 224: /* opt_frame_clause: frame_type frame_bound */ -#line 1004 "bison_parser.y" +#line 1006 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-1].frame_type), (yyvsp[0].frame_bound), new FrameBound{0, kCurrentRow, false}}; } #line 4780 "bison_parser.cpp" break; case 225: /* opt_frame_clause: frame_type BETWEEN frame_bound AND frame_bound */ -#line 1005 "bison_parser.y" +#line 1007 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{(yyvsp[-4].frame_type), (yyvsp[-2].frame_bound), (yyvsp[0].frame_bound)}; } #line 4786 "bison_parser.cpp" break; case 226: /* opt_frame_clause: %empty */ -#line 1006 "bison_parser.y" +#line 1008 "bison_parser.y" { (yyval.frame_description) = new FrameDescription{kRange, new FrameBound{0, kPreceding, true}, new FrameBound{0, kCurrentRow, false}}; } @@ -4794,217 +4794,217 @@ YYLTYPE yylloc = yyloc_default; break; case 227: /* frame_type: RANGE */ -#line 1010 "bison_parser.y" +#line 1012 "bison_parser.y" { (yyval.frame_type) = kRange; } #line 4800 "bison_parser.cpp" break; case 228: /* frame_type: ROWS */ -#line 1011 "bison_parser.y" +#line 1013 "bison_parser.y" { (yyval.frame_type) = kRows; } #line 4806 "bison_parser.cpp" break; case 229: /* frame_type: GROUPS */ -#line 1012 "bison_parser.y" +#line 1014 "bison_parser.y" { (yyval.frame_type) = kGroups; } #line 4812 "bison_parser.cpp" break; case 230: /* frame_bound: UNBOUNDED PRECEDING */ -#line 1014 "bison_parser.y" +#line 1016 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kPreceding, true}; } #line 4818 "bison_parser.cpp" break; case 231: /* frame_bound: INTVAL PRECEDING */ -#line 1015 "bison_parser.y" +#line 1017 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kPreceding, false}; } #line 4824 "bison_parser.cpp" break; case 232: /* frame_bound: UNBOUNDED FOLLOWING */ -#line 1016 "bison_parser.y" +#line 1018 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kFollowing, true}; } #line 4830 "bison_parser.cpp" break; case 233: /* frame_bound: INTVAL FOLLOWING */ -#line 1017 "bison_parser.y" +#line 1019 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{(yyvsp[-1].ival), kFollowing, false}; } #line 4836 "bison_parser.cpp" break; case 234: /* frame_bound: CURRENT_ROW */ -#line 1018 "bison_parser.y" +#line 1020 "bison_parser.y" { (yyval.frame_bound) = new FrameBound{0, kCurrentRow, false}; } #line 4842 "bison_parser.cpp" break; case 235: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ -#line 1020 "bison_parser.y" +#line 1022 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } #line 4848 "bison_parser.cpp" break; case 236: /* cast_expr: CAST '(' expr AS column_type ')' */ -#line 1022 "bison_parser.y" +#line 1024 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } #line 4854 "bison_parser.cpp" break; case 237: /* datetime_field: SECOND */ -#line 1024 "bison_parser.y" +#line 1026 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } #line 4860 "bison_parser.cpp" break; case 238: /* datetime_field: MINUTE */ -#line 1025 "bison_parser.y" +#line 1027 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } #line 4866 "bison_parser.cpp" break; case 239: /* datetime_field: HOUR */ -#line 1026 "bison_parser.y" +#line 1028 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } #line 4872 "bison_parser.cpp" break; case 240: /* datetime_field: DAY */ -#line 1027 "bison_parser.y" +#line 1029 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } #line 4878 "bison_parser.cpp" break; case 241: /* datetime_field: MONTH */ -#line 1028 "bison_parser.y" +#line 1030 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } #line 4884 "bison_parser.cpp" break; case 242: /* datetime_field: YEAR */ -#line 1029 "bison_parser.y" +#line 1031 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } #line 4890 "bison_parser.cpp" break; case 243: /* datetime_field_plural: SECONDS */ -#line 1031 "bison_parser.y" +#line 1033 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } #line 4896 "bison_parser.cpp" break; case 244: /* datetime_field_plural: MINUTES */ -#line 1032 "bison_parser.y" +#line 1034 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } #line 4902 "bison_parser.cpp" break; case 245: /* datetime_field_plural: HOURS */ -#line 1033 "bison_parser.y" +#line 1035 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } #line 4908 "bison_parser.cpp" break; case 246: /* datetime_field_plural: DAYS */ -#line 1034 "bison_parser.y" +#line 1036 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } #line 4914 "bison_parser.cpp" break; case 247: /* datetime_field_plural: MONTHS */ -#line 1035 "bison_parser.y" +#line 1037 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } #line 4920 "bison_parser.cpp" break; case 248: /* datetime_field_plural: YEARS */ -#line 1036 "bison_parser.y" +#line 1038 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } #line 4926 "bison_parser.cpp" break; case 251: /* array_expr: ARRAY '[' expr_list ']' */ -#line 1040 "bison_parser.y" +#line 1042 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } #line 4932 "bison_parser.cpp" break; case 252: /* array_index: operand '[' int_literal ']' */ -#line 1042 "bison_parser.y" +#line 1044 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } #line 4938 "bison_parser.cpp" break; case 253: /* between_expr: operand BETWEEN operand AND operand */ -#line 1044 "bison_parser.y" +#line 1046 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } #line 4944 "bison_parser.cpp" break; case 254: /* column_name: IDENTIFIER */ -#line 1046 "bison_parser.y" +#line 1048 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } #line 4950 "bison_parser.cpp" break; case 255: /* column_name: IDENTIFIER '.' IDENTIFIER */ -#line 1047 "bison_parser.y" +#line 1049 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } #line 4956 "bison_parser.cpp" break; case 256: /* column_name: '*' */ -#line 1048 "bison_parser.y" +#line 1050 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } #line 4962 "bison_parser.cpp" break; case 257: /* column_name: IDENTIFIER '.' '*' */ -#line 1049 "bison_parser.y" +#line 1051 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } #line 4968 "bison_parser.cpp" break; case 265: /* string_literal: STRING */ -#line 1053 "bison_parser.y" +#line 1055 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } #line 4974 "bison_parser.cpp" break; case 266: /* bool_literal: TRUE */ -#line 1055 "bison_parser.y" +#line 1057 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } #line 4980 "bison_parser.cpp" break; case 267: /* bool_literal: FALSE */ -#line 1056 "bison_parser.y" +#line 1058 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } #line 4986 "bison_parser.cpp" break; case 268: /* num_literal: FLOATVAL */ -#line 1058 "bison_parser.y" +#line 1060 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } #line 4992 "bison_parser.cpp" break; case 270: /* int_literal: INTVAL */ -#line 1061 "bison_parser.y" +#line 1063 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } #line 4998 "bison_parser.cpp" break; case 271: /* null_literal: NULL */ -#line 1063 "bison_parser.y" +#line 1065 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } #line 5004 "bison_parser.cpp" break; case 272: /* date_literal: DATE STRING */ -#line 1065 "bison_parser.y" +#line 1067 "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 @@ -5019,7 +5019,7 @@ YYLTYPE yylloc = yyloc_default; break; case 273: /* interval_literal: int_literal duration_field */ -#line 1076 "bison_parser.y" +#line 1078 "bison_parser.y" { (yyval.expr) = Expr::makeIntervalLiteral((yyvsp[-1].expr)->ival, (yyvsp[0].datetime_field)); delete (yyvsp[-1].expr); @@ -5028,7 +5028,7 @@ YYLTYPE yylloc = yyloc_default; break; case 274: /* interval_literal: INTERVAL STRING datetime_field */ -#line 1080 "bison_parser.y" +#line 1082 "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 @@ -5044,7 +5044,7 @@ YYLTYPE yylloc = yyloc_default; break; case 275: /* interval_literal: INTERVAL STRING */ -#line 1091 "bison_parser.y" +#line 1093 "bison_parser.y" { int duration{0}, chars_parsed{0}; // 'seconds' and 'minutes' are the longest accepted interval qualifiers (7 chars) + null byte @@ -5080,7 +5080,7 @@ YYLTYPE yylloc = yyloc_default; break; case 276: /* param_expr: '?' */ -#line 1123 "bison_parser.y" +#line 1125 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); @@ -5090,7 +5090,7 @@ YYLTYPE yylloc = yyloc_default; break; case 278: /* table_ref: table_ref_commalist ',' table_ref_atomic */ -#line 1132 "bison_parser.y" +#line 1134 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); @@ -5101,7 +5101,7 @@ YYLTYPE yylloc = yyloc_default; break; case 282: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ -#line 1141 "bison_parser.y" +#line 1143 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); @@ -5112,7 +5112,7 @@ YYLTYPE yylloc = yyloc_default; break; case 283: /* table_ref_commalist: table_ref_atomic */ -#line 1148 "bison_parser.y" +#line 1150 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); @@ -5121,7 +5121,7 @@ YYLTYPE yylloc = yyloc_default; break; case 284: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ -#line 1152 "bison_parser.y" +#line 1154 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); @@ -5130,7 +5130,7 @@ YYLTYPE yylloc = yyloc_default; break; case 285: /* table_ref_name: table_name opt_table_alias */ -#line 1157 "bison_parser.y" +#line 1159 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -5142,7 +5142,7 @@ YYLTYPE yylloc = yyloc_default; break; case 286: /* table_ref_name_no_alias: table_name */ -#line 1165 "bison_parser.y" +#line 1167 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; @@ -5152,7 +5152,7 @@ YYLTYPE yylloc = yyloc_default; break; case 287: /* table_name: IDENTIFIER */ -#line 1171 "bison_parser.y" +#line 1173 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval); @@ -5161,7 +5161,7 @@ YYLTYPE yylloc = yyloc_default; break; case 288: /* table_name: IDENTIFIER '.' IDENTIFIER */ -#line 1175 "bison_parser.y" +#line 1177 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); @@ -5170,61 +5170,61 @@ YYLTYPE yylloc = yyloc_default; break; case 289: /* opt_index_name: IDENTIFIER */ -#line 1180 "bison_parser.y" +#line 1182 "bison_parser.y" { (yyval.sval) = (yyvsp[0].sval); } #line 5176 "bison_parser.cpp" break; case 290: /* opt_index_name: %empty */ -#line 1181 "bison_parser.y" +#line 1183 "bison_parser.y" { (yyval.sval) = nullptr; } #line 5182 "bison_parser.cpp" break; case 292: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ -#line 1183 "bison_parser.y" +#line 1185 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } #line 5188 "bison_parser.cpp" break; case 294: /* opt_table_alias: %empty */ -#line 1185 "bison_parser.y" +#line 1187 "bison_parser.y" { (yyval.alias_t) = nullptr; } #line 5194 "bison_parser.cpp" break; case 295: /* alias: AS IDENTIFIER */ -#line 1187 "bison_parser.y" +#line 1189 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } #line 5200 "bison_parser.cpp" break; case 296: /* alias: IDENTIFIER */ -#line 1188 "bison_parser.y" +#line 1190 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } #line 5206 "bison_parser.cpp" break; case 298: /* opt_alias: %empty */ -#line 1190 "bison_parser.y" +#line 1192 "bison_parser.y" { (yyval.alias_t) = nullptr; } #line 5212 "bison_parser.cpp" break; case 299: /* opt_locking_clause: opt_locking_clause_list */ -#line 1196 "bison_parser.y" +#line 1198 "bison_parser.y" { (yyval.locking_clause_vec) = (yyvsp[0].locking_clause_vec); } #line 5218 "bison_parser.cpp" break; case 300: /* opt_locking_clause: %empty */ -#line 1197 "bison_parser.y" +#line 1199 "bison_parser.y" { (yyval.locking_clause_vec) = nullptr; } #line 5224 "bison_parser.cpp" break; case 301: /* opt_locking_clause_list: locking_clause */ -#line 1199 "bison_parser.y" +#line 1201 "bison_parser.y" { (yyval.locking_clause_vec) = new std::vector(); (yyval.locking_clause_vec)->push_back((yyvsp[0].locking_t)); @@ -5233,7 +5233,7 @@ YYLTYPE yylloc = yyloc_default; break; case 302: /* opt_locking_clause_list: opt_locking_clause_list locking_clause */ -#line 1203 "bison_parser.y" +#line 1205 "bison_parser.y" { (yyvsp[-1].locking_clause_vec)->push_back((yyvsp[0].locking_t)); (yyval.locking_clause_vec) = (yyvsp[-1].locking_clause_vec); @@ -5242,7 +5242,7 @@ YYLTYPE yylloc = yyloc_default; break; case 303: /* locking_clause: FOR row_lock_mode opt_row_lock_policy */ -#line 1208 "bison_parser.y" +#line 1210 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-1].lock_mode_t); @@ -5253,7 +5253,7 @@ YYLTYPE yylloc = yyloc_default; break; case 304: /* locking_clause: FOR row_lock_mode OF ident_commalist opt_row_lock_policy */ -#line 1214 "bison_parser.y" +#line 1216 "bison_parser.y" { (yyval.locking_t) = new LockingClause(); (yyval.locking_t)->rowLockMode = (yyvsp[-3].lock_mode_t); @@ -5264,61 +5264,61 @@ YYLTYPE yylloc = yyloc_default; break; case 305: /* row_lock_mode: UPDATE */ -#line 1221 "bison_parser.y" +#line 1223 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForUpdate; } #line 5270 "bison_parser.cpp" break; case 306: /* row_lock_mode: NO KEY UPDATE */ -#line 1222 "bison_parser.y" +#line 1224 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForNoKeyUpdate; } #line 5276 "bison_parser.cpp" break; case 307: /* row_lock_mode: SHARE */ -#line 1223 "bison_parser.y" +#line 1225 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForShare; } #line 5282 "bison_parser.cpp" break; case 308: /* row_lock_mode: KEY SHARE */ -#line 1224 "bison_parser.y" +#line 1226 "bison_parser.y" { (yyval.lock_mode_t) = RowLockMode::ForKeyShare; } #line 5288 "bison_parser.cpp" break; case 309: /* opt_row_lock_policy: SKIP LOCKED */ -#line 1226 "bison_parser.y" +#line 1228 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::SkipLocked; } #line 5294 "bison_parser.cpp" break; case 310: /* opt_row_lock_policy: NOWAIT */ -#line 1227 "bison_parser.y" +#line 1229 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::NoWait; } #line 5300 "bison_parser.cpp" break; case 311: /* opt_row_lock_policy: %empty */ -#line 1228 "bison_parser.y" +#line 1230 "bison_parser.y" { (yyval.lock_wait_policy_t) = RowLockWaitPolicy::None; } #line 5306 "bison_parser.cpp" break; case 313: /* opt_with_clause: %empty */ -#line 1234 "bison_parser.y" +#line 1236 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } #line 5312 "bison_parser.cpp" break; case 314: /* with_clause: WITH with_description_list */ -#line 1236 "bison_parser.y" +#line 1238 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } #line 5318 "bison_parser.cpp" break; case 315: /* with_description_list: with_description */ -#line 1238 "bison_parser.y" +#line 1240 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); @@ -5327,7 +5327,7 @@ YYLTYPE yylloc = yyloc_default; break; case 316: /* with_description_list: with_description_list ',' with_description */ -#line 1242 "bison_parser.y" +#line 1244 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); @@ -5336,7 +5336,7 @@ YYLTYPE yylloc = yyloc_default; break; case 317: /* with_description: IDENTIFIER AS select_with_paren */ -#line 1247 "bison_parser.y" +#line 1249 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); @@ -5346,7 +5346,7 @@ YYLTYPE yylloc = yyloc_default; break; case 318: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ -#line 1257 "bison_parser.y" +#line 1259 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5358,7 +5358,7 @@ YYLTYPE yylloc = yyloc_default; break; case 319: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ -#line 1264 "bison_parser.y" +#line 1266 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5371,7 +5371,7 @@ YYLTYPE yylloc = yyloc_default; break; case 320: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ -#line 1272 "bison_parser.y" +#line 1274 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -5399,67 +5399,67 @@ YYLTYPE yylloc = yyloc_default; break; case 321: /* opt_join_type: INNER */ -#line 1296 "bison_parser.y" +#line 1298 "bison_parser.y" { (yyval.join_type) = kJoinInner; } #line 5405 "bison_parser.cpp" break; case 322: /* opt_join_type: LEFT OUTER */ -#line 1297 "bison_parser.y" +#line 1299 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } #line 5411 "bison_parser.cpp" break; case 323: /* opt_join_type: LEFT */ -#line 1298 "bison_parser.y" +#line 1300 "bison_parser.y" { (yyval.join_type) = kJoinLeft; } #line 5417 "bison_parser.cpp" break; case 324: /* opt_join_type: RIGHT OUTER */ -#line 1299 "bison_parser.y" +#line 1301 "bison_parser.y" { (yyval.join_type) = kJoinRight; } #line 5423 "bison_parser.cpp" break; case 325: /* opt_join_type: RIGHT */ -#line 1300 "bison_parser.y" +#line 1302 "bison_parser.y" { (yyval.join_type) = kJoinRight; } #line 5429 "bison_parser.cpp" break; case 326: /* opt_join_type: FULL OUTER */ -#line 1301 "bison_parser.y" +#line 1303 "bison_parser.y" { (yyval.join_type) = kJoinFull; } #line 5435 "bison_parser.cpp" break; case 327: /* opt_join_type: OUTER */ -#line 1302 "bison_parser.y" +#line 1304 "bison_parser.y" { (yyval.join_type) = kJoinFull; } #line 5441 "bison_parser.cpp" break; case 328: /* opt_join_type: FULL */ -#line 1303 "bison_parser.y" +#line 1305 "bison_parser.y" { (yyval.join_type) = kJoinFull; } #line 5447 "bison_parser.cpp" break; case 329: /* opt_join_type: CROSS */ -#line 1304 "bison_parser.y" +#line 1306 "bison_parser.y" { (yyval.join_type) = kJoinCross; } #line 5453 "bison_parser.cpp" break; case 330: /* opt_join_type: %empty */ -#line 1305 "bison_parser.y" +#line 1307 "bison_parser.y" { (yyval.join_type) = kJoinInner; } #line 5459 "bison_parser.cpp" break; case 334: /* ident_commalist: IDENTIFIER */ -#line 1316 "bison_parser.y" +#line 1318 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); @@ -5468,7 +5468,7 @@ YYLTYPE yylloc = yyloc_default; break; case 335: /* ident_commalist: ident_commalist ',' IDENTIFIER */ -#line 1320 "bison_parser.y" +#line 1322 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); @@ -5706,7 +5706,7 @@ YYLTYPE yylloc = yyloc_default; return yyresult; } -#line 1326 "bison_parser.y" +#line 1328 "bison_parser.y" // clang-format on /********************************* diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index e11be2d2..e579a355 100644 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -987,6 +987,8 @@ comp_expr : operand '=' operand { $$ = Expr::makeOpBinary($1, kOpEquals, $3); } | operand LESSEQ operand { $$ = Expr::makeOpBinary($1, kOpLessEq, $3); } | operand GREATEREQ operand { $$ = Expr::makeOpBinary($1, kOpGreaterEq, $3); }; +// `function_expr is used for window functions, aggregate expressions, and functions calls because we run into shift/ +// reduce conflicts when splitting them. function_expr : IDENTIFIER '(' ')' opt_window { $$ = Expr::makeFunctionRef($1, new std::vector(), false, $4); } | IDENTIFIER '(' opt_distinct expr_list ')' opt_window { $$ = Expr::makeFunctionRef($1, $4, $3, $6); }; diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index ff838cac..7b788f99 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -18,7 +18,7 @@ FrameDescription::~FrameDescription() { WindowDescription::WindowDescription(std::vector* partitionList, std::vector* orderList, FrameDescription* frameDescription) - : partitionList{partitionList}, orderList{orderList}, frameDescription(frameDescription) {} + : partitionList{partitionList}, orderList{orderList}, frameDescription{frameDescription} {} WindowDescription::~WindowDescription() { if (partitionList) {