From e3cfc8097546aa9e3d5fb982533594f18ecfdcb9 Mon Sep 17 00:00:00 2001 From: Daniel Lindner <27929897+dey4ss@users.noreply.github.com> Date: Wed, 8 Jan 2020 16:21:02 +0100 Subject: [PATCH] Add COPY for import and export (#139) --- src/parser/bison_parser.cpp | 3081 +++++++++++++++++---------------- src/parser/bison_parser.h | 163 +- src/parser/bison_parser.y | 87 +- src/parser/flex_lexer.cpp | 2236 ++++++++++++------------ src/parser/flex_lexer.h | 6 +- src/parser/flex_lexer.l | 8 +- src/parser/sql_keywords.txt | 5 +- src/sql/ExportStatement.h | 22 + src/sql/ImportStatement.h | 2 + src/sql/statements.cpp | 14 + src/sql/statements.h | 1 + src/util/sqlhelper.cpp | 37 + src/util/sqlhelper.h | 3 + test/queries/queries-bad.sql | 6 +- test/queries/queries-good.sql | 11 + test/sql_tests.cpp | 39 + test/test.sh | 2 +- 17 files changed, 3005 insertions(+), 2718 deletions(-) create mode 100755 src/sql/ExportStatement.h diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 4ff2751..1ee2625 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.3.2" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -74,7 +74,7 @@ /* First part of user prologue. */ -#line 1 "bison_parser.y" /* yacc.c:337 */ +#line 1 "bison_parser.y" /** * bison_parser.y @@ -103,7 +103,8 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha } -#line 107 "bison_parser.cpp" /* yacc.c:337 */ +#line 107 "bison_parser.cpp" + # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -124,8 +125,8 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha # define YYERROR_VERBOSE 1 #endif -/* In a future release of Bison, this section will be replaced - by #include "bison_parser.h". */ +/* Use api.header.include to #include this header + instead of duplicating it here. */ #ifndef YY_HSQL_BISON_PARSER_H_INCLUDED # define YY_HSQL_BISON_PARSER_H_INCLUDED /* Debug traces. */ @@ -144,7 +145,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 35 "bison_parser.y" /* yacc.c:352 */ +#line 35 "bison_parser.y" // %code requires block @@ -168,7 +169,7 @@ extern int hsql_debug; } \ } -#line 172 "bison_parser.cpp" /* yacc.c:352 */ +#line 173 "bison_parser.cpp" /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -215,80 +216,80 @@ extern int hsql_debug; SQL_EXCEPT = 295, SQL_EXISTS = 296, SQL_EXTRACT = 297, - SQL_GLOBAL = 298, - SQL_HAVING = 299, - SQL_IMPORT = 300, - SQL_INSERT = 301, - SQL_ISNULL = 302, - SQL_OFFSET = 303, - SQL_RENAME = 304, - SQL_SCHEMA = 305, - SQL_SELECT = 306, - SQL_SORTED = 307, - SQL_TABLES = 308, - SQL_UNIQUE = 309, - SQL_UNLOAD = 310, - SQL_UPDATE = 311, - SQL_VALUES = 312, - SQL_AFTER = 313, - SQL_ALTER = 314, - SQL_CROSS = 315, - SQL_DELTA = 316, - SQL_FLOAT = 317, - SQL_GROUP = 318, - SQL_INDEX = 319, - SQL_INNER = 320, - SQL_LIMIT = 321, - SQL_LOCAL = 322, - SQL_MERGE = 323, - SQL_MINUS = 324, - SQL_ORDER = 325, - SQL_OUTER = 326, - SQL_RIGHT = 327, - SQL_TABLE = 328, - SQL_UNION = 329, - SQL_USING = 330, - SQL_WHERE = 331, - SQL_CALL = 332, - SQL_CASE = 333, - SQL_CHAR = 334, - SQL_DATE = 335, - SQL_DESC = 336, - SQL_DROP = 337, - SQL_ELSE = 338, - SQL_FILE = 339, - SQL_FROM = 340, - SQL_FULL = 341, - SQL_HASH = 342, - SQL_HINT = 343, - SQL_INTO = 344, - SQL_JOIN = 345, - SQL_LEFT = 346, - SQL_LIKE = 347, - SQL_LOAD = 348, - SQL_LONG = 349, - SQL_NULL = 350, - SQL_PLAN = 351, - SQL_SHOW = 352, - SQL_TEXT = 353, - SQL_THEN = 354, - SQL_TIME = 355, - SQL_VIEW = 356, - SQL_WHEN = 357, - SQL_WITH = 358, - SQL_ADD = 359, - SQL_ALL = 360, - SQL_AND = 361, - SQL_ASC = 362, - SQL_CSV = 363, - SQL_END = 364, - SQL_FOR = 365, - SQL_INT = 366, - SQL_KEY = 367, - SQL_NOT = 368, - SQL_OFF = 369, - SQL_SET = 370, - SQL_TBL = 371, + SQL_FORMAT = 298, + SQL_GLOBAL = 299, + SQL_HAVING = 300, + SQL_IMPORT = 301, + SQL_INSERT = 302, + SQL_ISNULL = 303, + SQL_OFFSET = 304, + SQL_RENAME = 305, + SQL_SCHEMA = 306, + SQL_SELECT = 307, + SQL_SORTED = 308, + SQL_TABLES = 309, + SQL_UNIQUE = 310, + SQL_UNLOAD = 311, + SQL_UPDATE = 312, + SQL_VALUES = 313, + SQL_AFTER = 314, + SQL_ALTER = 315, + SQL_CROSS = 316, + SQL_DELTA = 317, + SQL_FLOAT = 318, + SQL_GROUP = 319, + SQL_INDEX = 320, + SQL_INNER = 321, + SQL_LIMIT = 322, + SQL_LOCAL = 323, + SQL_MERGE = 324, + SQL_MINUS = 325, + SQL_ORDER = 326, + SQL_OUTER = 327, + SQL_RIGHT = 328, + SQL_TABLE = 329, + SQL_UNION = 330, + SQL_USING = 331, + SQL_WHERE = 332, + SQL_CALL = 333, + SQL_CASE = 334, + SQL_CHAR = 335, + SQL_COPY = 336, + SQL_DATE = 337, + SQL_DESC = 338, + SQL_DROP = 339, + SQL_ELSE = 340, + SQL_FILE = 341, + SQL_FROM = 342, + SQL_FULL = 343, + SQL_HASH = 344, + SQL_HINT = 345, + SQL_INTO = 346, + SQL_JOIN = 347, + SQL_LEFT = 348, + SQL_LIKE = 349, + SQL_LOAD = 350, + SQL_LONG = 351, + SQL_NULL = 352, + SQL_PLAN = 353, + SQL_SHOW = 354, + SQL_TEXT = 355, + SQL_THEN = 356, + SQL_TIME = 357, + SQL_VIEW = 358, + SQL_WHEN = 359, + SQL_WITH = 360, + SQL_ADD = 361, + SQL_ALL = 362, + SQL_AND = 363, + SQL_ASC = 364, + SQL_END = 365, + SQL_FOR = 366, + SQL_INT = 367, + SQL_KEY = 368, + SQL_NOT = 369, + SQL_OFF = 370, + SQL_SET = 371, SQL_TOP = 372, SQL_AS = 373, SQL_BY = 374, @@ -323,10 +324,9 @@ extern int hsql_debug; /* Value type. */ #if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED - union HSQL_STYPE { -#line 95 "bison_parser.y" /* yacc.c:352 */ +#line 95 "bison_parser.y" double fval; int64_t ival; @@ -337,6 +337,7 @@ union HSQL_STYPE hsql::SQLStatement* statement; hsql::SelectStatement* select_stmt; hsql::ImportStatement* import_stmt; + hsql::ExportStatement* export_stmt; hsql::CreateStatement* create_stmt; hsql::InsertStatement* insert_stmt; hsql::DeleteStatement* delete_stmt; @@ -356,6 +357,7 @@ union HSQL_STYPE hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::ColumnType column_type_t; + hsql::ImportType import_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -370,9 +372,9 @@ union HSQL_STYPE std::vector* order_vec; std::vector* with_description_vec; -#line 374 "bison_parser.cpp" /* yacc.c:352 */ -}; +#line 376 "bison_parser.cpp" +}; typedef union HSQL_STYPE HSQL_STYPE; # define HSQL_STYPE_IS_TRIVIAL 1 # define HSQL_STYPE_IS_DECLARED 1 @@ -500,6 +502,8 @@ typedef short yytype_int16; #endif +#define YY_ASSERT(E) ((void) (0 && (E))) + #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -631,18 +635,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 51 +#define YYFINAL 54 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 762 +#define YYLAST 731 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 163 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 100 +#define YYNNTS 102 /* YYNRULES -- Number of rules. */ -#define YYNRULES 245 +#define YYNRULES 250 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 442 +#define YYNSTATES 454 #define YYUNDEFTOK 2 #define YYMAXUTOK 400 @@ -703,31 +707,32 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 258, 258, 279, 285, 294, 298, 302, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 326, 327, 332, - 333, 337, 341, 353, 360, 363, 367, 379, 388, 392, - 402, 405, 410, 424, 431, 438, 445, 456, 457, 461, - 462, 466, 472, 473, 474, 475, 476, 477, 478, 479, - 483, 484, 485, 495, 501, 507, 515, 516, 525, 534, - 547, 554, 565, 566, 576, 585, 586, 590, 602, 606, - 610, 628, 629, 633, 634, 638, 648, 665, 669, 670, - 671, 675, 676, 680, 692, 693, 697, 701, 702, 705, - 710, 711, 715, 720, 724, 725, 728, 729, 733, 734, - 738, 742, 743, 744, 750, 751, 755, 756, 757, 758, - 759, 760, 767, 768, 772, 773, 777, 778, 782, 792, - 793, 794, 795, 796, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 813, 814, 818, 819, 820, 821, - 822, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 840, 841, 845, 846, 847, 848, 854, 855, - 856, 857, 861, 862, 866, 867, 871, 872, 873, 874, - 875, 876, 877, 881, 882, 886, 890, 891, 892, 893, - 894, 895, 898, 902, 906, 910, 911, 912, 913, 917, - 918, 919, 920, 921, 925, 929, 930, 934, 935, 939, - 943, 947, 959, 960, 970, 971, 975, 976, 985, 986, - 991, 1002, 1011, 1012, 1017, 1018, 1023, 1024, 1028, 1029, - 1034, 1035, 1043, 1044, 1048, 1052, 1056, 1063, 1076, 1084, - 1094, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, - 1122, 1127, 1136, 1137, 1142, 1143 + 0, 264, 264, 285, 291, 300, 304, 308, 311, 314, + 321, 322, 323, 324, 325, 326, 327, 328, 337, 338, + 343, 344, 348, 352, 364, 371, 374, 378, 392, 398, + 407, 424, 428, 431, 440, 454, 457, 462, 476, 489, + 496, 503, 514, 515, 519, 520, 524, 530, 531, 532, + 533, 534, 535, 536, 537, 541, 542, 543, 553, 559, + 565, 573, 574, 583, 592, 605, 612, 623, 624, 634, + 643, 644, 648, 660, 664, 668, 686, 687, 691, 692, + 696, 706, 723, 727, 728, 729, 733, 734, 738, 750, + 751, 755, 759, 760, 764, 769, 770, 774, 779, 783, + 784, 788, 789, 793, 794, 798, 802, 803, 804, 810, + 811, 815, 816, 817, 818, 819, 820, 827, 828, 832, + 833, 837, 838, 842, 852, 853, 854, 855, 856, 860, + 861, 862, 863, 864, 865, 866, 867, 868, 869, 873, + 874, 878, 879, 880, 881, 882, 886, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 896, 900, 901, 905, + 906, 907, 908, 914, 915, 916, 917, 921, 922, 926, + 927, 931, 932, 933, 934, 935, 936, 937, 941, 942, + 946, 950, 951, 952, 953, 954, 955, 959, 963, 967, + 971, 972, 973, 974, 978, 979, 980, 981, 982, 986, + 990, 991, 995, 996, 1000, 1004, 1008, 1020, 1021, 1031, + 1032, 1036, 1037, 1046, 1047, 1052, 1063, 1072, 1073, 1078, + 1079, 1084, 1085, 1090, 1091, 1096, 1097, 1106, 1107, 1111, + 1115, 1119, 1126, 1139, 1147, 1157, 1176, 1177, 1178, 1179, + 1180, 1181, 1182, 1183, 1184, 1185, 1190, 1199, 1200, 1205, + 1206 }; #endif @@ -743,43 +748,43 @@ static const char *const yytname[] = "EXPLAIN", "INTEGER", "NATURAL", "PREPARE", "PRIMARY", "SCHEMAS", "SPATIAL", "VARCHAR", "VIRTUAL", "DESCRIBE", "BEFORE", "COLUMN", "CREATE", "DELETE", "DIRECT", "DOUBLE", "ESCAPE", "EXCEPT", "EXISTS", - "EXTRACT", "GLOBAL", "HAVING", "IMPORT", "INSERT", "ISNULL", "OFFSET", - "RENAME", "SCHEMA", "SELECT", "SORTED", "TABLES", "UNIQUE", "UNLOAD", - "UPDATE", "VALUES", "AFTER", "ALTER", "CROSS", "DELTA", "FLOAT", "GROUP", - "INDEX", "INNER", "LIMIT", "LOCAL", "MERGE", "MINUS", "ORDER", "OUTER", - "RIGHT", "TABLE", "UNION", "USING", "WHERE", "CALL", "CASE", "CHAR", - "DATE", "DESC", "DROP", "ELSE", "FILE", "FROM", "FULL", "HASH", "HINT", - "INTO", "JOIN", "LEFT", "LIKE", "LOAD", "LONG", "NULL", "PLAN", "SHOW", - "TEXT", "THEN", "TIME", "VIEW", "WHEN", "WITH", "ADD", "ALL", "AND", - "ASC", "CSV", "END", "FOR", "INT", "KEY", "NOT", "OFF", "SET", "TBL", - "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", "OR", "TO", "ARRAY", - "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", "YEAR", - "TRUE", "FALSE", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", - "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", - "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", - "'?'", "$accept", "input", "statement_list", "statement", + "EXTRACT", "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", "DESC", "DROP", "ELSE", "FILE", "FROM", + "FULL", "HASH", "HINT", "INTO", "JOIN", "LEFT", "LIKE", "LOAD", "LONG", + "NULL", "PLAN", "SHOW", "TEXT", "THEN", "TIME", "VIEW", "WHEN", "WITH", + "ADD", "ALL", "AND", "ASC", "END", "FOR", "INT", "KEY", "NOT", "OFF", + "SET", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", "OR", "TO", + "ARRAY", "CONCAT", "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", + "YEAR", "TRUE", "FALSE", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", + "LESS", "GREATER", "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", + "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", + "','", "'?'", "$accept", "input", "statement_list", "statement", "preparable_statement", "opt_hints", "hint_list", "hint", "prepare_statement", "prepare_target_query", "execute_statement", - "import_statement", "import_file_type", "file_path", "show_statement", - "create_statement", "opt_not_exists", "column_def_commalist", - "column_def", "column_type", "opt_column_nullable", "drop_statement", - "opt_exists", "delete_statement", "truncate_statement", - "insert_statement", "opt_column_list", "update_statement", - "update_clause_commalist", "update_clause", "select_statement", - "select_with_paren", "select_paren_or_clause", "select_no_paren", - "set_operator", "set_type", "opt_all", "select_clause", "opt_distinct", - "select_list", "opt_from_clause", "from_clause", "opt_where", - "opt_group", "opt_having", "opt_order", "order_list", "order_desc", - "opt_order_type", "opt_top", "opt_limit", "expr_list", - "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", "datetime_field", "array_expr", "array_index", - "between_expr", "column_name", "literal", "string_literal", - "bool_literal", "num_literal", "int_literal", "null_literal", - "param_expr", "table_ref", "table_ref_atomic", - "nonjoin_table_ref_atomic", "table_ref_commalist", "table_ref_name", - "table_ref_name_no_alias", "table_name", "table_alias", + "import_statement", "file_type", "file_path", "opt_file_type", + "export_statement", "show_statement", "create_statement", + "opt_not_exists", "column_def_commalist", "column_def", "column_type", + "opt_column_nullable", "drop_statement", "opt_exists", + "delete_statement", "truncate_statement", "insert_statement", + "opt_column_list", "update_statement", "update_clause_commalist", + "update_clause", "select_statement", "select_with_paren", + "select_paren_or_clause", "select_no_paren", "set_operator", "set_type", + "opt_all", "select_clause", "opt_distinct", "select_list", + "opt_from_clause", "from_clause", "opt_where", "opt_group", "opt_having", + "opt_order", "order_list", "order_desc", "opt_order_type", "opt_top", + "opt_limit", "expr_list", "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", + "datetime_field", "array_expr", "array_index", "between_expr", + "column_name", "literal", "string_literal", "bool_literal", + "num_literal", "int_literal", "null_literal", "param_expr", "table_ref", + "table_ref_atomic", "nonjoin_table_ref_atomic", "table_ref_commalist", + "table_ref_name", "table_ref_name_no_alias", "table_name", "table_alias", "opt_table_alias", "alias", "opt_alias", "opt_with_clause", "with_clause", "with_description_list", "with_description", "join_clause", "opt_join_type", "join_condition", "opt_semicolon", @@ -812,65 +817,66 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -330 +#define YYPACT_NINF -278 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-330))) + (!!((Yystate) == (-278))) -#define YYTABLE_NINF -243 +#define YYTABLE_NINF -248 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-243))) + (!!((Yytable_value) == (-248))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 659, 24, 68, 69, 99, 68, -35, 25, 26, 58, - 68, -15, 3, 100, 152, 0, -330, 56, 56, -330, - -330, -330, -330, -330, -330, -330, -330, -330, -330, -20, - -330, 158, 10, -330, 20, 101, -330, 65, 65, 68, - 83, 68, 77, -330, 89, 89, 68, -330, 86, 57, - -330, -330, 641, -330, 117, -330, -330, 102, -20, 19, - -330, 11, -330, 222, 9, 227, 113, 68, 68, 159, - -330, 177, 97, 265, 237, 68, 68, -330, 122, 100, - -330, 123, 278, 288, 147, 151, -330, -330, -330, -20, - 205, 203, -20, 28, -330, -330, -330, -330, -330, -330, - -330, -330, 166, 167, -330, -330, -330, -330, -330, -330, - -330, -330, -330, 301, -56, 97, 234, -330, 340, 347, - -11, 215, -66, -330, -330, -330, -330, -330, -330, 353, - -330, -330, 234, -330, -330, -330, 289, -330, -330, -330, - 234, 289, 234, 137, -330, -330, 9, -330, 241, 255, - 359, 242, 84, 206, 207, 170, 298, 210, 331, -330, - 218, -70, 357, -330, -330, -330, -330, -330, -330, -330, - -330, -330, -330, -330, -330, -330, -330, -330, 280, -330, - -330, 109, 220, -330, 234, 265, -330, 221, 130, -330, - 294, 211, -330, 64, 28, 225, -330, -46, 28, -70, - 334, -16, -330, 303, -330, 287, 132, -330, 255, 7, - 8, 337, 282, 234, 128, 118, 232, 331, 442, 234, - 44, 236, -83, 234, 234, 331, -330, 331, -58, 233, - 55, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 278, 68, -330, 389, - 9, -70, -330, 9, -330, 353, 5, 159, -330, 234, - -330, 392, -330, -330, -330, 234, -330, -330, -330, -330, - 234, 234, 340, -330, 240, -330, -330, 243, -330, -330, - -330, 85, -330, 359, -330, -330, 234, -330, -330, 244, - -330, -330, -330, -330, -330, -330, 314, -10, 127, 234, - 234, -330, 337, 309, -17, -330, -330, -330, 297, 398, - 474, 331, 248, 218, -330, 311, 252, 474, 474, 474, - 474, 509, 509, 509, 509, 44, 44, 53, 53, 53, - -75, 254, -330, -330, 160, 165, -330, 255, -330, 27, - -330, 247, -330, 18, -330, 355, -330, -330, -330, -70, - -70, -330, 413, 414, -330, 326, -330, -330, 172, -330, - 234, 234, 234, -330, 146, 13, 264, -330, 331, 474, - 218, 266, 180, -330, -330, -330, -330, 269, 333, -330, - -330, -330, 358, 360, 361, 338, 5, 427, -330, -330, - -330, 317, -330, 275, 279, -330, -330, -76, -70, 183, - -330, 234, -330, 442, 281, 185, -330, -330, 18, 5, - -330, -330, -330, 5, 191, 283, 234, -330, -330, -330, - -330, -70, -330, -330, -330, -330, 142, 347, -26, 284, - 234, 190, 234, -330, 14, -70, -330, -330, -70, 291, - 285, -330 + 626, 100, 116, 125, 164, 116, -42, 47, 77, 97, + 116, 116, 49, 30, 180, 199, 57, -278, 102, 102, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -24, -278, 218, 76, -278, 79, 163, -278, 128, + 128, 116, 255, 116, 144, -278, -18, 153, 153, 116, + -278, 160, 101, -278, -278, 603, -278, 196, -278, -278, + 191, -24, 25, -278, 66, -278, 307, 14, 312, 204, + 116, 116, 251, -278, 247, 182, 340, 341, 341, 303, + 116, 116, -278, 200, 180, -278, 203, 342, 344, 195, + 205, -278, -278, -278, -24, 254, 235, -24, -13, -278, + -278, -278, -278, -278, -278, -278, -278, 208, 207, -278, + -278, -278, -278, -278, -278, -278, -278, -278, 329, -52, + 182, 228, -278, 341, 370, -8, 236, -44, -278, 270, + -278, 270, -278, -278, -278, -278, -278, 373, -278, -278, + 228, -278, -278, -278, 310, -278, -278, -278, 228, 310, + 228, 35, -278, -278, 14, -278, 377, 277, 383, 271, + -39, 240, 242, 140, 290, 245, 309, -278, 222, 93, + 335, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, 311, -278, -4, 246, + -278, 228, 340, -278, 358, -278, -278, 248, 114, -278, + 320, 249, -278, 22, -13, 250, -278, 131, -13, 93, + 359, -1, -278, 323, -278, 149, 130, -278, 277, 11, + 6, 360, 261, 228, 179, 92, 256, 309, 424, 228, + 129, 257, 45, 228, 228, 309, -278, 309, -41, 259, + 133, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 342, 116, -278, 411, + 14, 93, -278, 255, 14, -278, 373, 8, 251, -278, + 228, -278, 415, -278, -278, -278, 228, -278, -278, -278, + -278, 228, 228, 341, -278, 262, -278, -278, 263, -278, + -278, -278, 171, -278, 383, -278, -278, 228, -278, -278, + 264, -278, -278, -278, -278, -278, -278, 334, 85, 161, + 228, 228, -278, 360, 330, -104, -278, -278, -278, 317, + 384, 456, 309, 273, 222, -278, 331, 276, 456, 456, + 456, 456, 471, 471, 471, 471, 129, 129, -91, -91, + -91, -97, 278, -278, -278, 142, -278, 148, -278, 277, + -278, 43, -278, 272, -278, 21, -278, 371, -278, -278, + -278, 93, 93, -278, 431, 432, -278, 345, -278, -278, + 159, -278, 228, 228, 228, -278, 70, 197, 283, -278, + 309, 456, 222, 285, 168, -278, -278, -278, -278, 286, + 356, -278, -278, -278, 378, 379, 381, 362, 8, 452, + -278, -278, -278, 343, -278, 302, 321, -278, -278, 83, + 93, 90, -278, 228, -278, 424, 324, 169, -278, -278, + 21, 8, -278, -278, -278, 8, 150, 304, 228, -278, + -278, -278, -278, 93, -278, -278, -278, -278, 274, 370, + -23, 308, 228, 176, 228, -278, 18, 93, -278, -278, + 93, 332, 336, -278 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -878,81 +884,84 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 243, 3, 18, 18, 16, - 9, 7, 10, 15, 12, 13, 11, 14, 8, 0, - 222, 0, 212, 59, 25, 0, 32, 38, 38, 0, - 0, 0, 0, 211, 57, 57, 0, 30, 0, 224, - 225, 1, 223, 2, 0, 6, 5, 105, 0, 68, - 69, 97, 55, 0, 115, 0, 0, 0, 0, 91, - 28, 0, 63, 0, 0, 0, 0, 31, 0, 0, - 4, 0, 0, 85, 0, 0, 79, 80, 78, 0, - 82, 0, 0, 111, 213, 194, 197, 199, 200, 195, - 196, 201, 0, 114, 116, 189, 190, 191, 198, 192, - 193, 24, 23, 0, 0, 63, 0, 58, 0, 0, - 0, 0, 91, 65, 56, 53, 54, 227, 226, 0, - 104, 84, 0, 72, 71, 73, 97, 74, 81, 77, - 0, 97, 0, 0, 75, 26, 0, 37, 0, 223, - 0, 0, 185, 0, 0, 0, 0, 0, 0, 187, - 0, 90, 119, 126, 127, 128, 121, 123, 129, 122, - 141, 130, 131, 132, 125, 120, 134, 135, 0, 29, - 244, 0, 0, 61, 0, 0, 64, 21, 0, 19, - 88, 86, 112, 221, 111, 96, 98, 103, 111, 107, - 109, 106, 117, 0, 35, 0, 0, 39, 223, 85, - 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, - 136, 0, 0, 0, 0, 0, 138, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 3, 19, 19, + 17, 8, 9, 7, 11, 16, 13, 14, 12, 15, + 10, 0, 227, 0, 217, 64, 26, 0, 37, 43, + 43, 0, 0, 0, 0, 216, 0, 62, 62, 0, + 35, 0, 229, 230, 1, 228, 2, 0, 6, 5, + 110, 0, 73, 74, 102, 60, 0, 120, 0, 0, + 0, 0, 96, 30, 0, 68, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 4, 0, 0, 90, 0, + 0, 84, 85, 83, 0, 87, 0, 0, 116, 218, + 199, 202, 204, 205, 200, 201, 206, 0, 119, 121, + 194, 195, 196, 203, 197, 198, 25, 24, 0, 0, + 68, 0, 63, 0, 0, 0, 0, 96, 70, 33, + 31, 33, 61, 58, 59, 232, 231, 0, 109, 89, + 0, 77, 76, 78, 102, 79, 86, 82, 0, 102, + 0, 0, 80, 27, 0, 42, 0, 228, 0, 0, + 190, 0, 0, 0, 0, 0, 0, 192, 0, 95, + 124, 131, 132, 133, 126, 128, 134, 127, 146, 135, + 136, 137, 130, 125, 139, 140, 0, 249, 0, 0, + 66, 0, 0, 69, 0, 29, 34, 22, 0, 20, + 93, 91, 117, 226, 116, 101, 103, 108, 116, 112, + 114, 111, 122, 0, 40, 0, 0, 44, 228, 90, + 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, + 141, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, - 0, 67, 66, 0, 17, 0, 0, 91, 87, 0, - 219, 0, 220, 118, 70, 0, 102, 101, 100, 76, - 0, 0, 0, 43, 0, 46, 45, 0, 44, 49, - 42, 52, 34, 0, 36, 173, 0, 186, 188, 0, - 176, 177, 178, 179, 180, 181, 0, 0, 0, 0, - 0, 160, 0, 0, 0, 133, 124, 152, 153, 0, - 148, 0, 0, 0, 139, 0, 151, 150, 166, 167, - 168, 169, 170, 171, 172, 143, 142, 145, 144, 146, - 147, 0, 27, 245, 0, 0, 20, 223, 89, 202, - 204, 0, 206, 217, 205, 93, 113, 218, 99, 110, - 108, 33, 0, 0, 50, 0, 41, 40, 0, 164, - 0, 0, 0, 158, 0, 0, 0, 182, 0, 149, - 0, 0, 0, 140, 183, 60, 22, 0, 0, 239, - 231, 237, 235, 238, 233, 0, 0, 0, 216, 210, - 214, 0, 83, 0, 0, 51, 174, 0, 162, 0, - 161, 0, 165, 184, 0, 0, 156, 154, 217, 0, - 234, 236, 232, 0, 203, 218, 0, 47, 48, 175, - 159, 163, 157, 155, 207, 228, 240, 0, 95, 0, - 0, 0, 0, 92, 0, 241, 229, 215, 94, 185, - 0, 230 + 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, + 0, 72, 71, 0, 0, 18, 0, 0, 96, 92, + 0, 224, 0, 225, 123, 75, 0, 107, 106, 105, + 81, 0, 0, 0, 48, 0, 51, 50, 0, 49, + 54, 47, 57, 39, 0, 41, 178, 0, 191, 193, + 0, 181, 182, 183, 184, 185, 186, 0, 0, 0, + 0, 0, 165, 0, 0, 0, 138, 129, 157, 158, + 0, 153, 0, 0, 0, 144, 0, 156, 155, 171, + 172, 173, 174, 175, 176, 177, 148, 147, 150, 149, + 151, 152, 0, 28, 250, 0, 32, 0, 21, 228, + 94, 207, 209, 0, 211, 222, 210, 98, 118, 223, + 104, 115, 113, 38, 0, 0, 55, 0, 46, 45, + 0, 169, 0, 0, 0, 163, 0, 0, 0, 187, + 0, 154, 0, 0, 0, 145, 188, 65, 23, 0, + 0, 244, 236, 242, 240, 243, 238, 0, 0, 0, + 221, 215, 219, 0, 88, 0, 0, 56, 179, 0, + 167, 0, 166, 0, 170, 189, 0, 0, 161, 159, + 222, 0, 239, 241, 237, 0, 208, 223, 0, 52, + 53, 180, 164, 168, 162, 160, 212, 233, 245, 0, + 100, 0, 0, 0, 0, 97, 0, 246, 234, 220, + 99, 190, 0, 235 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -330, -330, -330, 386, -330, 424, -330, 196, -330, -330, - -330, -330, -330, 174, -330, -330, 415, -330, 169, -330, - -330, -330, 409, -330, -330, -330, 341, -330, -330, 272, - -144, -4, 367, -55, 400, -330, -330, -1, 253, -330, - -330, -330, -106, -330, -330, 12, -330, 198, -330, -330, - -161, -213, -330, 45, 212, -116, -111, -330, -330, -330, - -330, -330, -330, 250, -330, -330, -330, -330, -330, -330, - -330, -330, 31, -63, -109, -330, -330, -80, -330, -330, - -330, -329, 60, -330, -330, -330, 2, -330, 66, 273, - -330, -330, -330, -330, 393, -330, -330, -330, -330, 46 + -278, -278, -278, 412, -278, 449, -278, 223, -278, -278, + -278, -278, 206, -77, 339, -278, -278, -278, 453, -278, + 201, -278, -278, -278, 448, -278, -278, -278, 380, -278, + -278, 305, -155, -5, 402, -58, 437, -278, -278, 244, + 284, -278, -278, -278, -110, -278, -278, -22, -278, 226, + -278, -278, -149, -223, -278, -135, 237, -121, -156, -278, + -278, -278, -278, -278, -278, 281, -278, -278, -278, -278, + -278, -278, -278, -278, 62, -51, -63, -278, -278, -82, + -278, -278, -278, -277, 88, -278, -278, -278, 2, -278, + 91, 313, -278, -278, -278, -278, 426, -278, -278, -278, + -278, 75 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 55, 188, 189, 18, 112, - 19, 20, 71, 178, 21, 22, 67, 206, 207, 281, - 356, 23, 75, 24, 25, 26, 120, 27, 122, 123, - 28, 135, 136, 60, 89, 90, 139, 61, 132, 190, - 257, 258, 117, 392, 433, 93, 195, 196, 268, 83, - 144, 191, 102, 103, 192, 193, 162, 163, 164, 165, - 166, 167, 168, 215, 169, 170, 171, 172, 296, 173, - 174, 175, 176, 177, 105, 106, 107, 108, 109, 110, - 338, 339, 340, 341, 342, 42, 343, 388, 389, 390, - 263, 29, 30, 49, 50, 344, 385, 436, 53, 181 + -1, 15, 16, 17, 18, 58, 198, 199, 19, 117, + 20, 21, 74, 129, 195, 22, 23, 24, 70, 216, + 217, 292, 368, 25, 80, 26, 27, 28, 125, 29, + 127, 128, 30, 143, 144, 63, 94, 95, 147, 64, + 140, 200, 268, 269, 122, 404, 445, 98, 205, 206, + 279, 88, 152, 201, 107, 108, 202, 203, 170, 171, + 172, 173, 174, 175, 176, 225, 177, 178, 179, 180, + 307, 181, 182, 183, 184, 185, 110, 111, 112, 113, + 114, 115, 350, 351, 352, 353, 354, 44, 355, 400, + 401, 402, 274, 31, 32, 52, 53, 356, 397, 448, + 56, 188 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -960,275 +969,272 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 161, 104, 130, 85, 33, 204, 304, 36, 32, 179, - 116, 287, 43, 95, 96, 97, 186, 439, 432, 131, - 86, 260, 46, 223, 197, 59, 199, 201, 86, 148, - 223, 57, 271, 264, 311, 266, 223, 269, 37, 214, - 57, 69, 224, 72, 222, 218, 182, 220, 77, 224, - 31, 87, 378, 231, 84, 224, 47, 414, 44, 87, - 223, 267, 149, 312, 284, 183, 38, 260, 251, 114, - 115, 32, 34, 358, 127, 306, 142, 125, 126, 224, - 246, 91, 419, 202, 426, 88, 45, 379, 137, 361, - 223, 137, 380, 88, 143, 185, 223, 297, 381, 382, - 372, 150, 35, 48, 98, 221, 218, 307, 308, 224, - 39, 40, 401, 383, 309, 224, 310, -240, 384, 223, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 259, 387, 58, 224, 367, - 152, 95, 96, 97, 259, 99, 100, 41, 194, 197, - 314, 345, 51, 198, 349, 350, 289, 405, 288, 54, - 52, 62, 337, 179, 159, 285, 331, 378, 315, 63, - 223, 101, 231, 152, 95, 96, 97, 64, 153, 154, - 354, 231, 261, 364, 365, 66, 65, 104, -208, 224, - 104, 70, 73, 377, 242, 243, 244, 245, 355, 246, - 369, 299, 379, 428, 78, 81, 245, 380, 246, 74, - 362, 153, 154, 381, 382, 155, 378, 429, 79, 82, - 300, 152, 95, 96, 97, 94, 113, 301, 383, 300, - 213, 111, 98, 384, 223, 116, 363, 152, 95, 96, - 97, 209, 200, 210, 397, 398, 399, 366, 155, 332, - 156, 379, 223, 224, 119, 400, 380, 403, 371, 153, - 154, 118, 381, 382, 157, 98, 430, 248, 121, 57, - 249, 224, 213, 99, 100, 153, 154, 383, 124, 58, - 129, -240, 384, 156, 97, 421, 158, 159, 254, 223, - 282, 255, 420, 283, 160, 334, 155, 157, 335, 101, - 131, 152, 95, 96, 97, 133, 99, 100, 224, 134, - 138, 273, 155, 98, 435, 404, 438, 274, 375, 158, - 159, 146, 140, 376, 145, 275, 146, 160, 146, 98, - 396, 156, 101, 259, 152, 95, 96, 97, 407, 216, - 154, 259, 147, 423, 95, 157, 259, 156, 437, 276, - 180, 249, -209, 184, 99, 100, 187, 203, 13, 91, - 208, 157, 205, 211, 212, 219, 277, 158, 159, 247, - 99, 100, 259, 154, 225, 160, 155, 250, 253, 256, - 101, 278, 270, 158, 159, 279, 265, 272, 57, 302, - 313, 160, 333, 98, 305, 347, 101, 352, 280, 360, - 353, 311, 359, 223, 226, 370, 373, 246, 386, 155, - 374, 217, 290, 291, 292, 293, 294, 295, 391, 393, - 394, 395, 402, 409, 406, 157, 98, 408, 413, 410, - 415, 411, 412, 417, 99, 100, 416, 418, 80, 422, - 427, 434, 56, 441, 217, 226, 351, 158, 159, 227, - 210, 336, 357, 68, 76, 160, 151, 252, 157, 141, - 101, 92, 286, 348, 298, 440, 262, 99, 100, 425, - 228, 346, 128, 431, 424, 0, 0, 0, 229, 230, - 158, 159, 0, 0, 0, 231, 232, 0, 160, 226, - 227, 0, 0, 101, 0, 233, 234, 235, 236, 237, - 0, 0, 238, 239, 368, 240, 241, 242, 243, 244, - 245, 303, 246, 0, 0, 0, 0, 0, 0, 0, - 230, 226, 0, 0, 0, 0, 231, 232, 0, 0, - 0, 0, 0, 0, 227, 0, 233, 234, 235, 236, - 237, 0, 0, 238, 239, 0, 240, 241, 242, 243, - 244, 245, 0, 246, 0, 303, 226, 0, 0, 0, - 0, 0, 0, 0, 230, 0, -243, 0, 0, 0, - 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, - 233, 234, 235, 236, 237, 0, 0, 238, 239, 0, - 240, 241, 242, 243, 244, 245, 230, 246, 0, 0, - 0, 0, 231, -243, 0, 0, 0, 0, 0, 0, - 0, 0, -243, -243, -243, 236, 237, 0, 0, 238, - 239, 0, 240, 241, 242, 243, 244, 245, 0, 246, - 0, 230, 0, 0, 0, 0, 0, 231, 0, 0, - 0, -242, 0, 0, 0, 0, 0, 0, 1, 0, - -243, -243, 0, 0, -243, -243, 2, 240, 241, 242, - 243, 244, 245, 3, 246, 0, 1, 4, 0, 0, - 0, 0, 0, 5, 2, 0, 6, 7, 0, 0, - 0, 3, 0, 0, 0, 4, 8, 9, 0, 0, - 0, 5, 0, 0, 6, 7, 0, 10, 0, 0, - 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, - 0, 11, 0, 0, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, - 0, 0, 13 + 169, 131, 214, 90, 35, 138, 315, 38, 228, 298, + 230, 34, 45, 46, 130, 130, 109, 193, 100, 101, + 102, 451, 444, 139, 271, 271, 62, 207, 60, 209, + 211, 241, 39, 121, 91, 156, 150, 241, 160, 100, + 101, 102, 224, 72, 60, 75, 186, 232, 282, 49, + 189, 82, 379, 322, 151, 275, 89, 270, 256, 280, + 130, 40, 255, 295, 256, 92, 157, 190, 390, 77, + 261, 228, 119, 120, 370, 91, 161, 162, 135, 320, + 323, 321, 133, 134, 50, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 93, 384, 308, 212, 391, 158, 92, 233, 78, 392, + 231, 103, 318, 319, 163, 393, 394, 192, 219, 34, + 220, 426, 204, 47, 234, 345, 33, 208, 36, 347, + 233, 395, 103, 61, 41, -245, 396, 96, 270, 399, + 272, 93, 210, 160, 100, 101, 102, 234, 438, 164, + 104, 105, 48, 233, 258, 207, 299, 259, 357, 417, + 361, 362, 165, 300, 42, 349, 381, 37, 167, 296, + 234, 104, 105, 284, 342, 390, 106, 310, 233, 285, + 412, 161, 162, 51, 166, 167, 373, 286, 43, 376, + 377, 233, 168, 233, 389, 234, 311, 106, 233, 54, + 432, 233, 312, 317, -213, 440, 363, 57, 234, 109, + 234, 391, 287, 109, 277, 234, 392, 55, 234, 163, + 130, 65, 393, 394, 415, 160, 100, 101, 102, 288, + 325, 160, 100, 101, 102, 66, 67, 103, 395, 233, + 278, 431, -245, 396, 223, 289, 374, 326, 69, 290, + 68, 409, 410, 411, 164, 378, 234, 241, 73, 343, + 76, 291, 84, 161, 162, 311, 383, 165, 366, 161, + 162, 375, 265, 79, 60, 266, 104, 105, 83, 252, + 253, 254, 255, 223, 256, 367, 86, 233, 293, 166, + 167, 294, 433, 160, 100, 101, 102, 168, 413, 390, + 387, 163, 106, 154, 234, 233, 388, 163, 87, 154, + 99, -214, 160, 100, 101, 102, 116, 408, 118, 103, + 270, 447, 234, 450, 416, 103, 419, 435, 121, 270, + 270, 226, 162, 123, 449, 391, 164, 259, 145, 124, + 392, 145, 164, 126, 132, 100, 393, 394, 102, 165, + 441, 162, 235, 141, 148, 165, 139, 61, 104, 105, + 137, 146, 395, 142, 104, 105, 153, 396, 154, 163, + 155, 166, 167, 187, 191, 194, 197, 166, 167, 168, + 213, 96, 14, 236, 106, 168, 215, 103, 163, 218, + 106, 301, 302, 303, 304, 305, 306, 221, 442, 222, + 229, 263, 257, 260, 227, 264, 103, 267, 281, 283, + 270, 276, 60, 313, 344, 316, 324, 165, 359, 364, + 365, 372, 371, 227, 322, 233, 104, 105, 385, 237, + 382, 256, 236, 398, 386, 403, 165, 405, 406, 166, + 167, 414, 407, 418, 420, 104, 105, 168, 421, 238, + 422, 423, 106, 424, 425, 427, 239, 240, 166, 167, + 429, 439, 428, 241, 242, 446, 168, 85, 59, 346, + 196, 106, 236, 243, 244, 245, 246, 247, 237, 430, + 248, 249, 434, 250, 251, 252, 253, 254, 255, 348, + 256, 220, 380, 71, 453, 369, 81, 262, 314, 149, + 159, 97, 360, 297, 236, 309, 240, 358, 452, 437, + 136, 436, 241, 242, 443, 0, 273, 0, 237, 236, + 0, 0, 243, 244, 245, 246, 247, 0, 0, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 314, 256, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + -248, 0, 241, 242, 0, 0, 0, 0, 0, 0, + 0, 0, 243, 244, 245, 246, 247, 0, 0, 248, + 249, 0, 250, 251, 252, 253, 254, 255, 240, 256, + 0, 0, 0, 0, 241, -248, 0, 0, 0, 0, + 0, 0, 0, 240, -248, -248, -248, 246, 247, 241, + 0, 248, 249, -247, 250, 251, 252, 253, 254, 255, + 1, 256, -248, -248, 0, 0, -248, -248, 2, 250, + 251, 252, 253, 254, 255, 3, 256, 0, 0, 4, + 0, 0, 0, 1, 0, 5, 0, 0, 6, 7, + 0, 2, 0, 0, 0, 0, 0, 0, 3, 8, + 9, 0, 4, 0, 0, 0, 0, 0, 5, 0, + 10, 6, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 11, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 11, 14, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, + 0, 14 }; static const yytype_int16 yycheck[] = { - 116, 64, 82, 58, 2, 149, 219, 5, 3, 118, - 76, 3, 10, 4, 5, 6, 122, 3, 44, 12, - 9, 3, 19, 106, 140, 29, 142, 143, 9, 85, - 106, 51, 48, 194, 92, 81, 106, 198, 73, 155, - 51, 39, 125, 41, 160, 156, 57, 158, 46, 125, - 26, 40, 25, 128, 58, 125, 53, 386, 73, 40, - 106, 107, 118, 121, 208, 120, 101, 3, 184, 67, - 68, 3, 3, 286, 78, 158, 48, 75, 76, 125, - 155, 70, 158, 146, 413, 74, 101, 60, 89, 99, - 106, 92, 65, 74, 66, 161, 106, 213, 71, 72, - 313, 157, 3, 3, 95, 160, 217, 223, 224, 125, - 85, 85, 99, 86, 225, 125, 227, 90, 91, 106, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 161, 118, 157, 125, 156, - 3, 4, 5, 6, 161, 136, 137, 89, 136, 265, - 95, 257, 0, 141, 270, 271, 211, 370, 150, 103, - 160, 3, 157, 272, 150, 158, 246, 25, 113, 159, - 106, 162, 128, 3, 4, 5, 6, 157, 41, 42, - 95, 128, 118, 299, 300, 120, 85, 250, 161, 125, - 253, 108, 115, 337, 150, 151, 152, 153, 113, 155, - 311, 83, 60, 416, 118, 88, 153, 65, 155, 120, - 83, 41, 42, 71, 72, 78, 25, 75, 161, 117, - 102, 3, 4, 5, 6, 3, 113, 109, 86, 102, - 102, 4, 95, 91, 106, 76, 109, 3, 4, 5, - 6, 157, 105, 159, 360, 361, 362, 302, 78, 247, - 113, 60, 106, 125, 157, 109, 65, 368, 313, 41, - 42, 84, 71, 72, 127, 95, 124, 158, 3, 51, - 161, 125, 102, 136, 137, 41, 42, 86, 41, 157, - 157, 90, 91, 113, 6, 401, 149, 150, 158, 106, - 158, 161, 109, 161, 157, 250, 78, 127, 253, 162, - 12, 3, 4, 5, 6, 158, 136, 137, 125, 158, - 105, 24, 78, 95, 430, 370, 432, 30, 158, 149, - 150, 161, 119, 158, 158, 38, 161, 157, 161, 95, - 158, 113, 162, 161, 3, 4, 5, 6, 158, 41, - 42, 161, 41, 158, 4, 127, 161, 113, 158, 62, - 3, 161, 161, 138, 136, 137, 3, 116, 103, 70, - 118, 127, 3, 157, 157, 155, 79, 149, 150, 89, - 136, 137, 161, 42, 17, 157, 78, 157, 157, 85, - 162, 94, 48, 149, 150, 98, 161, 84, 51, 157, - 157, 157, 3, 95, 158, 3, 162, 157, 111, 85, - 157, 92, 158, 106, 47, 157, 95, 155, 161, 78, - 156, 113, 130, 131, 132, 133, 134, 135, 63, 6, - 6, 95, 158, 90, 158, 127, 95, 158, 90, 71, - 3, 71, 71, 158, 136, 137, 119, 158, 52, 158, - 157, 157, 18, 158, 113, 47, 272, 149, 150, 92, - 159, 255, 283, 38, 45, 157, 115, 185, 127, 92, - 162, 61, 209, 265, 214, 434, 193, 136, 137, 409, - 113, 259, 79, 427, 408, -1, -1, -1, 121, 122, - 149, 150, -1, -1, -1, 128, 129, -1, 157, 47, - 92, -1, -1, 162, -1, 138, 139, 140, 141, 142, - -1, -1, 145, 146, 106, 148, 149, 150, 151, 152, - 153, 113, 155, -1, -1, -1, -1, -1, -1, -1, - 122, 47, -1, -1, -1, -1, 128, 129, -1, -1, - -1, -1, -1, -1, 92, -1, 138, 139, 140, 141, - 142, -1, -1, 145, 146, -1, 148, 149, 150, 151, - 152, 153, -1, 155, -1, 113, 47, -1, -1, -1, - -1, -1, -1, -1, 122, -1, 92, -1, -1, -1, - 128, 129, -1, -1, -1, -1, -1, -1, -1, -1, - 138, 139, 140, 141, 142, -1, -1, 145, 146, -1, - 148, 149, 150, 151, 152, 153, 122, 155, -1, -1, - -1, -1, 128, 129, -1, -1, -1, -1, -1, -1, + 121, 78, 157, 61, 2, 87, 229, 5, 164, 3, + 166, 3, 10, 11, 77, 78, 67, 127, 4, 5, + 6, 3, 45, 12, 3, 3, 31, 148, 52, 150, + 151, 128, 74, 77, 9, 87, 49, 128, 3, 4, + 5, 6, 163, 41, 52, 43, 123, 168, 49, 19, + 58, 49, 156, 94, 67, 204, 61, 161, 155, 208, + 123, 103, 153, 218, 155, 40, 118, 125, 25, 87, + 191, 227, 70, 71, 297, 9, 41, 42, 83, 235, + 121, 237, 80, 81, 54, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 75, 324, 223, 154, 61, 157, 40, 108, 126, 66, + 168, 97, 233, 234, 79, 72, 73, 161, 157, 3, + 159, 398, 144, 74, 125, 260, 26, 149, 3, 264, + 108, 88, 97, 157, 87, 92, 93, 71, 161, 118, + 118, 75, 107, 3, 4, 5, 6, 125, 425, 114, + 136, 137, 103, 108, 158, 276, 150, 161, 268, 382, + 281, 282, 127, 221, 87, 157, 322, 3, 150, 158, + 125, 136, 137, 24, 256, 25, 162, 85, 108, 30, + 110, 41, 42, 3, 149, 150, 101, 38, 91, 310, + 311, 108, 157, 108, 349, 125, 104, 162, 108, 0, + 110, 108, 110, 158, 161, 428, 283, 105, 125, 260, + 125, 61, 63, 264, 83, 125, 66, 160, 125, 79, + 283, 3, 72, 73, 380, 3, 4, 5, 6, 80, + 97, 3, 4, 5, 6, 159, 157, 97, 88, 108, + 109, 158, 92, 93, 104, 96, 85, 114, 120, 100, + 87, 372, 373, 374, 114, 313, 125, 128, 3, 257, + 116, 112, 161, 41, 42, 104, 324, 127, 97, 41, + 42, 110, 158, 120, 52, 161, 136, 137, 118, 150, + 151, 152, 153, 104, 155, 114, 90, 108, 158, 149, + 150, 161, 413, 3, 4, 5, 6, 157, 101, 25, + 158, 79, 162, 161, 125, 108, 158, 79, 117, 161, + 3, 161, 3, 4, 5, 6, 4, 158, 114, 97, + 161, 442, 125, 444, 382, 97, 158, 158, 77, 161, + 161, 41, 42, 86, 158, 61, 114, 161, 94, 157, + 66, 97, 114, 3, 41, 4, 72, 73, 6, 127, + 76, 42, 17, 158, 119, 127, 12, 157, 136, 137, + 157, 107, 88, 158, 136, 137, 158, 93, 161, 79, + 41, 149, 150, 3, 138, 105, 3, 149, 150, 157, + 3, 71, 105, 48, 162, 157, 3, 97, 79, 118, + 162, 130, 131, 132, 133, 134, 135, 157, 124, 157, + 155, 43, 91, 157, 114, 157, 97, 87, 49, 86, + 161, 161, 52, 157, 3, 158, 157, 127, 3, 157, + 157, 87, 158, 114, 94, 108, 136, 137, 97, 94, + 157, 155, 48, 161, 156, 64, 127, 6, 6, 149, + 150, 158, 97, 158, 158, 136, 137, 157, 92, 114, + 72, 72, 162, 72, 92, 3, 121, 122, 149, 150, + 158, 157, 119, 128, 129, 157, 157, 55, 19, 263, + 131, 162, 48, 138, 139, 140, 141, 142, 94, 158, + 145, 146, 158, 148, 149, 150, 151, 152, 153, 266, + 155, 159, 108, 40, 158, 294, 48, 192, 114, 97, + 120, 64, 276, 219, 48, 224, 122, 270, 446, 421, + 84, 420, 128, 129, 439, -1, 203, -1, 94, 48, -1, -1, 138, 139, 140, 141, 142, -1, -1, 145, - 146, -1, 148, 149, 150, 151, 152, 153, -1, 155, - -1, 122, -1, -1, -1, -1, -1, 128, -1, -1, - -1, 0, -1, -1, -1, -1, -1, -1, 7, -1, - 141, 142, -1, -1, 145, 146, 15, 148, 149, 150, - 151, 152, 153, 22, 155, -1, 7, 26, -1, -1, - -1, -1, -1, 32, 15, -1, 35, 36, -1, -1, - -1, 22, -1, -1, -1, 26, 45, 46, -1, -1, - -1, 32, -1, -1, 35, 36, -1, 56, -1, -1, - -1, -1, -1, -1, 45, 46, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, - -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, - -1, 82, -1, -1, 103, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, - -1, -1, 103 + 146, -1, 148, 149, 150, 151, 152, 153, 114, 155, + -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, + 94, -1, 128, 129, -1, -1, -1, -1, -1, -1, + -1, -1, 138, 139, 140, 141, 142, -1, -1, 145, + 146, -1, 148, 149, 150, 151, 152, 153, 122, 155, + -1, -1, -1, -1, 128, 129, -1, -1, -1, -1, + -1, -1, -1, 122, 138, 139, 140, 141, 142, 128, + -1, 145, 146, 0, 148, 149, 150, 151, 152, 153, + 7, 155, 141, 142, -1, -1, 145, 146, 15, 148, + 149, 150, 151, 152, 153, 22, 155, -1, -1, 26, + -1, -1, -1, 7, -1, 32, -1, -1, 35, 36, + -1, 15, -1, -1, -1, -1, -1, -1, 22, 46, + 47, -1, 26, -1, -1, -1, -1, -1, 32, -1, + 57, 35, 36, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 46, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 57, 81, -1, -1, 84, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 99, -1, -1, -1, -1, 81, 105, -1, + 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, + -1, 105 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 7, 15, 22, 26, 32, 35, 36, 45, 46, - 56, 82, 97, 103, 164, 165, 166, 167, 171, 173, - 174, 177, 178, 184, 186, 187, 188, 190, 193, 254, - 255, 26, 3, 249, 3, 3, 249, 73, 101, 85, - 85, 89, 248, 249, 73, 101, 19, 53, 3, 256, - 257, 0, 160, 261, 103, 168, 168, 51, 157, 194, - 196, 200, 3, 159, 157, 85, 120, 179, 179, 249, - 108, 175, 249, 115, 120, 185, 185, 249, 118, 161, - 166, 88, 117, 212, 194, 196, 9, 40, 74, 197, - 198, 70, 197, 208, 3, 4, 5, 6, 95, 136, - 137, 162, 215, 216, 236, 237, 238, 239, 240, 241, - 242, 4, 172, 113, 249, 249, 76, 205, 84, 157, - 189, 3, 191, 192, 41, 249, 249, 194, 257, 157, - 240, 12, 201, 158, 158, 194, 195, 200, 105, 199, - 119, 195, 48, 66, 213, 158, 161, 41, 85, 118, - 157, 189, 3, 41, 42, 78, 113, 127, 149, 150, - 157, 218, 219, 220, 221, 222, 223, 224, 225, 227, - 228, 229, 230, 232, 233, 234, 235, 236, 176, 237, - 3, 262, 57, 196, 138, 161, 205, 3, 169, 170, - 202, 214, 217, 218, 208, 209, 210, 218, 208, 218, - 105, 218, 236, 116, 193, 3, 180, 181, 118, 157, - 159, 157, 157, 102, 218, 226, 41, 113, 219, 155, - 219, 196, 218, 106, 125, 17, 47, 92, 113, 121, + 0, 7, 15, 22, 26, 32, 35, 36, 46, 47, + 57, 81, 84, 99, 105, 164, 165, 166, 167, 171, + 173, 174, 178, 179, 180, 186, 188, 189, 190, 192, + 195, 256, 257, 26, 3, 251, 3, 3, 251, 74, + 103, 87, 87, 91, 250, 251, 251, 74, 103, 19, + 54, 3, 258, 259, 0, 160, 263, 105, 168, 168, + 52, 157, 196, 198, 202, 3, 159, 157, 87, 120, + 181, 181, 251, 3, 175, 251, 116, 87, 126, 120, + 187, 187, 251, 118, 161, 166, 90, 117, 214, 196, + 198, 9, 40, 75, 199, 200, 71, 199, 210, 3, + 4, 5, 6, 97, 136, 137, 162, 217, 218, 238, + 239, 240, 241, 242, 243, 244, 4, 172, 114, 251, + 251, 77, 207, 86, 157, 191, 3, 193, 194, 176, + 239, 176, 41, 251, 251, 196, 259, 157, 242, 12, + 203, 158, 158, 196, 197, 202, 107, 201, 119, 197, + 49, 67, 215, 158, 161, 41, 87, 118, 157, 191, + 3, 41, 42, 79, 114, 127, 149, 150, 157, 220, + 221, 222, 223, 224, 225, 226, 227, 229, 230, 231, + 232, 234, 235, 236, 237, 238, 176, 3, 264, 58, + 198, 138, 161, 207, 105, 177, 177, 3, 169, 170, + 204, 216, 219, 220, 210, 211, 212, 220, 210, 220, + 107, 220, 238, 3, 195, 3, 182, 183, 118, 157, + 159, 157, 157, 104, 220, 228, 41, 114, 221, 155, + 221, 198, 220, 108, 125, 17, 48, 94, 114, 121, 122, 128, 129, 138, 139, 140, 141, 142, 145, 146, - 148, 149, 150, 151, 152, 153, 155, 89, 158, 161, - 157, 218, 192, 157, 158, 161, 85, 203, 204, 161, - 3, 118, 252, 253, 213, 161, 81, 107, 211, 213, - 48, 48, 84, 24, 30, 38, 62, 79, 94, 98, - 111, 182, 158, 161, 193, 158, 201, 3, 150, 196, - 130, 131, 132, 133, 134, 135, 231, 218, 226, 83, - 102, 109, 157, 113, 214, 158, 158, 218, 218, 219, - 219, 92, 121, 157, 95, 113, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 240, 249, 3, 216, 216, 170, 157, 243, 244, - 245, 246, 247, 249, 258, 205, 217, 3, 210, 218, - 218, 176, 157, 157, 95, 113, 183, 181, 214, 158, - 85, 99, 83, 109, 218, 218, 196, 156, 106, 219, - 157, 196, 214, 95, 156, 158, 158, 193, 25, 60, - 65, 71, 72, 86, 91, 259, 161, 118, 250, 251, - 252, 63, 206, 6, 6, 95, 158, 218, 218, 218, - 109, 99, 158, 219, 196, 214, 158, 158, 158, 90, - 71, 71, 71, 90, 244, 3, 119, 158, 158, 158, - 109, 218, 158, 158, 251, 245, 244, 157, 214, 75, - 124, 262, 44, 207, 157, 218, 260, 158, 218, 3, - 235, 158 + 148, 149, 150, 151, 152, 153, 155, 91, 158, 161, + 157, 220, 194, 43, 157, 158, 161, 87, 205, 206, + 161, 3, 118, 254, 255, 215, 161, 83, 109, 213, + 215, 49, 49, 86, 24, 30, 38, 63, 80, 96, + 100, 112, 184, 158, 161, 195, 158, 203, 3, 150, + 198, 130, 131, 132, 133, 134, 135, 233, 220, 228, + 85, 104, 110, 157, 114, 216, 158, 158, 220, 220, + 221, 221, 94, 121, 157, 97, 114, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 242, 251, 3, 218, 175, 218, 170, 157, + 245, 246, 247, 248, 249, 251, 260, 207, 219, 3, + 212, 220, 220, 176, 157, 157, 97, 114, 185, 183, + 216, 158, 87, 101, 85, 110, 220, 220, 198, 156, + 108, 221, 157, 198, 216, 97, 156, 158, 158, 195, + 25, 61, 66, 72, 73, 88, 93, 261, 161, 118, + 252, 253, 254, 64, 208, 6, 6, 97, 158, 220, + 220, 220, 110, 101, 158, 221, 198, 216, 158, 158, + 158, 92, 72, 72, 72, 92, 246, 3, 119, 158, + 158, 158, 110, 220, 158, 158, 253, 247, 246, 157, + 216, 76, 124, 264, 45, 209, 157, 220, 262, 158, + 220, 3, 237, 158 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 163, 164, 165, 165, 166, 166, 166, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 168, 168, 169, - 169, 170, 170, 171, 172, 173, 173, 174, 175, 176, - 177, 177, 177, 178, 178, 178, 178, 179, 179, 180, - 180, 181, 182, 182, 182, 182, 182, 182, 182, 182, - 183, 183, 183, 184, 184, 184, 185, 185, 186, 187, - 188, 188, 189, 189, 190, 191, 191, 192, 193, 193, - 193, 194, 194, 195, 195, 196, 196, 197, 198, 198, - 198, 199, 199, 200, 201, 201, 202, 203, 203, 204, - 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, - 210, 211, 211, 211, 212, 212, 213, 213, 213, 213, - 213, 213, 214, 214, 215, 215, 216, 216, 217, 218, - 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 220, 220, 221, 221, 221, 221, - 221, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 223, 223, 224, 224, 224, 224, 225, 225, - 225, 225, 226, 226, 227, 227, 228, 228, 228, 228, - 228, 228, 228, 229, 229, 230, 231, 231, 231, 231, - 231, 231, 232, 233, 234, 235, 235, 235, 235, 236, - 236, 236, 236, 236, 237, 238, 238, 239, 239, 240, - 241, 242, 243, 243, 244, 244, 245, 245, 246, 246, - 247, 248, 249, 249, 250, 250, 251, 251, 252, 252, - 253, 253, 254, 254, 255, 256, 256, 257, 258, 258, - 258, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 260, 261, 261, 262, 262 + 0, 163, 164, 165, 165, 166, 166, 166, 166, 166, + 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, + 169, 169, 170, 170, 171, 172, 173, 173, 174, 174, + 175, 176, 177, 177, 178, 179, 179, 179, 180, 180, + 180, 180, 181, 181, 182, 182, 183, 184, 184, 184, + 184, 184, 184, 184, 184, 185, 185, 185, 186, 186, + 186, 187, 187, 188, 189, 190, 190, 191, 191, 192, + 193, 193, 194, 195, 195, 195, 196, 196, 197, 197, + 198, 198, 199, 200, 200, 200, 201, 201, 202, 203, + 203, 204, 205, 205, 206, 207, 207, 208, 208, 209, + 209, 210, 210, 211, 211, 212, 213, 213, 213, 214, + 214, 215, 215, 215, 215, 215, 215, 216, 216, 217, + 217, 218, 218, 219, 220, 220, 220, 220, 220, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, + 222, 223, 223, 223, 223, 223, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 225, 225, 226, + 226, 226, 226, 227, 227, 227, 227, 228, 228, 229, + 229, 230, 230, 230, 230, 230, 230, 230, 231, 231, + 232, 233, 233, 233, 233, 233, 233, 234, 235, 236, + 237, 237, 237, 237, 238, 238, 238, 238, 238, 239, + 240, 240, 241, 241, 242, 243, 244, 245, 245, 246, + 246, 247, 247, 248, 248, 249, 250, 251, 251, 252, + 252, 253, 253, 254, 254, 255, 255, 256, 256, 257, + 258, 258, 259, 260, 260, 260, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 262, 263, 263, 264, + 264 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 2, 1, 3, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 5, 0, 1, - 3, 1, 4, 4, 1, 2, 5, 7, 1, 1, - 2, 3, 2, 8, 7, 6, 7, 3, 0, 1, - 3, 3, 1, 1, 1, 1, 1, 4, 4, 1, - 1, 2, 0, 4, 4, 3, 2, 0, 4, 2, - 8, 5, 3, 0, 5, 1, 3, 3, 2, 2, - 6, 3, 3, 1, 1, 3, 5, 2, 1, 1, - 1, 1, 0, 7, 1, 0, 1, 1, 0, 2, - 2, 0, 4, 0, 2, 0, 3, 0, 1, 3, - 2, 1, 1, 0, 2, 0, 2, 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, 3, 1, 1, 2, 2, 2, 3, - 4, 1, 3, 3, 3, 3, 3, 3, 3, 4, - 3, 3, 3, 3, 5, 6, 5, 6, 4, 6, - 3, 5, 4, 5, 4, 5, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 6, 1, 1, 1, 1, - 1, 1, 4, 4, 5, 1, 3, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 4, 1, 3, - 2, 1, 1, 3, 1, 5, 1, 0, 2, 1, - 1, 0, 1, 0, 2, 1, 3, 3, 4, 6, - 8, 1, 2, 1, 2, 1, 2, 1, 1, 1, - 0, 1, 1, 0, 1, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 5, 0, + 1, 3, 1, 4, 4, 1, 2, 5, 7, 5, + 1, 1, 3, 0, 5, 2, 3, 2, 8, 7, + 6, 7, 3, 0, 1, 3, 3, 1, 1, 1, + 1, 1, 4, 4, 1, 1, 2, 0, 4, 4, + 3, 2, 0, 4, 2, 8, 5, 3, 0, 5, + 1, 3, 3, 2, 2, 6, 3, 3, 1, 1, + 3, 5, 2, 1, 1, 1, 1, 0, 7, 1, + 0, 1, 1, 0, 2, 2, 0, 4, 0, 2, + 0, 3, 0, 1, 3, 2, 1, 1, 0, 2, + 0, 2, 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, 3, 1, + 1, 2, 2, 2, 3, 4, 1, 3, 3, 3, + 3, 3, 3, 3, 4, 3, 3, 3, 3, 5, + 6, 5, 6, 4, 6, 3, 5, 4, 5, 4, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 6, 1, 1, 1, 1, 1, 1, 4, 4, 5, + 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, + 5, 1, 0, 2, 1, 1, 0, 1, 0, 2, + 1, 3, 3, 4, 6, 8, 1, 2, 1, 2, + 1, 2, 1, 1, 1, 0, 1, 1, 0, 1, + 3 }; @@ -1730,31 +1736,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 145 "bison_parser.y" /* yacc.c:1257 */ +#line 147 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1736 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1742 "bison_parser.cpp" break; case 4: /* STRING */ -#line 145 "bison_parser.y" /* yacc.c:1257 */ +#line 147 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1742 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1748 "bison_parser.cpp" break; case 5: /* FLOATVAL */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ +#line 145 "bison_parser.y" { } -#line 1748 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1754 "bison_parser.cpp" break; case 6: /* INTVAL */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ +#line 145 "bison_parser.y" { } -#line 1754 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1760 "bison_parser.cpp" break; case 165: /* statement_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1763,23 +1769,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1767 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1773 "bison_parser.cpp" break; case 166: /* statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 1773 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1779 "bison_parser.cpp" break; case 167: /* preparable_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 1779 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1785 "bison_parser.cpp" break; case 168: /* opt_hints */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1788,11 +1794,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1792 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1798 "bison_parser.cpp" break; case 169: /* hint_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1801,71 +1807,83 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1805 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1811 "bison_parser.cpp" break; case 170: /* hint */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 1811 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1817 "bison_parser.cpp" break; case 171: /* prepare_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 1817 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1823 "bison_parser.cpp" break; case 172: /* prepare_target_query */ -#line 145 "bison_parser.y" /* yacc.c:1257 */ +#line 147 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1823 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1829 "bison_parser.cpp" break; case 173: /* execute_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 1829 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1835 "bison_parser.cpp" break; case 174: /* import_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 1835 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1841 "bison_parser.cpp" break; - case 175: /* import_file_type */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 175: /* file_type */ +#line 145 "bison_parser.y" { } -#line 1841 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1847 "bison_parser.cpp" break; case 176: /* file_path */ -#line 145 "bison_parser.y" /* yacc.c:1257 */ +#line 147 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 1847 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1853 "bison_parser.cpp" break; - case 177: /* show_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).show_stmt)); } -#line 1853 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 178: /* create_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ - { delete (((*yyvaluep).create_stmt)); } -#line 1859 "bison_parser.cpp" /* yacc.c:1257 */ - break; - - case 179: /* opt_not_exists */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 177: /* opt_file_type */ +#line 145 "bison_parser.y" { } -#line 1865 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1859 "bison_parser.cpp" break; - case 180: /* column_def_commalist */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 178: /* export_statement */ +#line 156 "bison_parser.y" + { delete (((*yyvaluep).export_stmt)); } +#line 1865 "bison_parser.cpp" + break; + + case 179: /* show_statement */ +#line 156 "bison_parser.y" + { delete (((*yyvaluep).show_stmt)); } +#line 1871 "bison_parser.cpp" + break; + + case 180: /* create_statement */ +#line 156 "bison_parser.y" + { delete (((*yyvaluep).create_stmt)); } +#line 1877 "bison_parser.cpp" + break; + + case 181: /* opt_not_exists */ +#line 145 "bison_parser.y" + { } +#line 1883 "bison_parser.cpp" + break; + + case 182: /* column_def_commalist */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1874,59 +1892,59 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1878 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1896 "bison_parser.cpp" break; - case 181: /* column_def */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 183: /* column_def */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 1884 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1902 "bison_parser.cpp" break; - case 182: /* column_type */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 184: /* column_type */ +#line 145 "bison_parser.y" { } -#line 1890 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1908 "bison_parser.cpp" break; - case 183: /* opt_column_nullable */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 185: /* opt_column_nullable */ +#line 145 "bison_parser.y" { } -#line 1896 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1914 "bison_parser.cpp" break; - case 184: /* drop_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 186: /* drop_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 1902 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1920 "bison_parser.cpp" break; - case 185: /* opt_exists */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 187: /* opt_exists */ +#line 145 "bison_parser.y" { } -#line 1908 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1926 "bison_parser.cpp" break; - case 186: /* delete_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 188: /* delete_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 1914 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1932 "bison_parser.cpp" break; - case 187: /* truncate_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 189: /* truncate_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 1920 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1938 "bison_parser.cpp" break; - case 188: /* insert_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 190: /* insert_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 1926 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1944 "bison_parser.cpp" break; - case 189: /* opt_column_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 191: /* opt_column_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1935,17 +1953,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1939 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1957 "bison_parser.cpp" break; - case 190: /* update_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 192: /* update_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 1945 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1963 "bison_parser.cpp" break; - case 191: /* update_clause_commalist */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 193: /* update_clause_commalist */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1954,53 +1972,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1958 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1976 "bison_parser.cpp" break; - case 192: /* update_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 194: /* update_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 1964 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1982 "bison_parser.cpp" break; - case 193: /* select_statement */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 195: /* select_statement */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 1970 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1988 "bison_parser.cpp" break; - case 194: /* select_with_paren */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 196: /* select_with_paren */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 1976 "bison_parser.cpp" /* yacc.c:1257 */ +#line 1994 "bison_parser.cpp" break; - case 195: /* select_paren_or_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 197: /* select_paren_or_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 1982 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2000 "bison_parser.cpp" break; - case 196: /* select_no_paren */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 198: /* select_no_paren */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 1988 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2006 "bison_parser.cpp" break; - case 200: /* select_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 202: /* select_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 1994 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2012 "bison_parser.cpp" break; - case 201: /* opt_distinct */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 203: /* opt_distinct */ +#line 145 "bison_parser.y" { } -#line 2000 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2018 "bison_parser.cpp" break; - case 202: /* select_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 204: /* select_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2009,41 +2027,41 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2013 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2031 "bison_parser.cpp" break; - case 203: /* opt_from_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 205: /* opt_from_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2019 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2037 "bison_parser.cpp" break; - case 204: /* from_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 206: /* from_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2025 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2043 "bison_parser.cpp" break; - case 205: /* opt_where */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 207: /* opt_where */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2031 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2049 "bison_parser.cpp" break; - case 206: /* opt_group */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 208: /* opt_group */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2037 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2055 "bison_parser.cpp" break; - case 207: /* opt_having */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 209: /* opt_having */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2043 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2061 "bison_parser.cpp" break; - case 208: /* opt_order */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 210: /* opt_order */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2052,11 +2070,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2056 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2074 "bison_parser.cpp" break; - case 209: /* order_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 211: /* order_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2065,35 +2083,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2069 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2087 "bison_parser.cpp" break; - case 210: /* order_desc */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 212: /* order_desc */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2075 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2093 "bison_parser.cpp" break; - case 211: /* opt_order_type */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 213: /* opt_order_type */ +#line 145 "bison_parser.y" { } -#line 2081 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2099 "bison_parser.cpp" break; - case 212: /* opt_top */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 214: /* opt_top */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2087 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2105 "bison_parser.cpp" break; - case 213: /* opt_limit */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 215: /* opt_limit */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2093 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2111 "bison_parser.cpp" break; - case 214: /* expr_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 216: /* expr_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2102,11 +2120,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2106 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2124 "bison_parser.cpp" break; - case 215: /* opt_literal_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 217: /* opt_literal_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2115,11 +2133,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2119 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2137 "bison_parser.cpp" break; - case 216: /* literal_list */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 218: /* literal_list */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2128,185 +2146,185 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2132 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2150 "bison_parser.cpp" break; - case 217: /* expr_alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 219: /* expr_alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2138 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2156 "bison_parser.cpp" break; - case 218: /* expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 220: /* expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2144 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2162 "bison_parser.cpp" break; - case 219: /* operand */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 221: /* operand */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2150 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2168 "bison_parser.cpp" break; - case 220: /* scalar_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 222: /* scalar_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2156 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2174 "bison_parser.cpp" break; - case 221: /* unary_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 223: /* unary_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2162 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2180 "bison_parser.cpp" break; - case 222: /* binary_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 224: /* binary_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2168 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2186 "bison_parser.cpp" break; - case 223: /* logic_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 225: /* logic_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2174 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2192 "bison_parser.cpp" break; - case 224: /* in_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 226: /* in_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2180 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2198 "bison_parser.cpp" break; - case 225: /* case_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 227: /* case_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2186 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2204 "bison_parser.cpp" break; - case 226: /* case_list */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 228: /* case_list */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2192 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2210 "bison_parser.cpp" break; - case 227: /* exists_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 229: /* exists_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2198 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2216 "bison_parser.cpp" break; - case 228: /* comp_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 230: /* comp_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2204 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2222 "bison_parser.cpp" break; - case 229: /* function_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 231: /* function_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2210 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2228 "bison_parser.cpp" break; - case 230: /* extract_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 232: /* extract_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2216 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2234 "bison_parser.cpp" break; - case 231: /* datetime_field */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 233: /* datetime_field */ +#line 145 "bison_parser.y" { } -#line 2222 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2240 "bison_parser.cpp" break; - case 232: /* array_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 234: /* array_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2228 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2246 "bison_parser.cpp" break; - case 233: /* array_index */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 235: /* array_index */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2234 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2252 "bison_parser.cpp" break; - case 234: /* between_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 236: /* between_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2240 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2258 "bison_parser.cpp" break; - case 235: /* column_name */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 237: /* column_name */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2246 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2264 "bison_parser.cpp" break; - case 236: /* literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 238: /* literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2252 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2270 "bison_parser.cpp" break; - case 237: /* string_literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 239: /* string_literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2258 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2276 "bison_parser.cpp" break; - case 238: /* bool_literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 240: /* bool_literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2264 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2282 "bison_parser.cpp" break; - case 239: /* num_literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 241: /* num_literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2270 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2288 "bison_parser.cpp" break; - case 240: /* int_literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 242: /* int_literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2276 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2294 "bison_parser.cpp" break; - case 241: /* null_literal */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 243: /* null_literal */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2282 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2300 "bison_parser.cpp" break; - case 242: /* param_expr */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 244: /* param_expr */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2288 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2306 "bison_parser.cpp" break; - case 243: /* table_ref */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 245: /* table_ref */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2294 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2312 "bison_parser.cpp" break; - case 244: /* table_ref_atomic */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 246: /* table_ref_atomic */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2300 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2318 "bison_parser.cpp" break; - case 245: /* nonjoin_table_ref_atomic */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 247: /* nonjoin_table_ref_atomic */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2306 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2324 "bison_parser.cpp" break; - case 246: /* table_ref_commalist */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 248: /* table_ref_commalist */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2315,95 +2333,95 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2319 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2337 "bison_parser.cpp" break; - case 247: /* table_ref_name */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 249: /* table_ref_name */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2325 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2343 "bison_parser.cpp" break; - case 248: /* table_ref_name_no_alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 250: /* table_ref_name_no_alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2331 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2349 "bison_parser.cpp" break; - case 249: /* table_name */ -#line 144 "bison_parser.y" /* yacc.c:1257 */ + case 251: /* table_name */ +#line 146 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2337 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2355 "bison_parser.cpp" break; - case 250: /* table_alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 252: /* table_alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2343 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2361 "bison_parser.cpp" break; - case 251: /* opt_table_alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 253: /* opt_table_alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2349 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2367 "bison_parser.cpp" break; - case 252: /* alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 254: /* alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2355 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2373 "bison_parser.cpp" break; - case 253: /* opt_alias */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 255: /* opt_alias */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2361 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2379 "bison_parser.cpp" break; - case 254: /* opt_with_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 256: /* opt_with_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2367 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2385 "bison_parser.cpp" break; - case 255: /* with_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 257: /* with_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2373 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2391 "bison_parser.cpp" break; - case 256: /* with_description_list */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 258: /* with_description_list */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2379 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2397 "bison_parser.cpp" break; - case 257: /* with_description */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 259: /* with_description */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2385 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2403 "bison_parser.cpp" break; - case 258: /* join_clause */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 260: /* join_clause */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2391 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2409 "bison_parser.cpp" break; - case 259: /* opt_join_type */ -#line 143 "bison_parser.y" /* yacc.c:1257 */ + case 261: /* opt_join_type */ +#line 145 "bison_parser.y" { } -#line 2397 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2415 "bison_parser.cpp" break; - case 260: /* join_condition */ -#line 154 "bison_parser.y" /* yacc.c:1257 */ + case 262: /* join_condition */ +#line 156 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2403 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2421 "bison_parser.cpp" break; - case 262: /* ident_commalist */ -#line 146 "bison_parser.y" /* yacc.c:1257 */ + case 264: /* ident_commalist */ +#line 148 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2412,7 +2430,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2416 "bison_parser.cpp" /* yacc.c:1257 */ +#line 2434 "bison_parser.cpp" break; default: @@ -2519,7 +2537,7 @@ YYLTYPE yylloc = yyloc_default; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 73 "bison_parser.y" /* yacc.c:1437 */ +#line 73 "bison_parser.y" { // Initialize yylloc.first_column = 0; @@ -2530,7 +2548,8 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2534 "bison_parser.cpp" /* yacc.c:1437 */ +#line 2552 "bison_parser.cpp" + yylsp[0] = yylloc; goto yysetstate; @@ -2548,6 +2567,8 @@ yynewstate: | yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) @@ -2615,8 +2636,6 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) YYACCEPT; @@ -2721,8 +2740,8 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 258 "bison_parser.y" /* yacc.c:1667 */ + case 2: +#line 264 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2740,248 +2759,313 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2744 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2763 "bison_parser.cpp" break; case 3: -#line 279 "bison_parser.y" /* yacc.c:1667 */ +#line 285 "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 2755 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2774 "bison_parser.cpp" break; case 4: -#line 285 "bison_parser.y" /* yacc.c:1667 */ +#line 291 "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 2766 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2785 "bison_parser.cpp" break; case 5: -#line 294 "bison_parser.y" /* yacc.c:1667 */ +#line 300 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2775 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2794 "bison_parser.cpp" break; case 6: -#line 298 "bison_parser.y" /* yacc.c:1667 */ +#line 304 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2784 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2803 "bison_parser.cpp" break; case 7: -#line 302 "bison_parser.y" /* yacc.c:1667 */ +#line 308 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2792 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2811 "bison_parser.cpp" break; case 8: -#line 309 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2798 "bison_parser.cpp" /* yacc.c:1667 */ +#line 311 "bison_parser.y" + { + (yyval.statement) = (yyvsp[0].import_stmt); + } +#line 2819 "bison_parser.cpp" break; case 9: -#line 310 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2804 "bison_parser.cpp" /* yacc.c:1667 */ +#line 314 "bison_parser.y" + { + (yyval.statement) = (yyvsp[0].export_stmt); + } +#line 2827 "bison_parser.cpp" break; case 10: -#line 311 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2810 "bison_parser.cpp" /* yacc.c:1667 */ +#line 321 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].select_stmt); } +#line 2833 "bison_parser.cpp" break; case 11: -#line 312 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2816 "bison_parser.cpp" /* yacc.c:1667 */ +#line 322 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].create_stmt); } +#line 2839 "bison_parser.cpp" break; case 12: -#line 313 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2822 "bison_parser.cpp" /* yacc.c:1667 */ +#line 323 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].insert_stmt); } +#line 2845 "bison_parser.cpp" break; case 13: -#line 314 "bison_parser.y" /* yacc.c:1667 */ +#line 324 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2828 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2851 "bison_parser.cpp" break; case 14: -#line 315 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2834 "bison_parser.cpp" /* yacc.c:1667 */ +#line 325 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].delete_stmt); } +#line 2857 "bison_parser.cpp" break; case 15: -#line 316 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2840 "bison_parser.cpp" /* yacc.c:1667 */ +#line 326 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].update_stmt); } +#line 2863 "bison_parser.cpp" break; case 16: -#line 317 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2846 "bison_parser.cpp" /* yacc.c:1667 */ +#line 327 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].drop_stmt); } +#line 2869 "bison_parser.cpp" break; case 17: -#line 326 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2852 "bison_parser.cpp" /* yacc.c:1667 */ +#line 328 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].exec_stmt); } +#line 2875 "bison_parser.cpp" break; case 18: -#line 327 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = nullptr; } -#line 2858 "bison_parser.cpp" /* yacc.c:1667 */ +#line 337 "bison_parser.y" + { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } +#line 2881 "bison_parser.cpp" break; case 19: -#line 332 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2864 "bison_parser.cpp" /* yacc.c:1667 */ +#line 338 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 2887 "bison_parser.cpp" break; case 20: -#line 333 "bison_parser.y" /* yacc.c:1667 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2870 "bison_parser.cpp" /* yacc.c:1667 */ +#line 343 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 2893 "bison_parser.cpp" break; case 21: -#line 337 "bison_parser.y" /* yacc.c:1667 */ +#line 344 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 2899 "bison_parser.cpp" + break; + + case 22: +#line 348 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2879 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2908 "bison_parser.cpp" break; - case 22: -#line 341 "bison_parser.y" /* yacc.c:1667 */ + case 23: +#line 352 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2889 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2918 "bison_parser.cpp" break; - case 23: -#line 353 "bison_parser.y" /* yacc.c:1667 */ + case 24: +#line 364 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2899 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2928 "bison_parser.cpp" break; - case 25: -#line 363 "bison_parser.y" /* yacc.c:1667 */ + case 26: +#line 374 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2908 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2937 "bison_parser.cpp" break; - case 26: -#line 367 "bison_parser.y" /* yacc.c:1667 */ + case 27: +#line 378 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2918 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2947 "bison_parser.cpp" break; - case 27: -#line 379 "bison_parser.y" /* yacc.c:1667 */ + case 28: +#line 392 "bison_parser.y" { - (yyval.import_stmt) = new ImportStatement((ImportType) (yyvsp[-4].uval)); + (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 2929 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 28: -#line 388 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kImportCSV; } -#line 2935 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2958 "bison_parser.cpp" break; case 29: -#line 392 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2941 "bison_parser.cpp" /* yacc.c:1667 */ +#line 398 "bison_parser.y" + { + (yyval.import_stmt) = new ImportStatement((yyvsp[0].import_type_t)); + (yyval.import_stmt)->filePath = (yyvsp[-1].sval); + (yyval.import_stmt)->schema = (yyvsp[-3].table_name).schema; + (yyval.import_stmt)->tableName = (yyvsp[-3].table_name).name; + } +#line 2969 "bison_parser.cpp" break; case 30: -#line 402 "bison_parser.y" /* yacc.c:1667 */ +#line 407 "bison_parser.y" { - (yyval.show_stmt) = new ShowStatement(kShowTables); + if (strcasecmp((yyvsp[0].sval), "csv") == 0) { + (yyval.import_type_t) = kImportCSV; + } else if (strcasecmp((yyvsp[0].sval), "tbl") == 0) { + (yyval.import_type_t) = kImportTbl; + } else if (strcasecmp((yyvsp[0].sval), "binary") == 0 || strcasecmp((yyvsp[0].sval), "bin") == 0) { + (yyval.import_type_t) = kImportBinary; + } else { + free((yyvsp[0].sval)); + yyerror(&yyloc, result, scanner, "File type is unknown."); + YYERROR; + } + free((yyvsp[0].sval)); } -#line 2949 "bison_parser.cpp" /* yacc.c:1667 */ +#line 2988 "bison_parser.cpp" break; case 31: -#line 405 "bison_parser.y" /* yacc.c:1667 */ - { - (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 2959 "bison_parser.cpp" /* yacc.c:1667 */ +#line 424 "bison_parser.y" + { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } +#line 2994 "bison_parser.cpp" break; case 32: -#line 410 "bison_parser.y" /* yacc.c:1667 */ +#line 428 "bison_parser.y" + { + (yyval.import_type_t) = (yyvsp[0].import_type_t); + } +#line 3002 "bison_parser.cpp" + break; + + case 33: +#line 431 "bison_parser.y" + { (yyval.import_type_t) = kImportAuto; } +#line 3008 "bison_parser.cpp" + break; + + case 34: +#line 440 "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 3019 "bison_parser.cpp" + break; + + case 35: +#line 454 "bison_parser.y" + { + (yyval.show_stmt) = new ShowStatement(kShowTables); + } +#line 3027 "bison_parser.cpp" + break; + + case 36: +#line 457 "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 2969 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3037 "bison_parser.cpp" break; - case 33: -#line 424 "bison_parser.y" /* yacc.c:1667 */ + case 37: +#line 462 "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 3047 "bison_parser.cpp" + break; + + case 38: +#line 476 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); (yyval.create_stmt)->schema = (yyvsp[-4].table_name).schema; (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; + if (strcasecmp((yyvsp[-2].sval), "tbl") != 0) { + free((yyvsp[-2].sval)); + yyerror(&yyloc, result, scanner, "File type is unknown."); + YYERROR; + } + free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2981 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3065 "bison_parser.cpp" break; - case 34: -#line 431 "bison_parser.y" /* yacc.c:1667 */ + case 39: +#line 489 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2989,11 +3073,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2993 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3077 "bison_parser.cpp" break; - case 35: -#line 438 "bison_parser.y" /* yacc.c:1667 */ + case 40: +#line 496 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3001,11 +3085,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3005 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3089 "bison_parser.cpp" break; - case 36: -#line 445 "bison_parser.y" /* yacc.c:1667 */ + case 41: +#line 503 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3014,174 +3098,174 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3018 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 37: -#line 456 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = true; } -#line 3024 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 38: -#line 457 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = false; } -#line 3030 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 39: -#line 461 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 3036 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 40: -#line 462 "bison_parser.y" /* yacc.c:1667 */ - { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 3042 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 41: -#line 466 "bison_parser.y" /* yacc.c:1667 */ - { - (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); - } -#line 3050 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3102 "bison_parser.cpp" break; case 42: -#line 472 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3056 "bison_parser.cpp" /* yacc.c:1667 */ +#line 514 "bison_parser.y" + { (yyval.bval) = true; } +#line 3108 "bison_parser.cpp" break; case 43: -#line 473 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3062 "bison_parser.cpp" /* yacc.c:1667 */ +#line 515 "bison_parser.y" + { (yyval.bval) = false; } +#line 3114 "bison_parser.cpp" break; case 44: -#line 474 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3068 "bison_parser.cpp" /* yacc.c:1667 */ +#line 519 "bison_parser.y" + { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } +#line 3120 "bison_parser.cpp" break; case 45: -#line 475 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3074 "bison_parser.cpp" /* yacc.c:1667 */ +#line 520 "bison_parser.y" + { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } +#line 3126 "bison_parser.cpp" break; case 46: -#line 476 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3080 "bison_parser.cpp" /* yacc.c:1667 */ +#line 524 "bison_parser.y" + { + (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); + } +#line 3134 "bison_parser.cpp" break; case 47: -#line 477 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3086 "bison_parser.cpp" /* yacc.c:1667 */ +#line 530 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3140 "bison_parser.cpp" break; case 48: -#line 478 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3092 "bison_parser.cpp" /* yacc.c:1667 */ +#line 531 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } +#line 3146 "bison_parser.cpp" break; case 49: -#line 479 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3098 "bison_parser.cpp" /* yacc.c:1667 */ +#line 532 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } +#line 3152 "bison_parser.cpp" break; case 50: -#line 483 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = true; } -#line 3104 "bison_parser.cpp" /* yacc.c:1667 */ +#line 533 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } +#line 3158 "bison_parser.cpp" break; case 51: -#line 484 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = false; } -#line 3110 "bison_parser.cpp" /* yacc.c:1667 */ +#line 534 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 3164 "bison_parser.cpp" break; case 52: -#line 485 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = false; } -#line 3116 "bison_parser.cpp" /* yacc.c:1667 */ +#line 535 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3170 "bison_parser.cpp" break; case 53: -#line 495 "bison_parser.y" /* yacc.c:1667 */ +#line 536 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 3176 "bison_parser.cpp" + break; + + case 54: +#line 537 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 3182 "bison_parser.cpp" + break; + + case 55: +#line 541 "bison_parser.y" + { (yyval.bval) = true; } +#line 3188 "bison_parser.cpp" + break; + + case 56: +#line 542 "bison_parser.y" + { (yyval.bval) = false; } +#line 3194 "bison_parser.cpp" + break; + + case 57: +#line 543 "bison_parser.y" + { (yyval.bval) = false; } +#line 3200 "bison_parser.cpp" + break; + + case 58: +#line 553 "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 3127 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3211 "bison_parser.cpp" break; - case 54: -#line 501 "bison_parser.y" /* yacc.c:1667 */ + case 59: +#line 559 "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 3138 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3222 "bison_parser.cpp" break; - case 55: -#line 507 "bison_parser.y" /* yacc.c:1667 */ + case 60: +#line 565 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3148 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3232 "bison_parser.cpp" break; - case 56: -#line 515 "bison_parser.y" /* yacc.c:1667 */ + case 61: +#line 573 "bison_parser.y" { (yyval.bval) = true; } -#line 3154 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3238 "bison_parser.cpp" break; - case 57: -#line 516 "bison_parser.y" /* yacc.c:1667 */ + case 62: +#line 574 "bison_parser.y" { (yyval.bval) = false; } -#line 3160 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3244 "bison_parser.cpp" break; - case 58: -#line 525 "bison_parser.y" /* yacc.c:1667 */ + case 63: +#line 583 "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 3171 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3255 "bison_parser.cpp" break; - case 59: -#line 534 "bison_parser.y" /* yacc.c:1667 */ + case 64: +#line 592 "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 3181 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3265 "bison_parser.cpp" break; - case 60: -#line 547 "bison_parser.y" /* yacc.c:1667 */ + case 65: +#line 605 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3189,11 +3273,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3193 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3277 "bison_parser.cpp" break; - case 61: -#line 554 "bison_parser.y" /* yacc.c:1667 */ + case 66: +#line 612 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3201,74 +3285,74 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3205 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3289 "bison_parser.cpp" break; - case 62: -#line 565 "bison_parser.y" /* yacc.c:1667 */ + case 67: +#line 623 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3211 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3295 "bison_parser.cpp" break; - case 63: -#line 566 "bison_parser.y" /* yacc.c:1667 */ + case 68: +#line 624 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 3217 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3301 "bison_parser.cpp" break; - case 64: -#line 576 "bison_parser.y" /* yacc.c:1667 */ + case 69: +#line 634 "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 3228 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3312 "bison_parser.cpp" break; - case 65: -#line 585 "bison_parser.y" /* yacc.c:1667 */ + case 70: +#line 643 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3234 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3318 "bison_parser.cpp" break; - case 66: -#line 586 "bison_parser.y" /* yacc.c:1667 */ + case 71: +#line 644 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3240 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3324 "bison_parser.cpp" break; - case 67: -#line 590 "bison_parser.y" /* yacc.c:1667 */ + case 72: +#line 648 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3250 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3334 "bison_parser.cpp" break; - case 68: -#line 602 "bison_parser.y" /* yacc.c:1667 */ + case 73: +#line 660 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3259 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3343 "bison_parser.cpp" break; - case 69: -#line 606 "bison_parser.y" /* yacc.c:1667 */ + case 74: +#line 664 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3268 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3352 "bison_parser.cpp" break; - case 70: -#line 610 "bison_parser.y" /* yacc.c:1667 */ + case 75: +#line 668 "bison_parser.y" { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3284,23 +3368,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3288 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3372 "bison_parser.cpp" break; - case 71: -#line 628 "bison_parser.y" /* yacc.c:1667 */ + case 76: +#line 686 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3294 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3378 "bison_parser.cpp" break; - case 72: -#line 629 "bison_parser.y" /* yacc.c:1667 */ + case 77: +#line 687 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3300 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3384 "bison_parser.cpp" break; - case 75: -#line 638 "bison_parser.y" /* yacc.c:1667 */ + case 80: +#line 696 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3311,11 +3395,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3315 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3399 "bison_parser.cpp" break; - case 76: -#line 648 "bison_parser.y" /* yacc.c:1667 */ + case 81: +#line 706 "bison_parser.y" { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3330,11 +3414,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3334 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3418 "bison_parser.cpp" break; - case 83: -#line 680 "bison_parser.y" /* yacc.c:1667 */ + case 88: +#line 738 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3344,213 +3428,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3348 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 84: -#line 692 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = true; } -#line 3354 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 85: -#line 693 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.bval) = false; } -#line 3360 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 87: -#line 701 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.table) = (yyvsp[0].table); } -#line 3366 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 88: -#line 702 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.table) = nullptr; } -#line 3372 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3432 "bison_parser.cpp" break; case 89: -#line 705 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.table) = (yyvsp[0].table); } -#line 3378 "bison_parser.cpp" /* yacc.c:1667 */ +#line 750 "bison_parser.y" + { (yyval.bval) = true; } +#line 3438 "bison_parser.cpp" break; case 90: -#line 710 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3384 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 91: -#line 711 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = nullptr; } -#line 3390 "bison_parser.cpp" /* yacc.c:1667 */ +#line 751 "bison_parser.y" + { (yyval.bval) = false; } +#line 3444 "bison_parser.cpp" break; case 92: -#line 715 "bison_parser.y" /* yacc.c:1667 */ +#line 759 "bison_parser.y" + { (yyval.table) = (yyvsp[0].table); } +#line 3450 "bison_parser.cpp" + break; + + case 93: +#line 760 "bison_parser.y" + { (yyval.table) = nullptr; } +#line 3456 "bison_parser.cpp" + break; + + case 94: +#line 764 "bison_parser.y" + { (yyval.table) = (yyvsp[0].table); } +#line 3462 "bison_parser.cpp" + break; + + case 95: +#line 769 "bison_parser.y" + { (yyval.expr) = (yyvsp[0].expr); } +#line 3468 "bison_parser.cpp" + break; + + case 96: +#line 770 "bison_parser.y" + { (yyval.expr) = nullptr; } +#line 3474 "bison_parser.cpp" + break; + + case 97: +#line 774 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3400 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 93: -#line 720 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.group_t) = nullptr; } -#line 3406 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 94: -#line 724 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = (yyvsp[0].expr); } -#line 3412 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 95: -#line 725 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = nullptr; } -#line 3418 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 96: -#line 728 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3424 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 97: -#line 729 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_vec) = nullptr; } -#line 3430 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3484 "bison_parser.cpp" break; case 98: -#line 733 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3436 "bison_parser.cpp" /* yacc.c:1667 */ +#line 779 "bison_parser.y" + { (yyval.group_t) = nullptr; } +#line 3490 "bison_parser.cpp" break; case 99: -#line 734 "bison_parser.y" /* yacc.c:1667 */ - { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3442 "bison_parser.cpp" /* yacc.c:1667 */ +#line 783 "bison_parser.y" + { (yyval.expr) = (yyvsp[0].expr); } +#line 3496 "bison_parser.cpp" break; case 100: -#line 738 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3448 "bison_parser.cpp" /* yacc.c:1667 */ +#line 784 "bison_parser.y" + { (yyval.expr) = nullptr; } +#line 3502 "bison_parser.cpp" break; case 101: -#line 742 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_type) = kOrderAsc; } -#line 3454 "bison_parser.cpp" /* yacc.c:1667 */ +#line 788 "bison_parser.y" + { (yyval.order_vec) = (yyvsp[0].order_vec); } +#line 3508 "bison_parser.cpp" break; case 102: -#line 743 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_type) = kOrderDesc; } -#line 3460 "bison_parser.cpp" /* yacc.c:1667 */ +#line 789 "bison_parser.y" + { (yyval.order_vec) = nullptr; } +#line 3514 "bison_parser.cpp" break; case 103: -#line 744 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.order_type) = kOrderAsc; } -#line 3466 "bison_parser.cpp" /* yacc.c:1667 */ +#line 793 "bison_parser.y" + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } +#line 3520 "bison_parser.cpp" break; case 104: -#line 750 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3472 "bison_parser.cpp" /* yacc.c:1667 */ +#line 794 "bison_parser.y" + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } +#line 3526 "bison_parser.cpp" break; case 105: -#line 751 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = nullptr; } -#line 3478 "bison_parser.cpp" /* yacc.c:1667 */ +#line 798 "bison_parser.y" + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } +#line 3532 "bison_parser.cpp" break; case 106: -#line 755 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 3484 "bison_parser.cpp" /* yacc.c:1667 */ +#line 802 "bison_parser.y" + { (yyval.order_type) = kOrderAsc; } +#line 3538 "bison_parser.cpp" break; case 107: -#line 756 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3490 "bison_parser.cpp" /* yacc.c:1667 */ +#line 803 "bison_parser.y" + { (yyval.order_type) = kOrderDesc; } +#line 3544 "bison_parser.cpp" break; case 108: -#line 757 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3496 "bison_parser.cpp" /* yacc.c:1667 */ +#line 804 "bison_parser.y" + { (yyval.order_type) = kOrderAsc; } +#line 3550 "bison_parser.cpp" break; case 109: -#line 758 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 3502 "bison_parser.cpp" /* yacc.c:1667 */ +#line 810 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } +#line 3556 "bison_parser.cpp" break; case 110: -#line 759 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 3508 "bison_parser.cpp" /* yacc.c:1667 */ +#line 811 "bison_parser.y" + { (yyval.limit) = nullptr; } +#line 3562 "bison_parser.cpp" break; case 111: -#line 760 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.limit) = nullptr; } -#line 3514 "bison_parser.cpp" /* yacc.c:1667 */ +#line 815 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } +#line 3568 "bison_parser.cpp" break; case 112: -#line 767 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3520 "bison_parser.cpp" /* yacc.c:1667 */ +#line 816 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } +#line 3574 "bison_parser.cpp" break; case 113: -#line 768 "bison_parser.y" /* yacc.c:1667 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3526 "bison_parser.cpp" /* yacc.c:1667 */ +#line 817 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3580 "bison_parser.cpp" break; case 114: -#line 772 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 3532 "bison_parser.cpp" /* yacc.c:1667 */ +#line 818 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, nullptr); } +#line 3586 "bison_parser.cpp" break; case 115: -#line 773 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = nullptr; } -#line 3538 "bison_parser.cpp" /* yacc.c:1667 */ +#line 819 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } +#line 3592 "bison_parser.cpp" break; case 116: -#line 777 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3544 "bison_parser.cpp" /* yacc.c:1667 */ +#line 820 "bison_parser.y" + { (yyval.limit) = nullptr; } +#line 3598 "bison_parser.cpp" break; case 117: -#line 778 "bison_parser.y" /* yacc.c:1667 */ - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3550 "bison_parser.cpp" /* yacc.c:1667 */ +#line 827 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3604 "bison_parser.cpp" break; case 118: -#line 782 "bison_parser.y" /* yacc.c:1667 */ +#line 828 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3610 "bison_parser.cpp" + break; + + case 119: +#line 832 "bison_parser.y" + { (yyval.expr_vec) = (yyvsp[0].expr_vec); } +#line 3616 "bison_parser.cpp" + break; + + case 120: +#line 833 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 3622 "bison_parser.cpp" + break; + + case 121: +#line 837 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3628 "bison_parser.cpp" + break; + + case 122: +#line 838 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3634 "bison_parser.cpp" + break; + + case 123: +#line 842 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3558,415 +3642,415 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3562 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3646 "bison_parser.cpp" break; - case 124: -#line 800 "bison_parser.y" /* yacc.c:1667 */ + case 129: +#line 860 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 3568 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 133: -#line 809 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3574 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 136: -#line 818 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3580 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 137: -#line 819 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3586 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3652 "bison_parser.cpp" break; case 138: -#line 820 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3592 "bison_parser.cpp" /* yacc.c:1667 */ +#line 869 "bison_parser.y" + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } +#line 3658 "bison_parser.cpp" break; - case 139: -#line 821 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3598 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 140: -#line 822 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3604 "bison_parser.cpp" /* yacc.c:1667 */ + case 141: +#line 878 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } +#line 3664 "bison_parser.cpp" break; case 142: -#line 827 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3610 "bison_parser.cpp" /* yacc.c:1667 */ +#line 879 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } +#line 3670 "bison_parser.cpp" break; case 143: -#line 828 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3616 "bison_parser.cpp" /* yacc.c:1667 */ +#line 880 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } +#line 3676 "bison_parser.cpp" break; case 144: -#line 829 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3622 "bison_parser.cpp" /* yacc.c:1667 */ +#line 881 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } +#line 3682 "bison_parser.cpp" break; case 145: -#line 830 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3628 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 146: -#line 831 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3634 "bison_parser.cpp" /* yacc.c:1667 */ +#line 882 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } +#line 3688 "bison_parser.cpp" break; case 147: -#line 832 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3640 "bison_parser.cpp" /* yacc.c:1667 */ +#line 887 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } +#line 3694 "bison_parser.cpp" break; case 148: -#line 833 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3646 "bison_parser.cpp" /* yacc.c:1667 */ +#line 888 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } +#line 3700 "bison_parser.cpp" break; case 149: -#line 834 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3652 "bison_parser.cpp" /* yacc.c:1667 */ +#line 889 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } +#line 3706 "bison_parser.cpp" break; case 150: -#line 835 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3658 "bison_parser.cpp" /* yacc.c:1667 */ +#line 890 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } +#line 3712 "bison_parser.cpp" break; case 151: -#line 836 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3664 "bison_parser.cpp" /* yacc.c:1667 */ +#line 891 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } +#line 3718 "bison_parser.cpp" break; case 152: -#line 840 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3670 "bison_parser.cpp" /* yacc.c:1667 */ +#line 892 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } +#line 3724 "bison_parser.cpp" break; case 153: -#line 841 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3676 "bison_parser.cpp" /* yacc.c:1667 */ +#line 893 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } +#line 3730 "bison_parser.cpp" break; case 154: -#line 845 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3682 "bison_parser.cpp" /* yacc.c:1667 */ +#line 894 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } +#line 3736 "bison_parser.cpp" break; case 155: -#line 846 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3688 "bison_parser.cpp" /* yacc.c:1667 */ +#line 895 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } +#line 3742 "bison_parser.cpp" break; case 156: -#line 847 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3694 "bison_parser.cpp" /* yacc.c:1667 */ +#line 896 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } +#line 3748 "bison_parser.cpp" break; case 157: -#line 848 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3700 "bison_parser.cpp" /* yacc.c:1667 */ +#line 900 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } +#line 3754 "bison_parser.cpp" break; case 158: -#line 854 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3706 "bison_parser.cpp" /* yacc.c:1667 */ +#line 901 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } +#line 3760 "bison_parser.cpp" break; case 159: -#line 855 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3712 "bison_parser.cpp" /* yacc.c:1667 */ +#line 905 "bison_parser.y" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } +#line 3766 "bison_parser.cpp" break; case 160: -#line 856 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3718 "bison_parser.cpp" /* yacc.c:1667 */ +#line 906 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } +#line 3772 "bison_parser.cpp" break; case 161: -#line 857 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3724 "bison_parser.cpp" /* yacc.c:1667 */ +#line 907 "bison_parser.y" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } +#line 3778 "bison_parser.cpp" break; case 162: -#line 861 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3730 "bison_parser.cpp" /* yacc.c:1667 */ +#line 908 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } +#line 3784 "bison_parser.cpp" break; case 163: -#line 862 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3736 "bison_parser.cpp" /* yacc.c:1667 */ +#line 914 "bison_parser.y" + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } +#line 3790 "bison_parser.cpp" break; case 164: -#line 866 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3742 "bison_parser.cpp" /* yacc.c:1667 */ +#line 915 "bison_parser.y" + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3796 "bison_parser.cpp" break; case 165: -#line 867 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3748 "bison_parser.cpp" /* yacc.c:1667 */ +#line 916 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } +#line 3802 "bison_parser.cpp" break; case 166: -#line 871 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3754 "bison_parser.cpp" /* yacc.c:1667 */ +#line 917 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } +#line 3808 "bison_parser.cpp" break; case 167: -#line 872 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3760 "bison_parser.cpp" /* yacc.c:1667 */ +#line 921 "bison_parser.y" + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3814 "bison_parser.cpp" break; case 168: -#line 873 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3766 "bison_parser.cpp" /* yacc.c:1667 */ +#line 922 "bison_parser.y" + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } +#line 3820 "bison_parser.cpp" break; case 169: -#line 874 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3772 "bison_parser.cpp" /* yacc.c:1667 */ +#line 926 "bison_parser.y" + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } +#line 3826 "bison_parser.cpp" break; case 170: -#line 875 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3778 "bison_parser.cpp" /* yacc.c:1667 */ +#line 927 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } +#line 3832 "bison_parser.cpp" break; case 171: -#line 876 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3784 "bison_parser.cpp" /* yacc.c:1667 */ +#line 931 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3838 "bison_parser.cpp" break; case 172: -#line 877 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3790 "bison_parser.cpp" /* yacc.c:1667 */ +#line 932 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } +#line 3844 "bison_parser.cpp" break; case 173: -#line 881 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3796 "bison_parser.cpp" /* yacc.c:1667 */ +#line 933 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } +#line 3850 "bison_parser.cpp" break; case 174: -#line 882 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3802 "bison_parser.cpp" /* yacc.c:1667 */ +#line 934 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } +#line 3856 "bison_parser.cpp" break; case 175: -#line 886 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 3808 "bison_parser.cpp" /* yacc.c:1667 */ +#line 935 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } +#line 3862 "bison_parser.cpp" break; case 176: -#line 890 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeSecond; } -#line 3814 "bison_parser.cpp" /* yacc.c:1667 */ +#line 936 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } +#line 3868 "bison_parser.cpp" break; case 177: -#line 891 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeMinute; } -#line 3820 "bison_parser.cpp" /* yacc.c:1667 */ +#line 937 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } +#line 3874 "bison_parser.cpp" break; case 178: -#line 892 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeHour; } -#line 3826 "bison_parser.cpp" /* yacc.c:1667 */ +#line 941 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } +#line 3880 "bison_parser.cpp" break; case 179: -#line 893 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeDay; } -#line 3832 "bison_parser.cpp" /* yacc.c:1667 */ +#line 942 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } +#line 3886 "bison_parser.cpp" break; case 180: -#line 894 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeMonth; } -#line 3838 "bison_parser.cpp" /* yacc.c:1667 */ +#line 946 "bison_parser.y" + { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } +#line 3892 "bison_parser.cpp" break; case 181: -#line 895 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.datetime_field) = kDatetimeYear; } -#line 3844 "bison_parser.cpp" /* yacc.c:1667 */ +#line 950 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeSecond; } +#line 3898 "bison_parser.cpp" break; case 182: -#line 898 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3850 "bison_parser.cpp" /* yacc.c:1667 */ +#line 951 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeMinute; } +#line 3904 "bison_parser.cpp" break; case 183: -#line 902 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3856 "bison_parser.cpp" /* yacc.c:1667 */ +#line 952 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeHour; } +#line 3910 "bison_parser.cpp" break; case 184: -#line 906 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3862 "bison_parser.cpp" /* yacc.c:1667 */ +#line 953 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeDay; } +#line 3916 "bison_parser.cpp" break; case 185: -#line 910 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3868 "bison_parser.cpp" /* yacc.c:1667 */ +#line 954 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeMonth; } +#line 3922 "bison_parser.cpp" break; case 186: -#line 911 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3874 "bison_parser.cpp" /* yacc.c:1667 */ +#line 955 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeYear; } +#line 3928 "bison_parser.cpp" break; case 187: -#line 912 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeStar(); } -#line 3880 "bison_parser.cpp" /* yacc.c:1667 */ +#line 959 "bison_parser.y" + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } +#line 3934 "bison_parser.cpp" break; case 188: -#line 913 "bison_parser.y" /* yacc.c:1667 */ +#line 963 "bison_parser.y" + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } +#line 3940 "bison_parser.cpp" + break; + + case 189: +#line 967 "bison_parser.y" + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3946 "bison_parser.cpp" + break; + + case 190: +#line 971 "bison_parser.y" + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } +#line 3952 "bison_parser.cpp" + break; + + case 191: +#line 972 "bison_parser.y" + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } +#line 3958 "bison_parser.cpp" + break; + + case 192: +#line 973 "bison_parser.y" + { (yyval.expr) = Expr::makeStar(); } +#line 3964 "bison_parser.cpp" + break; + + case 193: +#line 974 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3886 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 194: -#line 925 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3892 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 195: -#line 929 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeLiteral(true); } -#line 3898 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 196: -#line 930 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeLiteral(false); } -#line 3904 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 197: -#line 934 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3910 "bison_parser.cpp" /* yacc.c:1667 */ +#line 3970 "bison_parser.cpp" break; case 199: -#line 939 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3916 "bison_parser.cpp" /* yacc.c:1667 */ +#line 986 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3976 "bison_parser.cpp" break; case 200: -#line 943 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3922 "bison_parser.cpp" /* yacc.c:1667 */ +#line 990 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral(true); } +#line 3982 "bison_parser.cpp" break; case 201: -#line 947 "bison_parser.y" /* yacc.c:1667 */ +#line 991 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral(false); } +#line 3988 "bison_parser.cpp" + break; + + case 202: +#line 995 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3994 "bison_parser.cpp" + break; + + case 204: +#line 1000 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 4000 "bison_parser.cpp" + break; + + case 205: +#line 1004 "bison_parser.y" + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 4006 "bison_parser.cpp" + break; + + case 206: +#line 1008 "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 3932 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4016 "bison_parser.cpp" break; - case 203: -#line 960 "bison_parser.y" /* yacc.c:1667 */ + case 208: +#line 1021 "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 3943 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4027 "bison_parser.cpp" break; - case 207: -#line 976 "bison_parser.y" /* yacc.c:1667 */ + case 212: +#line 1037 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3954 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4038 "bison_parser.cpp" break; - case 208: -#line 985 "bison_parser.y" /* yacc.c:1667 */ + case 213: +#line 1046 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3960 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4044 "bison_parser.cpp" break; - case 209: -#line 986 "bison_parser.y" /* yacc.c:1667 */ + case 214: +#line 1047 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3966 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4050 "bison_parser.cpp" break; - case 210: -#line 991 "bison_parser.y" /* yacc.c:1667 */ + case 215: +#line 1052 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3974,103 +4058,103 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3978 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4062 "bison_parser.cpp" break; - case 211: -#line 1002 "bison_parser.y" /* yacc.c:1667 */ + case 216: +#line 1063 "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 3988 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 212: -#line 1011 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3994 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 213: -#line 1012 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 4000 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 215: -#line 1018 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 4006 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4072 "bison_parser.cpp" break; case 217: -#line 1024 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.alias_t) = nullptr; } -#line 4012 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1072 "bison_parser.y" + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} +#line 4078 "bison_parser.cpp" break; case 218: -#line 1028 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4018 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1073 "bison_parser.y" + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 4084 "bison_parser.cpp" break; - case 219: -#line 1029 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4024 "bison_parser.cpp" /* yacc.c:1667 */ + case 220: +#line 1079 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 4090 "bison_parser.cpp" break; - case 221: -#line 1035 "bison_parser.y" /* yacc.c:1667 */ + case 222: +#line 1085 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4030 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4096 "bison_parser.cpp" break; case 223: -#line 1044 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.with_description_vec) = nullptr; } -#line 4036 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1090 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4102 "bison_parser.cpp" break; case 224: -#line 1048 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 4042 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1091 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4108 "bison_parser.cpp" break; - case 225: -#line 1052 "bison_parser.y" /* yacc.c:1667 */ + case 226: +#line 1097 "bison_parser.y" + { (yyval.alias_t) = nullptr; } +#line 4114 "bison_parser.cpp" + break; + + case 228: +#line 1107 "bison_parser.y" + { (yyval.with_description_vec) = nullptr; } +#line 4120 "bison_parser.cpp" + break; + + case 229: +#line 1111 "bison_parser.y" + { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } +#line 4126 "bison_parser.cpp" + break; + + case 230: +#line 1115 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4051 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4135 "bison_parser.cpp" break; - case 226: -#line 1056 "bison_parser.y" /* yacc.c:1667 */ + case 231: +#line 1119 "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 4060 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4144 "bison_parser.cpp" break; - case 227: -#line 1063 "bison_parser.y" /* yacc.c:1667 */ + case 232: +#line 1126 "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 4070 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4154 "bison_parser.cpp" break; - case 228: -#line 1077 "bison_parser.y" /* yacc.c:1667 */ + case 233: +#line 1140 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4078,11 +4162,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4082 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4166 "bison_parser.cpp" break; - case 229: -#line 1085 "bison_parser.y" /* yacc.c:1667 */ + case 234: +#line 1148 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4091,11 +4175,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 4095 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4179 "bison_parser.cpp" break; - case 230: -#line 1095 "bison_parser.y" /* yacc.c:1667 */ + case 235: +#line 1158 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4111,83 +4195,84 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 4115 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 231: -#line 1113 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinInner; } -#line 4121 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 232: -#line 1114 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinLeft; } -#line 4127 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 233: -#line 1115 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinLeft; } -#line 4133 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 234: -#line 1116 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinRight; } -#line 4139 "bison_parser.cpp" /* yacc.c:1667 */ - break; - - case 235: -#line 1117 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinRight; } -#line 4145 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4199 "bison_parser.cpp" break; case 236: -#line 1118 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinFull; } -#line 4151 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1176 "bison_parser.y" + { (yyval.uval) = kJoinInner; } +#line 4205 "bison_parser.cpp" break; case 237: -#line 1119 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinFull; } -#line 4157 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1177 "bison_parser.y" + { (yyval.uval) = kJoinLeft; } +#line 4211 "bison_parser.cpp" break; case 238: -#line 1120 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinFull; } -#line 4163 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1178 "bison_parser.y" + { (yyval.uval) = kJoinLeft; } +#line 4217 "bison_parser.cpp" break; case 239: -#line 1121 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinCross; } -#line 4169 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1179 "bison_parser.y" + { (yyval.uval) = kJoinRight; } +#line 4223 "bison_parser.cpp" break; case 240: -#line 1122 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.uval) = kJoinInner; } -#line 4175 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1180 "bison_parser.y" + { (yyval.uval) = kJoinRight; } +#line 4229 "bison_parser.cpp" + break; + + case 241: +#line 1181 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4235 "bison_parser.cpp" + break; + + case 242: +#line 1182 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4241 "bison_parser.cpp" + break; + + case 243: +#line 1183 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4247 "bison_parser.cpp" break; case 244: -#line 1142 "bison_parser.y" /* yacc.c:1667 */ - { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 4181 "bison_parser.cpp" /* yacc.c:1667 */ +#line 1184 "bison_parser.y" + { (yyval.uval) = kJoinCross; } +#line 4253 "bison_parser.cpp" break; case 245: -#line 1143 "bison_parser.y" /* yacc.c:1667 */ +#line 1185 "bison_parser.y" + { (yyval.uval) = kJoinInner; } +#line 4259 "bison_parser.cpp" + break; + + case 249: +#line 1205 "bison_parser.y" + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 4265 "bison_parser.cpp" + break; + + case 250: +#line 1206 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 4187 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4271 "bison_parser.cpp" break; -#line 4191 "bison_parser.cpp" /* yacc.c:1667 */ +#line 4275 "bison_parser.cpp" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4424,7 +4509,7 @@ yyreturn: #endif return yyresult; } -#line 1146 "bison_parser.y" /* yacc.c:1918 */ +#line 1209 "bison_parser.y" /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index c8a60a3..248feda 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C @@ -52,7 +52,7 @@ extern int hsql_debug; #endif /* "%code requires" blocks. */ -#line 35 "bison_parser.y" /* yacc.c:1927 */ +#line 35 "bison_parser.y" // %code requires block @@ -76,7 +76,7 @@ extern int hsql_debug; } \ } -#line 80 "bison_parser.h" /* yacc.c:1927 */ +#line 80 "bison_parser.h" /* Token type. */ #ifndef HSQL_TOKENTYPE @@ -123,80 +123,80 @@ extern int hsql_debug; SQL_EXCEPT = 295, SQL_EXISTS = 296, SQL_EXTRACT = 297, - SQL_GLOBAL = 298, - SQL_HAVING = 299, - SQL_IMPORT = 300, - SQL_INSERT = 301, - SQL_ISNULL = 302, - SQL_OFFSET = 303, - SQL_RENAME = 304, - SQL_SCHEMA = 305, - SQL_SELECT = 306, - SQL_SORTED = 307, - SQL_TABLES = 308, - SQL_UNIQUE = 309, - SQL_UNLOAD = 310, - SQL_UPDATE = 311, - SQL_VALUES = 312, - SQL_AFTER = 313, - SQL_ALTER = 314, - SQL_CROSS = 315, - SQL_DELTA = 316, - SQL_FLOAT = 317, - SQL_GROUP = 318, - SQL_INDEX = 319, - SQL_INNER = 320, - SQL_LIMIT = 321, - SQL_LOCAL = 322, - SQL_MERGE = 323, - SQL_MINUS = 324, - SQL_ORDER = 325, - SQL_OUTER = 326, - SQL_RIGHT = 327, - SQL_TABLE = 328, - SQL_UNION = 329, - SQL_USING = 330, - SQL_WHERE = 331, - SQL_CALL = 332, - SQL_CASE = 333, - SQL_CHAR = 334, - SQL_DATE = 335, - SQL_DESC = 336, - SQL_DROP = 337, - SQL_ELSE = 338, - SQL_FILE = 339, - SQL_FROM = 340, - SQL_FULL = 341, - SQL_HASH = 342, - SQL_HINT = 343, - SQL_INTO = 344, - SQL_JOIN = 345, - SQL_LEFT = 346, - SQL_LIKE = 347, - SQL_LOAD = 348, - SQL_LONG = 349, - SQL_NULL = 350, - SQL_PLAN = 351, - SQL_SHOW = 352, - SQL_TEXT = 353, - SQL_THEN = 354, - SQL_TIME = 355, - SQL_VIEW = 356, - SQL_WHEN = 357, - SQL_WITH = 358, - SQL_ADD = 359, - SQL_ALL = 360, - SQL_AND = 361, - SQL_ASC = 362, - SQL_CSV = 363, - SQL_END = 364, - SQL_FOR = 365, - SQL_INT = 366, - SQL_KEY = 367, - SQL_NOT = 368, - SQL_OFF = 369, - SQL_SET = 370, - SQL_TBL = 371, + SQL_FORMAT = 298, + SQL_GLOBAL = 299, + SQL_HAVING = 300, + SQL_IMPORT = 301, + SQL_INSERT = 302, + SQL_ISNULL = 303, + SQL_OFFSET = 304, + SQL_RENAME = 305, + SQL_SCHEMA = 306, + SQL_SELECT = 307, + SQL_SORTED = 308, + SQL_TABLES = 309, + SQL_UNIQUE = 310, + SQL_UNLOAD = 311, + SQL_UPDATE = 312, + SQL_VALUES = 313, + SQL_AFTER = 314, + SQL_ALTER = 315, + SQL_CROSS = 316, + SQL_DELTA = 317, + SQL_FLOAT = 318, + SQL_GROUP = 319, + SQL_INDEX = 320, + SQL_INNER = 321, + SQL_LIMIT = 322, + SQL_LOCAL = 323, + SQL_MERGE = 324, + SQL_MINUS = 325, + SQL_ORDER = 326, + SQL_OUTER = 327, + SQL_RIGHT = 328, + SQL_TABLE = 329, + SQL_UNION = 330, + SQL_USING = 331, + SQL_WHERE = 332, + SQL_CALL = 333, + SQL_CASE = 334, + SQL_CHAR = 335, + SQL_COPY = 336, + SQL_DATE = 337, + SQL_DESC = 338, + SQL_DROP = 339, + SQL_ELSE = 340, + SQL_FILE = 341, + SQL_FROM = 342, + SQL_FULL = 343, + SQL_HASH = 344, + SQL_HINT = 345, + SQL_INTO = 346, + SQL_JOIN = 347, + SQL_LEFT = 348, + SQL_LIKE = 349, + SQL_LOAD = 350, + SQL_LONG = 351, + SQL_NULL = 352, + SQL_PLAN = 353, + SQL_SHOW = 354, + SQL_TEXT = 355, + SQL_THEN = 356, + SQL_TIME = 357, + SQL_VIEW = 358, + SQL_WHEN = 359, + SQL_WITH = 360, + SQL_ADD = 361, + SQL_ALL = 362, + SQL_AND = 363, + SQL_ASC = 364, + SQL_END = 365, + SQL_FOR = 366, + SQL_INT = 367, + SQL_KEY = 368, + SQL_NOT = 369, + SQL_OFF = 370, + SQL_SET = 371, SQL_TOP = 372, SQL_AS = 373, SQL_BY = 374, @@ -231,10 +231,9 @@ extern int hsql_debug; /* Value type. */ #if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED - union HSQL_STYPE { -#line 95 "bison_parser.y" /* yacc.c:1927 */ +#line 95 "bison_parser.y" double fval; int64_t ival; @@ -245,6 +244,7 @@ union HSQL_STYPE hsql::SQLStatement* statement; hsql::SelectStatement* select_stmt; hsql::ImportStatement* import_stmt; + hsql::ExportStatement* export_stmt; hsql::CreateStatement* create_stmt; hsql::InsertStatement* insert_stmt; hsql::DeleteStatement* delete_stmt; @@ -264,6 +264,7 @@ union HSQL_STYPE hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::ColumnType column_type_t; + hsql::ImportType import_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -278,9 +279,9 @@ union HSQL_STYPE std::vector* order_vec; std::vector* with_description_vec; -#line 282 "bison_parser.h" /* yacc.c:1927 */ -}; +#line 283 "bison_parser.h" +}; typedef union HSQL_STYPE HSQL_STYPE; # define HSQL_STYPE_IS_TRIVIAL 1 # define HSQL_STYPE_IS_DECLARED 1 diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index a876036..967ed10 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -102,6 +102,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::SQLStatement* statement; hsql::SelectStatement* select_stmt; hsql::ImportStatement* import_stmt; + hsql::ExportStatement* export_stmt; hsql::CreateStatement* create_stmt; hsql::InsertStatement* insert_stmt; hsql::DeleteStatement* delete_stmt; @@ -121,6 +122,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::LimitDescription* limit; hsql::ColumnDefinition* column_t; hsql::ColumnType column_type_t; + hsql::ImportType import_type_t; hsql::GroupByDescription* group_t; hsql::UpdateClause* update_t; hsql::Alias* alias_t; @@ -140,7 +142,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha /********************************* ** Destructor symbols *********************************/ -%destructor { } +%destructor { } %destructor { free( ($$.name) ); free( ($$.schema) ); } %destructor { free( ($$) ); } %destructor { @@ -167,15 +169,15 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN %token INTEGER NATURAL PREPARE PRIMARY SCHEMAS %token SPATIAL VARCHAR VIRTUAL DESCRIBE BEFORE COLUMN CREATE DELETE DIRECT -%token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT GLOBAL HAVING IMPORT +%token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT 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 OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR DATE +%token OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR COPY DATE %token DESC DROP ELSE FILE FROM FULL HASH HINT INTO JOIN %token LEFT LIKE LOAD LONG NULL PLAN SHOW TEXT THEN TIME -%token VIEW WHEN WITH ADD ALL AND ASC CSV END FOR INT KEY -%token NOT OFF SET TBL TOP AS BY IF IN IS OF ON OR TO +%token 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 %token ARRAY CONCAT ILIKE SECOND MINUTE HOUR DAY MONTH YEAR %token TRUE FALSE @@ -188,6 +190,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type prepare_statement %type select_statement select_with_paren select_no_paren select_clause select_paren_or_clause %type import_statement +%type export_statement %type create_statement %type insert_statement %type delete_statement truncate_statement @@ -197,7 +200,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type table_name %type file_path prepare_target_query %type opt_not_exists opt_exists opt_distinct opt_column_nullable -%type import_file_type opt_join_type +%type opt_join_type %type opt_from_clause from_clause table_ref table_ref_atomic table_ref_name nonjoin_table_ref_atomic %type
join_clause table_ref_name_no_alias %type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_expr @@ -216,6 +219,9 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type opt_table_alias table_alias opt_alias alias %type with_description +// ImportType is used for compatibility reasons +%type opt_file_type file_type + %type ident_commalist opt_column_list %type expr_list select_list opt_literal_list literal_list hint_list opt_hints %type table_ref_commalist @@ -302,12 +308,17 @@ statement: | show_statement { $$ = $1; } + | import_statement { + $$ = $1; + } + | export_statement { + $$ = $1; + } ; preparable_statement: select_statement { $$ = $1; } - | import_statement { $$ = $1; } | create_statement { $$ = $1; } | insert_statement { $$ = $1; } | delete_statement { $$ = $1; } @@ -374,24 +385,65 @@ execute_statement: /****************************** * Import Statement + * IMPORT FROM TBL FILE 'test/students.tbl' INTO students + * COPY students FROM 'test/students.tbl' [WITH FORMAT TBL] ******************************/ import_statement: - IMPORT FROM import_file_type FILE file_path INTO table_name { - $$ = new ImportStatement((ImportType) $3); + IMPORT FROM file_type FILE file_path INTO table_name { + $$ = new ImportStatement($3); $$->filePath = $5; $$->schema = $7.schema; $$->tableName = $7.name; } + | COPY table_name FROM file_path opt_file_type { + $$ = new ImportStatement($5); + $$->filePath = $4; + $$->schema = $2.schema; + $$->tableName = $2.name; + } ; -import_file_type: - CSV { $$ = kImportCSV; } +file_type: + IDENTIFIER { + if (strcasecmp($1, "csv") == 0) { + $$ = kImportCSV; + } else if (strcasecmp($1, "tbl") == 0) { + $$ = kImportTbl; + } else if (strcasecmp($1, "binary") == 0 || strcasecmp($1, "bin") == 0) { + $$ = kImportBinary; + } else { + free($1); + yyerror(&yyloc, result, scanner, "File type is unknown."); + YYERROR; + } + free($1); + } ; file_path: string_literal { $$ = strdup($1->name); delete $1; } ; +opt_file_type: + WITH FORMAT file_type { + $$ = $3; + } + | /* empty */ { $$ = kImportAuto; } + ; + + +/****************************** + * Export Statement + * COPY students TO 'test/students.tbl' (WITH FORMAT TBL) + ******************************/ +export_statement: + COPY table_name TO file_path opt_file_type { + $$ = new ExportStatement($5); + $$->filePath = $4; + $$->schema = $2.schema; + $$->tableName = $2.name; + } + ; /****************************** * Show Statement @@ -421,11 +473,17 @@ show_statement: * CREATE TABLE students FROM TBL FILE 'test/students.tbl' ******************************/ create_statement: - CREATE TABLE opt_not_exists table_name FROM TBL FILE file_path { + CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path { $$ = new CreateStatement(kCreateTableFromTbl); $$->ifNotExists = $3; $$->schema = $4.schema; $$->tableName = $4.name; + if (strcasecmp($6, "tbl") != 0) { + free($6); + yyerror(&yyloc, result, scanner, "File type is unknown."); + YYERROR; + } + free($6); $$->filePath = $8; } | CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' { @@ -700,6 +758,7 @@ select_list: opt_from_clause: from_clause { $$ = $1; } | /* empty */ { $$ = nullptr; } + ; from_clause: FROM table_ref { $$ = $2; } @@ -723,6 +782,7 @@ opt_group: opt_having: HAVING expr { $$ = $2; } | /* empty */ { $$ = nullptr; } + ; opt_order: ORDER BY order_list { $$ = $3; } @@ -893,6 +953,7 @@ datetime_field: | DAY { $$ = kDatetimeDay; } | MONTH { $$ = kDatetimeMonth; } | YEAR { $$ = kDatetimeYear; } + ; array_expr: ARRAY '[' expr_list ']' { $$ = Expr::makeArray($3); } @@ -1022,6 +1083,7 @@ table_alias: opt_table_alias: table_alias | /* empty */ { $$ = nullptr; } + ; alias: @@ -1033,6 +1095,7 @@ alias: opt_alias: alias | /* empty */ { $$ = nullptr; } + ; /****************************** diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 4a58910..468ff8c 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -1,6 +1,6 @@ -#line 1 "flex_lexer.cpp" +#line 2 "flex_lexer.cpp" -#line 3 "flex_lexer.cpp" +#line 4 "flex_lexer.cpp" #define YY_INT_ALIGNED short int @@ -582,7 +582,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1024] = +static const flex_int16_t yy_accept[1026] = { 0, 0, 0, 149, 149, 2, 2, 153, 151, 4, 4, 151, 151, 141, 147, 141, 141, 144, 141, 141, 141, @@ -597,34 +597,34 @@ static const flex_int16_t yy_accept[1024] = 146, 146, 118, 146, 119, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 120, + 146, 146, 121, 122, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 123, 124, 125, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 120, 146, 146, 121, 122, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 123, 124, 125, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 126, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 140, 149, 148, 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, 145, 142, 104, 146, 105, 146, 146, 106, - 146, 107, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 108, 146, 130, 146, 146, 146, 146, 146, 146, - - 146, 146, 146, 109, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 110, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 111, 146, 146, - 112, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 113, 146, 146, 114, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 115, 146, 146, - 146, 146, 116, 146, 146, 146, 146, 117, 146, 146, + 146, 146, 146, 146, 126, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 140, 149, 148, 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, 145, 142, + 106, 146, 107, 146, 146, 108, 146, 109, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 130, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 110, + + 146, 146, 146, 146, 146, 146, 146, 146, 146, 111, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 112, 146, 146, 113, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 114, 146, 146, + 115, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 116, 146, 146, 146, 146, 146, 146, + 146, 146, 117, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -636,18 +636,18 @@ static const flex_int16_t yy_accept[1024] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 146, 146, - 146, 146, 146, 146, 76, 146, 77, 78, 146, 146, + 2, 2, 146, 146, 146, 146, 146, 146, 77, 146, + 78, 79, 146, 146, 80, 146, 146, 81, 146, 146, - 146, 146, 79, 146, 146, 146, 146, 80, 146, 146, - 146, 81, 82, 146, 146, 146, 146, 146, 146, 146, - 83, 146, 84, 85, 146, 146, 86, 146, 87, 129, - 146, 146, 146, 146, 146, 146, 88, 146, 89, 90, - 91, 146, 93, 146, 94, 146, 146, 146, 146, 95, - 146, 146, 146, 146, 146, 96, 146, 146, 146, 146, - 146, 146, 146, 146, 97, 146, 146, 146, 146, 98, - 99, 100, 133, 146, 146, 146, 146, 146, 146, 146, - 146, 101, 146, 102, 146, 103, 132, 2, 2, 2, + 146, 146, 82, 146, 146, 146, 83, 84, 146, 146, + 146, 146, 146, 146, 146, 85, 146, 146, 86, 87, + 146, 146, 88, 146, 89, 129, 146, 146, 146, 146, + 146, 146, 90, 146, 91, 92, 93, 146, 95, 146, + 96, 146, 146, 146, 146, 97, 146, 146, 146, 146, + 146, 98, 146, 146, 146, 146, 146, 146, 146, 146, + 99, 146, 146, 146, 146, 100, 101, 102, 133, 146, + 146, 146, 146, 146, 146, 146, 146, 103, 146, 104, + 146, 105, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -658,15 +658,15 @@ static const flex_int16_t yy_accept[1024] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 56, 57, 146, 58, - 146, 146, 146, 146, 146, 146, 59, 146, 146, 146, + 2, 2, 2, 2, 57, 58, 146, 59, 146, 146, + 146, 146, 146, 146, 60, 146, 146, 146, 61, 146, - 60, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 134, 61, 146, 62, 146, 92, 146, 63, 64, - 146, 146, 146, 146, 65, 66, 67, 68, 146, 131, - 146, 146, 146, 69, 70, 146, 146, 146, 146, 146, - 71, 146, 146, 146, 146, 146, 72, 146, 146, 146, - 73, 146, 146, 146, 74, 146, 146, 146, 75, 2, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 134, + 62, 146, 146, 63, 146, 94, 146, 64, 65, 146, + 146, 146, 146, 66, 67, 68, 69, 146, 131, 146, + 146, 146, 70, 71, 146, 146, 146, 146, 146, 72, + 146, 146, 146, 146, 146, 73, 146, 146, 146, 74, + 146, 146, 146, 75, 146, 146, 146, 76, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -677,26 +677,26 @@ static const flex_int16_t yy_accept[1024] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 146, 31, 146, 146, 32, 146, 33, 146, 146, 34, 146, 35, 146, 36, 37, 38, 146, 39, - 146, 146, 41, 42, 43, 44, 146, 146, 45, 128, - 146, 146, 46, 146, 146, 146, 47, 146, 48, 127, - 49, 50, 146, 51, 146, 146, 146, 52, 53, 54, - 55, 146, 146, 2, 2, 2, 2, 2, 2, 2, + 146, 146, 41, 42, 43, 44, 45, 146, 146, 46, + 128, 146, 146, 47, 146, 146, 146, 48, 146, 49, + 127, 50, 51, 146, 52, 146, 146, 146, 53, 54, + 55, 56, 146, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 15, 16, 17, 18, 19, 146, - 20, 146, 146, 21, 22, 40, 23, 146, 24, 146, - 146, 25, 26, 146, 27, 28, 146, 146, 146, 29, - 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 15, 16, 17, 18, + 19, 146, 20, 146, 146, 21, 22, 40, 23, 146, + 24, 146, 146, 25, 26, 146, 27, 28, 146, 146, + 146, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 146, 10, - 11, 146, 12, 146, 13, 146, 146, 14, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 146, 10, 11, 146, 12, 146, 13, 146, 146, 14, - 2, 2, 2, 2, 2, 2, 2, 2, 146, 7, - 146, 8, 9, 2, 2, 2, 2, 2, 5, 6, - 2, 2, 0 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 146, 7, 146, 8, 9, 2, 2, 2, 2, 2, + 5, 6, 2, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -742,146 +742,147 @@ static const YY_CHAR yy_meta[68] = 5, 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1031] = +static const flex_int16_t yy_base[1033] = { 0, - 0, 0, 470, 466, 67, 0, 470, 4053, 133, 135, - 428, 0, 4053, 4053, 131, 400, 133, 132, 387, 357, - 129, 129, 137, 135, 145, 196, 176, 184, 217, 124, - 141, 201, 213, 238, 255, 250, 0, 243, 269, 312, - 251, 191, 273, 144, 291, 0, 342, 0, 200, 212, - 332, 315, 0, 0, 212, 296, 207, 247, 291, 284, - 370, 437, 491, 543, 591, 643, 355, 301, 691, 300, - 266, 366, 429, 743, 791, 438, 367, 442, 841, 893, - 479, 537, 450, 388, 210, 333, 4053, 262, 4053, 338, - 245, 237, 4053, 4053, 4053, 4053, 0, 147, 178, 365, + 0, 0, 373, 368, 67, 0, 374, 4060, 133, 135, + 361, 0, 4060, 4060, 131, 345, 133, 132, 312, 300, + 129, 129, 137, 135, 145, 196, 171, 184, 188, 124, + 141, 183, 228, 230, 236, 235, 0, 250, 280, 323, + 257, 194, 231, 144, 243, 0, 281, 0, 259, 272, + 269, 273, 0, 0, 161, 259, 293, 292, 247, 224, + 381, 448, 502, 554, 602, 654, 301, 377, 702, 302, + 304, 379, 440, 754, 802, 449, 358, 453, 852, 904, + 490, 548, 461, 366, 164, 304, 4060, 221, 4060, 305, + 212, 209, 4060, 4060, 4060, 4060, 0, 147, 267, 296, - 445, 195, 316, 481, 0, 371, 323, 491, 492, 306, - 488, 544, 360, 374, 381, 395, 417, 442, 544, 440, - 441, 473, 482, 497, 539, 539, 540, 548, 543, 538, - 0, 557, 576, 594, 585, 591, 576, 596, 593, 606, - 593, 598, 604, 602, 604, 634, 649, 647, 0, 650, - 636, 639, 658, 657, 646, 656, 659, 695, 657, 656, - 699, 700, 694, 695, 704, 698, 696, 692, 738, 710, - 709, 710, 748, 746, 732, 753, 4053, 0, 4053, 0, - 349, 0, 203, 0, 353, 190, 161, 0, 0, 0, - 0, 751, 782, 779, 813, 836, 783, 845, 880, 795, + 317, 302, 322, 383, 0, 318, 338, 500, 391, 432, + 555, 445, 376, 386, 388, 428, 453, 555, 448, 459, + 484, 490, 496, 506, 504, 506, 543, 509, 503, 0, + 516, 550, 591, 556, 568, 556, 597, 602, 617, 591, + 598, 603, 599, 603, 612, 624, 623, 0, 629, 615, + 631, 656, 656, 654, 657, 659, 698, 655, 653, 676, + 676, 696, 680, 690, 695, 692, 710, 713, 714, 713, + 721, 719, 709, 732, 4060, 0, 4060, 0, 315, 0, + 212, 0, 353, 193, 190, 0, 0, 0, 0, 752, + 758, 767, 793, 763, 804, 821, 856, 796, 847, 895, - 884, 909, 919, 934, 921, 937, 989, 960, 972, 994, - 991, 950, 1008, 1058, 867, 1020, 1024, 1037, 1039, 1045, - 1043, 1081, 1093, 1094, 1082, 915, 1095, 975, 1144, 1127, - 1119, 1104, 1148, 1161, 1201, 1187, 1184, 1189, 1202, 1203, - 1145, 1219, 1232, 1135, 1241, 1238, 1243, 1251, 1269, 1272, - 1255, 1291, 1297, 1305, 1307, 1310, 1326, 1328, 1341, 1309, - 1343, 1366, 1364, 1365, 1382, 1394, 1403, 1406, 1395, 1420, - 1428, 0, 4053, 145, 0, 757, 0, 758, 755, 0, - 801, 0, 827, 828, 841, 1434, 836, 834, 843, 955, - 969, 0, 998, 0, 1041, 1064, 1439, 1108, 1111, 1141, + 912, 906, 910, 964, 949, 893, 973, 812, 955, 947, + 1023, 858, 979, 1004, 988, 1009, 1025, 1037, 1053, 1062, + 1058, 1071, 1022, 1077, 1075, 1126, 1092, 1107, 1096, 1129, + 1155, 1174, 1131, 1160, 1184, 1185, 1198, 1208, 1223, 1229, + 1159, 1234, 1224, 1252, 1262, 1263, 1264, 1275, 1293, 1314, + 1288, 1306, 1331, 1345, 1344, 1189, 1347, 1357, 1360, 1366, + 1389, 1381, 1398, 1406, 1402, 1420, 1414, 0, 4060, 145, + 0, 765, 0, 768, 773, 0, 810, 0, 827, 842, + 862, 970, 857, 859, 886, 891, 933, 944, 980, 0, + 996, 1016, 1150, 1019, 1033, 1051, 1086, 1077, 1120, 0, - 1181, 1224, 1276, 0, 1291, 1340, 1376, 1386, 1410, 1405, - 1417, 1436, 1442, 0, 1441, 1445, 1459, 1441, 1457, 1460, - 1453, 1456, 1464, 1461, 1472, 1473, 1474, 1478, 1461, 1471, - 0, 1467, 1485, 1482, 1490, 1494, 1490, 1491, 1478, 1487, - 1487, 0, 1499, 1495, 1496, 1511, 1514, 1522, 1513, 1512, - 1516, 1529, 1511, 1524, 1528, 1521, 1532, 0, 1516, 1521, - 1524, 1533, 0, 1531, 1528, 1535, 1546, 0, 1547, 1550, - 1538, 1561, 1555, 1549, 1570, 1554, 1561, 1568, 1575, 1566, - 0, 140, 1580, 1582, 1590, 1593, 1594, 1596, 1615, 1598, - 1612, 1626, 1647, 1636, 1652, 1648, 1669, 1670, 1686, 1630, + 1125, 1137, 1197, 1200, 1219, 1234, 1245, 1280, 1301, 1293, + 1295, 1309, 1335, 1380, 1414, 1417, 1409, 1414, 1424, 1421, + 1439, 1442, 1443, 1450, 1436, 1446, 0, 1441, 1459, 1459, + 1465, 1469, 1466, 1469, 1456, 1458, 1458, 0, 1468, 1463, + 1464, 1480, 1481, 1488, 1476, 1477, 1481, 1497, 1479, 1493, + 1497, 1494, 1506, 0, 1491, 1495, 1498, 1507, 1506, 1503, + 1510, 1522, 0, 1525, 1516, 1517, 1533, 1521, 1516, 1537, + 1520, 1524, 1534, 1539, 1535, 0, 140, 1551, 1560, 1563, + 1564, 1572, 1568, 1577, 1576, 1602, 1608, 1613, 1616, 1605, + 1630, 1644, 1631, 1642, 1634, 1656, 1667, 1672, 1670, 1680, - 1631, 1660, 1698, 1708, 1709, 1714, 1703, 1722, 1743, 1746, - 1738, 1748, 1776, 1754, 1762, 1777, 1800, 1792, 1788, 1759, - 1817, 1794, 1822, 1826, 1828, 1838, 1856, 1862, 1872, 1850, - 1868, 1884, 1851, 1880, 1896, 1902, 1908, 1917, 1905, 1918, - 1920, 1930, 1942, 1958, 1946, 1970, 1971, 1959, 1976, 1936, - 1988, 2000, 2010, 1982, 1984, 2016, 2025, 2021, 2038, 2054, - 2049, 2067, 2033, 2078, 2055, 2066, 2089, 2084, 2103, 2112, - 2090, 2122, 2120, 2143, 2121, 2124, 2155, 2166, 2174, 2165, - 2180, 2198, 2197, 2208, 2219, 2220, 2248, 2210, 1584, 1642, - 1668, 1700, 1713, 1744, 0, 1787, 0, 0, 1808, 1866, + 1684, 1685, 1698, 1723, 1710, 1688, 1724, 1733, 1734, 1738, + 1752, 1742, 1755, 1764, 1767, 1777, 1788, 1790, 1806, 1812, + 1818, 1827, 1842, 1801, 1831, 1850, 1866, 1852, 1855, 1860, + 1881, 1868, 1885, 1890, 1904, 1896, 1922, 1930, 1938, 1925, + 1939, 1920, 1955, 1944, 1973, 1974, 1976, 1978, 1979, 1984, + 2013, 2015, 2007, 2029, 2032, 2038, 2041, 2030, 2063, 2047, + 2066, 2069, 2082, 2084, 2098, 2081, 2107, 2103, 2115, 2117, + 2138, 2136, 2133, 2159, 2157, 2151, 2189, 2172, 2161, 2202, + 2207, 2205, 1545, 1554, 1562, 1654, 1746, 1792, 0, 1826, + 0, 0, 1898, 1922, 0, 1968, 1976, 0, 1988, 1996, - 1965, 2030, 0, 2049, 2063, 2085, 2133, 2141, 2174, 2173, - 2202, 0, 0, 2204, 2220, 2216, 2223, 2247, 2253, 2252, - 0, 2239, 0, 0, 2266, 2252, 0, 2255, 0, 0, - 2269, 2258, 2253, 2260, 2261, 2275, 0, 2273, 0, 0, - 0, 2267, 0, 2276, 0, 2284, 2271, 2284, 2279, 0, - 2295, 2294, 2284, 2289, 2295, 0, 2309, 2310, 2300, 2303, - 2302, 2310, 2313, 2325, 0, 2325, 2322, 2327, 2318, 0, - 0, 2317, 0, 2336, 2327, 2321, 2342, 2324, 2338, 2341, - 2339, 0, 2330, 0, 2347, 0, 0, 2357, 2359, 2351, - 2356, 2362, 2360, 2381, 2392, 2390, 2391, 2405, 2414, 2416, + 2028, 2052, 2128, 2171, 2193, 2194, 0, 0, 2201, 2202, + 2204, 2206, 2227, 2230, 2230, 0, 2216, 2237, 0, 0, + 2239, 2230, 0, 2234, 0, 0, 2244, 2233, 2232, 2242, + 2243, 2259, 0, 2252, 0, 0, 0, 2248, 0, 2257, + 0, 2265, 2252, 2266, 2261, 0, 2277, 2276, 2264, 2266, + 2272, 0, 2285, 2288, 2277, 2274, 2274, 2287, 2288, 2300, + 0, 2300, 2301, 2309, 2300, 0, 0, 2299, 0, 2317, + 2308, 2302, 2323, 2305, 2319, 2323, 2323, 0, 2312, 0, + 2329, 0, 0, 2338, 2339, 2334, 2343, 2349, 2357, 2360, + 2368, 2372, 2373, 2374, 2397, 2398, 2408, 2402, 2406, 2427, - 2430, 2422, 2426, 2435, 2459, 2468, 2467, 2472, 2485, 2476, - 2484, 2493, 2498, 2517, 2522, 2526, 2534, 2539, 2543, 2547, - 2556, 2552, 2558, 2584, 2582, 2588, 2592, 2596, 2597, 2606, - 2614, 2618, 2636, 2642, 2646, 2630, 2640, 2651, 2652, 2668, - 2670, 2680, 2684, 2681, 2694, 2705, 2703, 2709, 2724, 2737, - 2734, 2740, 2745, 2755, 2739, 2773, 2774, 2768, 2778, 2789, - 2799, 2808, 2812, 2813, 2822, 2823, 2838, 2841, 2847, 2852, - 2857, 2853, 2866, 2881, 2876, 2887, 2882, 2916, 2895, 2927, - 2905, 2921, 2906, 2911, 2935, 2939, 0, 0, 2372, 0, - 2394, 2396, 2430, 2439, 2471, 2500, 0, 2492, 2514, 2524, + 2432, 2431, 2440, 2456, 2464, 2466, 2465, 2468, 2480, 2490, + 2494, 2482, 2504, 2520, 2522, 2506, 2530, 2539, 2538, 2535, + 2536, 2548, 2573, 2552, 2578, 2570, 2574, 2576, 2589, 2588, + 2606, 2618, 2628, 2612, 2640, 2622, 2624, 2643, 2661, 2652, + 2666, 2662, 2664, 2692, 2694, 2702, 2678, 2718, 2710, 2727, + 2731, 2728, 2726, 2756, 2764, 2761, 2772, 2762, 2786, 2798, + 2770, 2800, 2802, 2810, 2815, 2816, 2824, 2828, 2832, 2838, + 2856, 2860, 2850, 2868, 2874, 2882, 2872, 2905, 2886, 2904, + 2890, 2914, 2918, 2922, 0, 0, 2382, 0, 2411, 2412, + 2415, 2472, 2554, 2610, 0, 2617, 2643, 2656, 0, 2692, - 0, 2529, 2535, 2586, 2716, 2779, 2814, 2833, 2848, 2936, - 2946, 0, 0, 2939, 0, 2947, 0, 2935, 0, 0, - 2936, 2956, 2946, 2954, 0, 0, 0, 0, 2965, 0, - 2973, 2967, 2957, 0, 0, 2975, 2966, 2967, 2981, 2980, - 0, 2989, 2990, 2975, 2992, 2997, 2980, 2982, 2983, 3004, - 0, 3001, 3004, 3004, 0, 2991, 3013, 3014, 0, 3013, - 3014, 3023, 3015, 3019, 3029, 3048, 3045, 3053, 3057, 3058, - 3059, 3082, 3067, 3083, 3093, 3107, 3099, 3091, 3101, 3117, - 3136, 3125, 3153, 3162, 3123, 3141, 3174, 3165, 3175, 3171, - 3190, 3176, 3179, 3213, 3207, 3211, 3229, 3215, 3219, 3224, + 2717, 2757, 2840, 2900, 2897, 2908, 2912, 2924, 2932, 0, + 0, 2921, 2933, 0, 2941, 0, 2929, 0, 0, 2931, + 2948, 2940, 2949, 0, 0, 0, 0, 2958, 0, 2963, + 2957, 2947, 0, 0, 2964, 2953, 2955, 2972, 2970, 0, + 2980, 2978, 2963, 2980, 2984, 2968, 2971, 2973, 2994, 0, + 2992, 2995, 2996, 0, 2983, 3002, 3004, 0, 3002, 3008, + 3010, 3012, 3013, 3014, 3043, 3044, 3046, 3018, 3047, 3052, + 3068, 3076, 3077, 3078, 3086, 3107, 3092, 3110, 3111, 3120, + 3122, 3141, 3146, 3132, 3150, 3160, 3174, 3156, 3184, 3165, + 3190, 3189, 3195, 3199, 3198, 3220, 3223, 3224, 3228, 3229, - 3230, 3241, 3245, 3247, 3275, 3264, 3253, 3269, 3281, 3290, - 3299, 3287, 3293, 3298, 3327, 3332, 3321, 3344, 3333, 3335, - 3365, 3357, 3373, 3361, 3367, 3390, 3375, 3386, 3401, 3407, - 3423, 3398, 3024, 0, 3079, 3131, 3128, 3186, 0, 3261, - 3267, 0, 3318, 0, 3399, 0, 0, 0, 3409, 0, - 3402, 3411, 0, 0, 0, 0, 3416, 3431, 0, 0, - 3425, 3439, 0, 3424, 3440, 3421, 0, 3446, 3433, 0, - 0, 0, 3442, 0, 3455, 3456, 3440, 0, 0, 0, - 0, 3444, 3453, 3461, 3463, 3477, 3465, 3475, 3473, 3491, - 3501, 3514, 3503, 3535, 3517, 3527, 3519, 3531, 3533, 3543, + 3233, 3238, 3239, 3268, 3269, 3263, 3254, 3273, 3277, 3294, + 3298, 3282, 3308, 3303, 3317, 3327, 3331, 3343, 3352, 3357, + 3367, 3361, 3366, 3365, 3382, 3396, 3391, 3397, 3401, 3410, + 3431, 3405, 3054, 0, 3078, 3121, 3137, 3148, 0, 3166, + 3185, 0, 3238, 0, 3254, 0, 0, 0, 3292, 0, + 3297, 3307, 0, 0, 0, 0, 0, 3319, 3356, 0, + 0, 3412, 3424, 0, 3411, 3434, 3415, 0, 3438, 3425, + 0, 0, 0, 3433, 0, 3445, 3449, 3434, 0, 0, + 0, 0, 3437, 3448, 3459, 3460, 3464, 3465, 3469, 3474, + 3470, 3495, 3498, 3499, 3527, 3503, 3533, 3509, 3514, 3528, - 3545, 3567, 3568, 3557, 3569, 3571, 3573, 3586, 3581, 3585, - 3597, 3602, 3611, 3619, 3625, 3621, 3623, 3627, 3637, 3651, - 3653, 3655, 3656, 3679, 3661, 3689, 3691, 3690, 3677, 3695, - 3701, 3707, 3720, 3723, 0, 0, 0, 0, 0, 3473, - 0, 3509, 3500, 0, 0, 0, 0, 3644, 0, 3706, - 3725, 0, 0, 3714, 0, 0, 3718, 3727, 3739, 0, - 0, 3741, 3744, 3745, 3749, 3753, 3755, 3759, 3763, 3774, - 3777, 3785, 3787, 3793, 3811, 3795, 3817, 3798, 3799, 3808, - 3833, 3823, 3827, 3839, 3841, 3851, 3862, 3863, 3814, 0, - 0, 3850, 0, 3854, 0, 3849, 3861, 0, 3885, 3877, + 3532, 3537, 3562, 3563, 3549, 3565, 3566, 3567, 3568, 3591, + 3581, 3597, 3599, 3600, 3625, 3602, 3635, 3616, 3633, 3637, + 3641, 3651, 3654, 3656, 3659, 3687, 3669, 3695, 3697, 3685, + 3699, 3708, 3709, 3710, 3725, 3733, 0, 0, 0, 0, + 0, 3479, 0, 3543, 3588, 0, 0, 0, 0, 3642, + 0, 3662, 3704, 0, 0, 3708, 0, 0, 3726, 3733, + 3743, 0, 0, 3749, 3751, 3754, 3759, 3762, 3777, 3763, + 3764, 3787, 3785, 3788, 3793, 3799, 3818, 3803, 3828, 3817, + 3822, 3827, 3836, 3833, 3839, 3857, 3871, 3861, 3862, 3867, + 3733, 0, 0, 3779, 0, 3812, 0, 3811, 3861, 0, - 3881, 3887, 3891, 3893, 3895, 3903, 3925, 3917, 3916, 0, - 3905, 0, 0, 3921, 3931, 3935, 3939, 3947, 0, 0, - 3953, 3957, 4053, 4022, 4027, 135, 4032, 4037, 4042, 4047 + 3885, 3876, 3890, 3901, 3893, 3902, 3911, 3919, 3924, 3925, + 3907, 0, 3912, 0, 0, 3930, 3936, 3941, 3947, 3959, + 0, 0, 3960, 3964, 4060, 4029, 4034, 135, 4039, 4044, + 4049, 4054 } ; -static const flex_int16_t yy_def[1031] = +static const flex_int16_t yy_def[1033] = { 0, - 1023, 1, 1024, 1024, 1023, 5, 1023, 1023, 1023, 1023, - 1023, 1025, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1023, 1027, 1023, 1028, 1028, 1023, - 1028, 1029, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1030, 1030, 62, 62, 62, 62, 62, 62, 62, 62, + 1025, 1, 1026, 1026, 1025, 5, 1025, 1025, 1025, 1025, + 1025, 1027, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1025, 1029, 1025, 1030, 1030, 1025, + 1030, 1031, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1032, 1032, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1028, 1023, 1023, 1025, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1026, 1026, 1026, 1026, + 62, 62, 62, 62, 1030, 1025, 1025, 1027, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1028, 1028, 1028, 1028, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1023, 1027, 1023, 1028, - 1028, 1028, 1029, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1025, 1029, 1025, 1030, 1030, 1030, + 1031, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -889,20 +890,20 @@ static const flex_int16_t yy_def[1031] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 1028, 1023, 1023, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 62, 62, 62, 62, 62, 62, 62, 1030, 1025, 1025, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1028, 1028, 62, 62, 62, 62, 62, 62, 62, 62, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1030, 1030, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -913,18 +914,18 @@ static const flex_int16_t yy_def[1031] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 62, 62, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 62, 62, 62, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -935,15 +936,15 @@ static const flex_int16_t yy_def[1031] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 62, 62, 62, 62, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 62, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -952,31 +953,32 @@ static const flex_int16_t yy_def[1031] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 62, 62, 62, 62, 62, 62, 62, 62, 1026, 1026, - 1026, 1026, 1026, 62, 62, 62, 62, 62, 1026, 1026, - 62, 62, 0, 1023, 1023, 1023, 1023, 1023, 1023, 1023 + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1028, 1028, 1028, 1028, 1028, 62, 62, 62, 62, 62, + 1028, 1028, 62, 62, 0, 1025, 1025, 1025, 1025, 1025, + 1025, 1025 } ; -static const flex_int16_t yy_nxt[4121] = +static const flex_int16_t yy_nxt[4128] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, @@ -993,447 +995,448 @@ static const flex_int16_t yy_nxt[4121] = 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, 97, - 90, 92, 90, 93, 94, 98, 104, 99, 111, 382, - 106, 136, 112, 100, 274, 101, 113, 107, 137, 102, - 103, 176, 114, 275, 108, 115, 105, 109, 110, 116, - 382, 117, 98, 104, 99, 111, 118, 106, 136, 112, - 100, 119, 101, 113, 107, 137, 102, 103, 176, 114, - 275, 108, 115, 105, 109, 110, 116, 128, 117, 186, + 90, 92, 90, 93, 94, 98, 104, 99, 110, 377, + 106, 135, 111, 100, 270, 101, 112, 107, 136, 102, + 103, 174, 113, 271, 108, 114, 105, 109, 182, 115, + 183, 116, 98, 104, 99, 110, 117, 106, 135, 111, + 100, 118, 101, 112, 107, 136, 102, 103, 174, 113, + 271, 108, 114, 105, 109, 125, 115, 127, 116, 377, - 126, 181, 86, 118, 172, 129, 127, 381, 119, 120, - 276, 130, 173, 86, 86, 187, 185, 121, 138, 184, - 122, 185, 139, 123, 128, 281, 124, 126, 140, 125, - 141, 172, 129, 127, 142, 131, 120, 276, 130, 173, - 143, 132, 133, 134, 121, 138, 274, 122, 135, 139, - 123, 144, 281, 124, 91, 140, 125, 141, 188, 189, - 155, 142, 131, 152, 156, 145, 273, 143, 132, 133, - 134, 146, 147, 148, 153, 135, 272, 169, 144, 170, - 154, 149, 171, 232, 157, 150, 158, 155, 151, 159, - 152, 156, 145, 174, 175, 191, 160, 161, 146, 147, + 137, 126, 184, 117, 138, 128, 130, 170, 118, 119, + 139, 129, 131, 132, 133, 171, 376, 120, 270, 134, + 121, 91, 125, 122, 127, 269, 123, 137, 126, 124, + 268, 138, 128, 130, 170, 189, 119, 139, 129, 131, + 132, 133, 171, 143, 120, 140, 134, 121, 151, 141, + 122, 172, 173, 123, 147, 142, 124, 144, 188, 152, + 179, 86, 148, 145, 146, 153, 149, 154, 184, 150, + 143, 155, 140, 86, 86, 151, 141, 178, 172, 173, + 180, 147, 142, 167, 144, 168, 152, 177, 169, 148, + 145, 146, 153, 149, 154, 156, 150, 157, 155, 272, - 148, 153, 190, 192, 169, 186, 170, 154, 149, 171, - 232, 157, 150, 158, 223, 151, 159, 192, 192, 180, - 174, 175, 224, 160, 161, 162, 163, 231, 225, 164, - 192, 282, 165, 166, 86, 86, 287, 192, 192, 167, - 292, 223, 168, 182, 192, 192, 92, 90, 179, 224, - 181, 86, 162, 163, 231, 225, 164, 177, 282, 165, - 166, 187, 185, 287, 192, 192, 167, 292, 96, 168, - 180, 180, 192, 180, 180, 180, 180, 180, 180, 221, - 180, 180, 180, 233, 192, 222, 193, 234, 194, 277, - 299, 300, 192, 235, 195, 285, 196, 278, 95, 192, + 158, 185, 183, 186, 187, 86, 86, 159, 160, 175, + 167, 96, 168, 92, 90, 169, 179, 86, 190, 190, + 273, 229, 156, 95, 157, 218, 272, 158, 274, 228, + 275, 219, 277, 276, 159, 160, 161, 278, 190, 190, + 162, 190, 281, 163, 164, 190, 190, 273, 229, 282, + 165, 283, 218, 166, 91, 274, 228, 275, 219, 277, + 276, 185, 183, 161, 278, 190, 190, 162, 190, 281, + 163, 164, 87, 1025, 47, 190, 282, 165, 283, 47, + 166, 178, 178, 267, 178, 178, 178, 178, 178, 178, + 220, 178, 178, 178, 190, 190, 230, 191, 221, 192, - 197, 198, 286, 192, 192, 271, 221, 301, 302, 91, - 233, 192, 222, 193, 234, 194, 277, 299, 300, 192, - 235, 195, 285, 196, 278, 192, 303, 197, 198, 286, - 192, 192, 271, 304, 301, 302, 180, 180, 180, 87, - 180, 180, 180, 180, 180, 180, 236, 180, 180, 180, - 237, 247, 192, 303, 199, 192, 238, 305, 279, 250, - 304, 280, 248, 251, 311, 312, 192, 192, 249, 1023, - 269, 270, 47, 236, 200, 192, 47, 237, 247, 192, - 1023, 199, 192, 238, 305, 279, 250, 192, 280, 248, - 251, 311, 312, 192, 192, 249, 192, 269, 270, 283, + 231, 279, 190, 190, 222, 193, 232, 194, 287, 297, + 267, 195, 196, 298, 190, 280, 190, 220, 288, 299, + 1025, 190, 190, 230, 191, 221, 192, 231, 279, 1025, + 190, 222, 193, 232, 194, 287, 297, 1025, 195, 196, + 298, 190, 280, 190, 300, 288, 299, 178, 178, 178, + 1025, 178, 178, 178, 178, 178, 178, 233, 178, 178, + 178, 234, 244, 1025, 289, 197, 190, 235, 301, 290, + 247, 300, 307, 245, 248, 295, 296, 190, 190, 246, + 1025, 265, 266, 308, 233, 198, 190, 1025, 234, 244, + 190, 289, 197, 190, 235, 301, 290, 247, 190, 307, - 313, 200, 192, 180, 201, 264, 192, 265, 192, 290, - 266, 202, 314, 284, 192, 288, 192, 289, 203, 291, - 293, 204, 205, 192, 315, 294, 283, 313, 192, 1023, - 1023, 201, 264, 1023, 265, 192, 290, 266, 202, 314, - 284, 1023, 288, 192, 289, 203, 291, 293, 204, 205, - 267, 315, 294, 1023, 192, 192, 206, 295, 268, 306, - 207, 307, 296, 316, 208, 308, 317, 318, 297, 321, - 209, 322, 309, 210, 192, 298, 310, 267, 323, 319, - 192, 192, 320, 206, 295, 268, 306, 207, 307, 296, - 316, 208, 308, 317, 318, 297, 321, 209, 322, 309, + 245, 248, 295, 296, 190, 190, 246, 190, 265, 266, + 308, 309, 198, 190, 178, 199, 260, 190, 261, 190, + 310, 262, 200, 311, 284, 190, 285, 190, 286, 201, + 312, 313, 202, 314, 190, 317, 318, 319, 309, 190, + 1025, 1025, 199, 260, 1025, 261, 190, 310, 262, 200, + 311, 284, 1025, 285, 190, 286, 201, 312, 313, 202, + 314, 263, 317, 318, 319, 190, 190, 203, 291, 264, + 302, 204, 303, 292, 315, 205, 304, 316, 320, 293, + 1025, 206, 325, 305, 207, 190, 294, 306, 263, 326, + 1025, 190, 190, 327, 203, 291, 264, 302, 204, 303, - 210, 192, 298, 310, 324, 323, 319, 192, 192, 320, - 325, 329, 330, 331, 332, 211, 333, 212, 334, 335, - 326, 336, 213, 338, 339, 327, 328, 214, 192, 1023, - 340, 324, 337, 1023, 341, 192, 342, 325, 329, 330, - 331, 332, 211, 333, 212, 334, 335, 326, 336, 213, - 338, 339, 327, 328, 214, 192, 215, 340, 343, 337, - 192, 341, 344, 342, 216, 345, 346, 217, 347, 348, - 218, 349, 352, 219, 350, 354, 220, 353, 351, 355, - 192, 1023, 1023, 215, 359, 343, 360, 192, 1023, 344, - 1023, 216, 345, 346, 217, 347, 348, 218, 349, 352, + 292, 315, 205, 304, 316, 320, 293, 321, 206, 325, + 305, 207, 190, 294, 306, 328, 326, 322, 190, 190, + 327, 334, 323, 324, 335, 329, 208, 330, 209, 336, + 331, 337, 332, 210, 321, 338, 339, 340, 211, 190, + 1025, 341, 328, 333, 322, 342, 190, 343, 334, 323, + 324, 335, 329, 208, 330, 209, 336, 331, 337, 332, + 210, 344, 338, 339, 340, 211, 190, 212, 341, 345, + 333, 190, 342, 346, 343, 213, 350, 347, 214, 351, + 348, 215, 355, 356, 216, 349, 1025, 217, 344, 357, + 358, 190, 1025, 1025, 212, 1025, 345, 361, 190, 1025, - 219, 350, 354, 220, 353, 351, 355, 192, 192, 226, - 356, 359, 361, 360, 362, 227, 228, 229, 363, 357, - 364, 366, 230, 367, 368, 369, 372, 358, 192, 1023, - 373, 365, 1023, 1023, 374, 192, 226, 356, 1023, 361, - 375, 362, 227, 228, 229, 363, 357, 364, 366, 230, - 367, 368, 369, 372, 358, 192, 239, 373, 365, 370, - 192, 374, 371, 378, 379, 376, 380, 375, 192, 1023, - 240, 1023, 1023, 1023, 489, 490, 241, 242, 377, 491, - 192, 1023, 1023, 239, 1023, 1023, 370, 192, 192, 371, - 378, 379, 376, 380, 1023, 192, 192, 240, 383, 192, + 346, 1025, 213, 350, 347, 214, 351, 348, 215, 355, + 356, 216, 349, 352, 217, 362, 357, 358, 190, 190, + 223, 359, 353, 363, 361, 364, 224, 225, 226, 367, + 354, 365, 360, 227, 366, 368, 373, 369, 371, 190, + 352, 374, 362, 370, 1025, 375, 190, 223, 359, 353, + 363, 372, 364, 224, 225, 226, 367, 354, 365, 360, + 227, 366, 368, 373, 369, 371, 190, 236, 374, 190, + 370, 190, 375, 1025, 378, 190, 382, 1025, 372, 383, + 190, 237, 483, 1025, 190, 484, 1025, 238, 239, 190, + 1025, 190, 1025, 1025, 236, 190, 190, 485, 190, 379, - 192, 489, 490, 241, 242, 377, 491, 192, 192, 243, - 1023, 384, 192, 389, 492, 192, 192, 244, 1023, 192, - 192, 245, 1023, 192, 246, 383, 192, 192, 192, 1023, - 192, 1023, 192, 1023, 1023, 192, 243, 385, 384, 192, - 389, 492, 1023, 192, 244, 386, 192, 192, 245, 387, - 192, 246, 388, 192, 493, 192, 252, 192, 253, 192, - 390, 254, 192, 494, 385, 495, 498, 499, 255, 256, - 1023, 1023, 386, 192, 1023, 500, 387, 192, 192, 388, - 192, 493, 192, 252, 192, 253, 1023, 390, 254, 192, - 494, 419, 495, 498, 499, 255, 256, 192, 391, 1023, + 190, 378, 190, 382, 190, 1025, 383, 190, 237, 483, + 190, 190, 484, 190, 238, 239, 190, 380, 190, 190, + 240, 190, 190, 486, 485, 381, 379, 190, 241, 190, + 190, 190, 242, 190, 384, 243, 385, 190, 190, 190, + 190, 190, 1025, 406, 380, 1025, 190, 240, 190, 190, + 486, 1025, 381, 1025, 487, 241, 190, 190, 190, 242, + 190, 384, 243, 385, 190, 190, 190, 249, 190, 250, + 406, 388, 251, 190, 386, 190, 190, 488, 389, 252, + 253, 487, 414, 1025, 190, 190, 489, 492, 387, 190, + 1025, 190, 493, 190, 249, 190, 250, 1025, 388, 251, - 192, 192, 500, 1023, 192, 192, 257, 258, 393, 192, - 259, 192, 392, 260, 261, 394, 1023, 192, 419, 1023, - 262, 192, 395, 263, 192, 391, 192, 1023, 192, 1023, - 192, 192, 192, 257, 258, 393, 192, 259, 192, 392, - 260, 261, 394, 396, 192, 397, 192, 262, 192, 395, - 263, 398, 192, 192, 192, 400, 192, 192, 192, 192, - 1023, 399, 1023, 192, 1023, 192, 412, 192, 501, 401, - 396, 192, 397, 192, 402, 1023, 1023, 192, 398, 192, - 1023, 192, 400, 192, 1023, 192, 1023, 192, 399, 192, - 407, 408, 192, 412, 192, 501, 401, 192, 192, 1023, + 190, 386, 190, 1025, 488, 389, 252, 253, 390, 414, + 190, 190, 190, 489, 492, 387, 190, 254, 494, 493, + 190, 255, 190, 394, 256, 257, 404, 190, 495, 190, + 190, 258, 190, 395, 259, 390, 391, 190, 392, 190, + 393, 190, 396, 190, 254, 494, 496, 397, 255, 190, + 394, 256, 257, 404, 190, 495, 190, 190, 258, 190, + 395, 259, 408, 391, 190, 392, 190, 393, 190, 396, + 190, 407, 190, 496, 397, 497, 190, 398, 1025, 402, + 403, 190, 399, 1025, 190, 490, 190, 491, 400, 408, + 190, 190, 190, 190, 1025, 401, 190, 498, 407, 190, - 502, 402, 403, 432, 192, 409, 192, 404, 192, 192, - 1023, 192, 192, 405, 192, 503, 192, 407, 408, 192, - 406, 410, 411, 413, 192, 192, 192, 502, 192, 403, - 432, 192, 409, 192, 404, 192, 192, 192, 192, 192, - 405, 192, 503, 1023, 420, 192, 1023, 406, 410, 411, - 413, 421, 192, 192, 192, 192, 192, 192, 192, 1023, - 192, 192, 192, 1023, 192, 504, 423, 422, 192, 424, - 425, 420, 192, 414, 192, 415, 192, 505, 421, 416, - 192, 192, 192, 192, 192, 1023, 417, 192, 192, 192, - 418, 1023, 504, 423, 422, 192, 424, 425, 192, 192, + 405, 190, 497, 415, 398, 190, 402, 403, 190, 399, + 190, 190, 490, 190, 491, 400, 190, 190, 417, 190, + 499, 190, 401, 190, 498, 190, 190, 405, 190, 500, + 415, 416, 190, 1025, 503, 1025, 418, 190, 409, 190, + 410, 190, 190, 190, 411, 417, 190, 499, 190, 419, + 504, 412, 190, 190, 190, 413, 500, 1025, 416, 190, + 190, 503, 190, 418, 420, 409, 190, 410, 190, 190, + 190, 411, 1025, 190, 190, 190, 419, 504, 412, 190, + 421, 190, 413, 505, 424, 1025, 190, 190, 190, 190, + 190, 420, 190, 422, 190, 190, 423, 190, 426, 190, - 414, 192, 415, 192, 505, 1023, 416, 192, 426, 192, - 192, 192, 192, 417, 1023, 430, 431, 418, 192, 192, - 429, 192, 192, 508, 427, 192, 192, 428, 509, 1023, - 192, 192, 192, 1023, 1023, 426, 192, 192, 192, 192, - 438, 439, 430, 431, 192, 192, 192, 429, 192, 1023, - 508, 427, 192, 437, 428, 509, 192, 192, 192, 192, - 433, 192, 192, 192, 192, 192, 440, 438, 439, 451, - 434, 192, 192, 510, 1023, 435, 436, 1023, 192, 192, - 437, 192, 192, 192, 441, 192, 442, 433, 192, 192, - 1023, 192, 192, 440, 1023, 511, 451, 434, 192, 192, + 506, 190, 190, 427, 425, 507, 190, 421, 190, 190, + 505, 424, 190, 190, 190, 190, 1025, 190, 432, 190, + 422, 190, 190, 423, 190, 426, 190, 506, 433, 190, + 427, 425, 507, 434, 1025, 190, 190, 508, 509, 190, + 190, 190, 428, 190, 190, 432, 190, 435, 190, 1025, + 1025, 190, 429, 1025, 510, 433, 190, 430, 431, 1025, + 434, 441, 1025, 190, 508, 509, 190, 501, 190, 428, + 190, 190, 190, 190, 435, 190, 190, 190, 436, 429, + 437, 510, 502, 1025, 430, 431, 442, 438, 441, 439, + 190, 190, 190, 190, 501, 190, 190, 190, 1025, 190, - 510, 192, 435, 436, 192, 192, 192, 1023, 192, 192, - 447, 441, 192, 442, 443, 448, 444, 446, 192, 192, - 192, 192, 511, 1023, 192, 192, 192, 445, 192, 1023, - 1023, 192, 452, 192, 449, 450, 192, 447, 192, 192, - 192, 443, 448, 444, 446, 192, 192, 192, 192, 192, - 453, 192, 512, 192, 445, 192, 192, 454, 192, 452, - 192, 449, 450, 192, 457, 192, 192, 192, 192, 192, - 455, 1023, 192, 456, 462, 192, 192, 453, 192, 512, - 192, 1023, 192, 192, 454, 192, 458, 192, 192, 192, - 459, 457, 192, 513, 1023, 192, 192, 455, 460, 192, + 440, 190, 190, 190, 190, 436, 468, 437, 1025, 502, + 443, 190, 511, 442, 438, 190, 439, 444, 190, 190, + 1025, 190, 190, 190, 190, 190, 190, 440, 190, 190, + 445, 512, 446, 468, 1025, 190, 447, 443, 190, 511, + 190, 190, 190, 513, 444, 190, 190, 448, 190, 190, + 449, 190, 190, 190, 1025, 1025, 450, 445, 512, 446, + 190, 190, 190, 447, 514, 1025, 190, 190, 190, 190, + 513, 190, 190, 190, 448, 452, 515, 449, 190, 190, + 453, 190, 451, 450, 454, 1025, 1025, 190, 190, 190, + 455, 514, 190, 190, 457, 456, 190, 516, 190, 190, - 456, 462, 192, 461, 514, 192, 192, 192, 192, 192, - 1023, 463, 464, 458, 192, 192, 192, 459, 1023, 192, - 513, 465, 192, 469, 192, 460, 474, 192, 192, 466, - 461, 514, 467, 192, 192, 192, 192, 468, 463, 464, - 470, 192, 192, 192, 192, 192, 192, 192, 465, 192, - 469, 192, 471, 474, 192, 192, 466, 515, 192, 467, - 192, 192, 1023, 192, 468, 192, 472, 470, 475, 192, - 192, 192, 192, 192, 192, 1023, 1023, 473, 192, 471, - 192, 192, 192, 192, 515, 192, 478, 192, 1023, 479, - 192, 516, 192, 472, 476, 475, 1023, 477, 480, 192, + 190, 190, 452, 515, 1025, 190, 190, 453, 190, 451, + 190, 454, 190, 458, 517, 462, 190, 455, 518, 190, + 519, 457, 456, 190, 516, 190, 190, 190, 190, 459, + 190, 190, 190, 520, 1025, 1025, 463, 190, 460, 190, + 458, 517, 462, 190, 464, 518, 461, 519, 190, 521, + 190, 190, 190, 1025, 1025, 1025, 459, 190, 190, 465, + 520, 190, 190, 463, 190, 460, 1025, 1025, 190, 466, + 190, 464, 469, 461, 190, 190, 521, 190, 190, 1025, + 467, 190, 190, 190, 190, 470, 465, 472, 190, 190, + 473, 190, 1025, 471, 190, 190, 466, 190, 190, 469, - 1023, 192, 192, 192, 473, 192, 1023, 192, 192, 192, - 192, 192, 486, 478, 1023, 481, 479, 517, 516, 192, - 192, 476, 1023, 484, 477, 480, 192, 482, 192, 192, - 192, 192, 192, 483, 518, 519, 485, 192, 192, 486, - 192, 488, 481, 192, 517, 192, 192, 192, 520, 496, - 484, 497, 487, 521, 482, 522, 506, 192, 192, 192, - 483, 518, 519, 485, 192, 192, 523, 192, 488, 524, - 192, 507, 192, 525, 526, 520, 496, 527, 497, 487, - 521, 528, 522, 506, 192, 529, 530, 531, 532, 533, - 534, 535, 192, 523, 538, 536, 524, 539, 507, 540, + 1025, 190, 475, 190, 190, 474, 190, 467, 190, 190, + 190, 190, 470, 522, 472, 190, 1025, 473, 190, 480, + 471, 190, 476, 478, 190, 190, 190, 482, 477, 475, + 190, 190, 474, 190, 523, 190, 479, 190, 524, 190, + 522, 525, 190, 190, 526, 190, 480, 527, 528, 476, + 478, 190, 481, 190, 482, 477, 529, 190, 190, 530, + 531, 523, 190, 479, 190, 524, 190, 532, 525, 534, + 190, 526, 535, 536, 527, 528, 537, 533, 190, 481, + 538, 539, 540, 529, 190, 541, 530, 531, 542, 543, + 544, 545, 546, 547, 532, 548, 534, 549, 550, 535, - 525, 526, 541, 542, 527, 537, 543, 544, 528, 545, - 546, 547, 529, 530, 531, 532, 533, 534, 535, 548, - 549, 538, 536, 550, 539, 551, 540, 552, 553, 541, - 542, 554, 537, 543, 544, 555, 545, 546, 547, 556, - 557, 558, 559, 560, 561, 562, 548, 549, 563, 564, - 550, 565, 551, 566, 552, 553, 567, 568, 554, 569, - 570, 571, 555, 572, 573, 577, 556, 557, 558, 559, - 560, 561, 562, 574, 578, 563, 564, 575, 565, 576, - 566, 579, 580, 567, 568, 581, 569, 570, 571, 582, - 572, 573, 577, 583, 584, 586, 587, 192, 585, 588, + 536, 551, 552, 537, 533, 553, 554, 538, 539, 540, + 555, 556, 541, 557, 558, 542, 543, 544, 545, 546, + 547, 559, 548, 560, 549, 550, 561, 562, 551, 552, + 563, 564, 553, 554, 565, 566, 567, 555, 556, 568, + 557, 558, 569, 571, 573, 572, 574, 575, 559, 576, + 560, 570, 577, 561, 562, 578, 579, 563, 564, 582, + 580, 565, 566, 567, 581, 583, 568, 1025, 190, 569, + 571, 573, 572, 574, 575, 685, 576, 584, 570, 577, + 190, 585, 578, 579, 686, 190, 582, 580, 190, 190, + 587, 581, 583, 190, 190, 190, 586, 190, 1025, 687, - 574, 578, 1023, 1023, 575, 1023, 576, 192, 579, 580, - 589, 192, 581, 192, 687, 192, 582, 192, 590, 192, - 583, 584, 586, 587, 192, 585, 588, 192, 591, 192, - 192, 192, 192, 192, 192, 192, 1023, 589, 192, 592, - 192, 687, 192, 192, 192, 590, 192, 192, 602, 192, - 1023, 595, 192, 596, 192, 591, 192, 192, 192, 192, - 192, 593, 192, 192, 192, 192, 592, 192, 192, 192, - 192, 594, 688, 192, 192, 602, 192, 192, 595, 192, - 596, 598, 597, 600, 192, 192, 192, 192, 593, 192, - 192, 192, 192, 1023, 192, 192, 192, 192, 594, 688, + 190, 190, 685, 1025, 584, 190, 1025, 190, 585, 190, + 1025, 686, 190, 190, 190, 190, 190, 587, 1025, 190, + 190, 190, 190, 586, 190, 190, 687, 190, 190, 588, + 190, 591, 190, 592, 1025, 593, 190, 590, 1025, 190, + 190, 190, 190, 589, 1025, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 1025, 597, 588, 190, 591, 190, + 592, 190, 593, 594, 590, 598, 190, 190, 596, 190, + 589, 190, 190, 599, 190, 190, 595, 190, 190, 190, + 190, 190, 597, 601, 190, 1025, 190, 190, 190, 190, + 594, 688, 598, 190, 190, 596, 600, 602, 190, 604, - 192, 599, 1023, 192, 192, 689, 192, 192, 598, 597, - 600, 192, 192, 192, 192, 192, 192, 601, 1023, 1023, - 608, 604, 603, 192, 192, 192, 605, 1023, 599, 607, - 192, 192, 689, 192, 192, 192, 1023, 690, 1023, 192, - 192, 606, 192, 691, 601, 192, 192, 608, 604, 603, - 192, 192, 192, 605, 609, 612, 607, 610, 192, 192, - 192, 692, 192, 192, 690, 192, 192, 192, 606, 1023, - 691, 614, 192, 192, 611, 192, 620, 615, 192, 192, - 192, 609, 612, 192, 610, 192, 192, 192, 692, 613, - 192, 192, 192, 192, 192, 1023, 192, 1023, 614, 192, + 599, 190, 605, 595, 190, 609, 190, 190, 190, 190, + 601, 190, 603, 1025, 190, 190, 190, 190, 688, 1025, + 190, 190, 190, 600, 602, 190, 604, 190, 190, 605, + 606, 190, 609, 1025, 190, 190, 190, 607, 608, 603, + 190, 190, 190, 1025, 190, 1025, 610, 190, 190, 190, + 190, 611, 190, 612, 190, 190, 1025, 606, 1025, 190, + 190, 190, 190, 1025, 607, 608, 614, 190, 190, 190, + 190, 190, 190, 610, 190, 190, 689, 190, 611, 190, + 612, 190, 190, 613, 617, 615, 190, 190, 190, 190, + 618, 1025, 190, 614, 190, 616, 190, 190, 190, 190, - 693, 611, 192, 620, 615, 192, 192, 192, 616, 192, - 192, 192, 192, 192, 192, 1023, 613, 192, 192, 619, - 192, 192, 618, 192, 617, 192, 192, 693, 1023, 192, - 621, 192, 192, 694, 192, 616, 192, 192, 192, 192, - 192, 192, 624, 192, 192, 192, 619, 622, 1023, 618, - 623, 617, 192, 1023, 192, 192, 192, 621, 192, 192, - 694, 192, 1023, 192, 192, 192, 192, 192, 632, 624, - 192, 625, 192, 192, 622, 192, 626, 623, 1023, 192, - 629, 192, 192, 627, 1023, 192, 192, 192, 192, 192, - 192, 630, 192, 192, 192, 632, 695, 633, 625, 192, + 1025, 190, 190, 689, 190, 190, 190, 190, 190, 690, + 613, 617, 615, 619, 190, 620, 190, 618, 190, 190, + 1025, 190, 616, 190, 1025, 190, 622, 190, 190, 190, + 621, 190, 190, 626, 190, 190, 690, 1025, 190, 691, + 619, 190, 620, 190, 190, 190, 1025, 624, 190, 190, + 190, 623, 190, 622, 190, 190, 190, 621, 1025, 190, + 626, 627, 190, 625, 190, 190, 691, 190, 190, 630, + 190, 190, 631, 628, 624, 190, 190, 632, 623, 190, + 1025, 1025, 190, 190, 1025, 190, 190, 190, 627, 190, + 625, 190, 190, 629, 190, 190, 630, 190, 633, 631, - 192, 192, 192, 626, 628, 192, 192, 629, 1023, 192, - 627, 631, 192, 634, 192, 192, 192, 192, 630, 635, - 192, 192, 192, 695, 633, 192, 192, 1023, 192, 636, - 1023, 628, 192, 192, 192, 192, 192, 640, 631, 192, - 634, 637, 192, 638, 192, 192, 635, 192, 192, 192, - 639, 641, 192, 192, 192, 192, 636, 192, 642, 192, - 192, 192, 192, 192, 640, 644, 192, 192, 637, 192, - 638, 643, 192, 192, 192, 192, 192, 639, 641, 192, - 192, 192, 192, 192, 192, 642, 192, 192, 192, 645, - 192, 647, 644, 192, 192, 192, 192, 696, 643, 652, + 628, 635, 190, 190, 632, 190, 190, 190, 634, 1025, + 190, 636, 190, 638, 190, 1025, 190, 1025, 190, 190, + 629, 190, 190, 692, 190, 633, 1025, 190, 635, 190, + 190, 1025, 190, 190, 190, 634, 637, 190, 636, 190, + 638, 190, 190, 639, 642, 190, 640, 190, 190, 190, + 692, 641, 693, 644, 190, 190, 190, 190, 643, 190, + 190, 190, 190, 637, 190, 1025, 190, 190, 190, 190, + 639, 642, 190, 640, 190, 190, 190, 646, 641, 693, + 644, 190, 190, 190, 190, 643, 190, 645, 190, 190, + 190, 190, 190, 190, 190, 190, 650, 1025, 647, 190, - 192, 653, 192, 192, 646, 192, 192, 192, 192, 648, - 192, 1023, 649, 192, 192, 192, 645, 192, 647, 192, - 192, 192, 192, 192, 696, 192, 652, 192, 653, 654, - 650, 646, 192, 192, 192, 192, 648, 192, 192, 649, - 192, 651, 192, 1023, 192, 1023, 192, 192, 192, 656, - 661, 655, 192, 192, 192, 192, 654, 650, 192, 1023, - 192, 697, 192, 657, 192, 192, 192, 658, 651, 192, - 192, 192, 663, 698, 192, 192, 656, 661, 655, 1023, - 192, 659, 192, 192, 192, 192, 192, 660, 697, 192, - 657, 192, 192, 192, 658, 192, 699, 192, 192, 663, + 694, 651, 190, 190, 646, 1025, 648, 695, 190, 649, + 190, 190, 696, 190, 645, 190, 190, 190, 190, 190, + 190, 190, 190, 650, 190, 647, 652, 694, 651, 697, + 190, 1025, 190, 648, 695, 654, 649, 190, 190, 696, + 190, 653, 190, 190, 190, 656, 190, 659, 190, 190, + 190, 190, 190, 652, 655, 190, 697, 190, 190, 190, + 698, 658, 654, 1025, 661, 699, 190, 190, 653, 190, + 657, 190, 656, 190, 659, 190, 190, 190, 190, 190, + 190, 655, 190, 190, 190, 190, 190, 698, 658, 1025, + 660, 661, 699, 190, 190, 1025, 190, 657, 190, 190, - 698, 192, 192, 192, 192, 662, 192, 192, 659, 1023, - 192, 192, 1023, 192, 660, 192, 665, 700, 192, 192, - 192, 192, 192, 699, 664, 1023, 192, 192, 192, 192, - 192, 192, 662, 192, 192, 666, 667, 192, 671, 192, - 192, 192, 192, 665, 700, 1023, 701, 192, 192, 192, - 668, 664, 669, 192, 192, 1023, 192, 192, 192, 192, - 192, 192, 666, 667, 192, 671, 192, 192, 192, 670, - 1023, 702, 672, 701, 1023, 1023, 192, 668, 677, 669, - 192, 673, 192, 192, 192, 192, 192, 192, 192, 703, - 1023, 192, 192, 674, 704, 675, 670, 192, 702, 672, + 190, 190, 190, 190, 662, 190, 190, 190, 1025, 666, + 190, 190, 1025, 190, 663, 190, 664, 660, 190, 190, + 190, 190, 665, 1025, 190, 190, 190, 190, 190, 668, + 190, 662, 669, 190, 190, 190, 666, 1025, 1025, 667, + 190, 663, 190, 664, 190, 190, 190, 190, 190, 665, + 190, 190, 190, 190, 190, 670, 668, 1025, 700, 669, + 674, 190, 190, 672, 671, 673, 667, 190, 190, 1025, + 190, 190, 675, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 670, 676, 677, 700, 701, 674, 190, 190, + 672, 671, 673, 680, 190, 190, 190, 190, 190, 675, - 1023, 676, 192, 192, 1023, 677, 678, 192, 673, 192, - 192, 192, 680, 1023, 192, 192, 703, 192, 192, 192, - 674, 704, 675, 1023, 192, 192, 705, 192, 676, 192, - 192, 679, 706, 678, 192, 192, 192, 192, 192, 680, - 686, 192, 192, 681, 192, 192, 683, 192, 707, 708, - 684, 682, 192, 705, 192, 709, 192, 192, 679, 706, - 710, 192, 192, 192, 192, 192, 711, 686, 685, 712, - 681, 713, 192, 683, 192, 707, 708, 684, 682, 714, - 715, 716, 709, 192, 192, 192, 717, 710, 718, 719, - 720, 721, 192, 711, 722, 685, 712, 724, 713, 725, + 190, 190, 190, 190, 678, 190, 190, 679, 1025, 190, + 676, 677, 1025, 701, 702, 190, 190, 1025, 703, 190, + 680, 190, 190, 190, 190, 190, 190, 683, 681, 704, + 705, 678, 682, 190, 679, 684, 190, 706, 707, 190, + 708, 702, 190, 709, 190, 703, 190, 710, 711, 190, + 712, 190, 713, 190, 683, 681, 704, 705, 714, 682, + 715, 716, 684, 717, 706, 707, 190, 708, 718, 190, + 709, 190, 719, 720, 710, 711, 723, 712, 721, 713, + 724, 725, 726, 727, 728, 714, 729, 715, 716, 722, + 717, 730, 731, 732, 733, 718, 734, 735, 736, 719, - 726, 727, 728, 729, 730, 723, 714, 715, 716, 731, - 732, 733, 192, 717, 734, 718, 719, 720, 721, 735, - 736, 722, 737, 738, 724, 739, 725, 726, 727, 728, - 729, 730, 723, 740, 741, 742, 731, 732, 733, 743, - 744, 734, 745, 746, 747, 748, 735, 736, 749, 737, - 738, 750, 739, 751, 752, 753, 754, 755, 756, 757, - 740, 741, 742, 758, 759, 1023, 743, 744, 192, 745, - 746, 747, 748, 192, 192, 749, 192, 765, 750, 192, - 751, 752, 753, 754, 755, 756, 757, 760, 762, 761, - 758, 759, 764, 763, 192, 192, 192, 192, 192, 192, + 720, 737, 738, 723, 739, 721, 740, 724, 725, 726, + 727, 728, 741, 729, 742, 743, 722, 744, 730, 731, + 732, 733, 745, 734, 735, 736, 746, 747, 737, 738, + 748, 739, 749, 740, 750, 751, 752, 753, 754, 741, + 755, 742, 743, 756, 744, 757, 758, 1025, 1025, 745, + 1025, 190, 1025, 746, 747, 190, 190, 748, 1025, 749, + 190, 750, 751, 752, 753, 754, 190, 755, 759, 760, + 756, 761, 757, 758, 764, 190, 190, 190, 190, 763, + 762, 765, 190, 190, 1025, 190, 190, 190, 1025, 190, + 190, 190, 1025, 190, 190, 759, 760, 190, 761, 766, - 192, 192, 1023, 192, 765, 766, 192, 192, 192, 192, - 833, 834, 1023, 835, 760, 762, 761, 1023, 192, 764, - 763, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 767, 192, 766, 192, 192, 192, 192, 833, 834, 192, - 835, 1023, 192, 192, 768, 192, 836, 192, 769, 192, - 771, 192, 192, 192, 192, 192, 192, 767, 192, 192, - 192, 770, 1023, 192, 1023, 837, 192, 192, 772, 192, - 192, 768, 192, 836, 192, 769, 192, 771, 192, 192, - 192, 774, 1023, 1023, 192, 192, 192, 776, 770, 192, - 192, 773, 837, 192, 192, 772, 192, 775, 838, 192, + 1025, 764, 190, 190, 190, 190, 763, 762, 765, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 833, 190, 1025, 190, 190, 190, 766, 767, 834, 835, + 1025, 836, 190, 769, 190, 190, 190, 190, 190, 190, + 768, 190, 190, 190, 190, 190, 190, 833, 190, 190, + 190, 770, 190, 773, 767, 834, 835, 190, 836, 1025, + 769, 190, 190, 772, 190, 771, 190, 768, 190, 190, + 190, 190, 190, 190, 1025, 190, 190, 190, 770, 775, + 773, 190, 190, 190, 190, 190, 774, 776, 1025, 777, + 772, 190, 771, 190, 1025, 190, 190, 190, 837, 190, - 778, 192, 192, 192, 192, 192, 777, 1023, 774, 192, - 192, 192, 192, 192, 776, 192, 192, 839, 773, 840, - 192, 192, 192, 192, 775, 838, 779, 778, 192, 192, - 192, 192, 192, 777, 192, 192, 192, 192, 841, 192, - 192, 842, 192, 192, 839, 780, 840, 783, 192, 192, - 843, 192, 784, 779, 192, 781, 192, 192, 782, 192, - 785, 192, 192, 192, 192, 841, 192, 844, 842, 192, - 192, 192, 780, 192, 783, 192, 192, 843, 192, 784, - 192, 192, 781, 192, 192, 782, 192, 785, 786, 192, - 192, 192, 1023, 192, 844, 192, 192, 787, 192, 192, + 190, 190, 190, 190, 190, 190, 775, 190, 190, 190, + 190, 190, 190, 774, 776, 780, 777, 190, 778, 190, + 190, 190, 779, 784, 190, 837, 190, 190, 190, 190, + 190, 190, 190, 782, 190, 783, 781, 190, 190, 190, + 1025, 190, 780, 190, 190, 778, 190, 190, 190, 779, + 784, 786, 190, 190, 190, 190, 190, 190, 190, 190, + 782, 787, 783, 781, 190, 190, 190, 190, 190, 190, + 190, 785, 190, 190, 190, 190, 190, 1025, 786, 190, + 190, 838, 190, 190, 190, 190, 190, 190, 787, 190, + 190, 190, 190, 790, 190, 190, 190, 1025, 785, 190, - 192, 192, 192, 192, 1023, 192, 1023, 192, 1023, 192, - 788, 192, 845, 192, 192, 786, 192, 1023, 789, 192, - 192, 192, 192, 790, 787, 192, 192, 1023, 192, 192, - 1023, 192, 192, 192, 192, 192, 192, 788, 1023, 845, - 192, 192, 1023, 192, 791, 789, 192, 192, 192, 1023, - 790, 192, 192, 192, 792, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 797, 795, 793, 192, 192, 192, - 192, 791, 794, 192, 192, 1023, 796, 192, 192, 192, - 192, 792, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 797, 795, 793, 192, 192, 192, 192, 192, 794, + 190, 788, 190, 190, 789, 190, 190, 190, 838, 1025, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 791, + 790, 1025, 190, 190, 792, 190, 190, 839, 788, 190, + 1025, 789, 190, 190, 190, 190, 793, 190, 190, 190, + 190, 190, 190, 190, 840, 190, 791, 795, 794, 190, + 190, 792, 190, 190, 839, 190, 190, 190, 796, 190, + 190, 190, 190, 793, 797, 190, 190, 841, 190, 190, + 190, 840, 190, 842, 795, 794, 190, 190, 190, 190, + 190, 800, 190, 190, 190, 796, 190, 190, 190, 190, + 799, 797, 190, 798, 841, 190, 190, 1025, 190, 190, - 192, 192, 798, 796, 192, 192, 192, 192, 799, 1023, - 192, 800, 192, 1023, 192, 192, 192, 192, 192, 1023, - 192, 192, 192, 803, 192, 192, 192, 1023, 192, 798, - 1023, 192, 192, 846, 192, 799, 801, 802, 800, 804, - 192, 192, 192, 1023, 192, 192, 192, 192, 192, 192, - 803, 806, 805, 192, 192, 1023, 192, 192, 192, 1023, - 846, 192, 192, 801, 802, 1023, 804, 192, 192, 192, - 807, 192, 192, 192, 192, 808, 192, 192, 806, 805, - 809, 192, 192, 192, 192, 192, 810, 811, 192, 192, - 192, 192, 192, 812, 1023, 192, 847, 807, 192, 192, + 842, 190, 1025, 190, 190, 190, 190, 190, 800, 190, + 190, 190, 1025, 843, 803, 190, 190, 799, 1025, 190, + 798, 1025, 190, 801, 802, 190, 190, 806, 190, 190, + 190, 190, 804, 805, 1025, 190, 190, 1025, 190, 190, + 843, 803, 190, 190, 190, 190, 190, 190, 190, 844, + 801, 802, 1025, 809, 806, 190, 190, 807, 190, 804, + 805, 808, 190, 190, 190, 190, 190, 1025, 190, 810, + 190, 190, 190, 190, 190, 190, 844, 811, 190, 190, + 809, 190, 190, 845, 807, 817, 812, 190, 808, 190, + 190, 190, 190, 190, 814, 190, 810, 1025, 190, 190, - 1023, 192, 808, 192, 192, 192, 192, 809, 813, 192, - 192, 192, 192, 810, 811, 192, 192, 192, 192, 192, - 812, 814, 192, 847, 815, 192, 192, 817, 1023, 192, - 192, 1023, 192, 192, 816, 813, 192, 192, 192, 818, - 192, 1023, 192, 192, 819, 192, 848, 1023, 814, 192, - 192, 815, 192, 192, 817, 820, 192, 192, 192, 192, - 192, 816, 1023, 192, 192, 849, 818, 192, 821, 192, - 192, 819, 192, 848, 192, 192, 192, 192, 192, 850, - 1023, 823, 820, 192, 192, 192, 192, 192, 822, 192, - 192, 192, 849, 192, 192, 821, 192, 192, 192, 192, + 190, 190, 813, 190, 811, 190, 190, 190, 190, 190, + 845, 815, 817, 812, 190, 190, 190, 190, 1025, 818, + 190, 814, 1025, 190, 816, 190, 190, 190, 190, 813, + 190, 819, 820, 190, 190, 190, 190, 190, 815, 190, + 1025, 190, 190, 821, 190, 190, 818, 190, 1025, 190, + 190, 816, 190, 190, 190, 190, 1025, 846, 819, 820, + 190, 190, 190, 822, 190, 190, 190, 190, 190, 190, + 821, 823, 190, 190, 190, 190, 190, 190, 1025, 190, + 190, 826, 190, 825, 846, 190, 824, 190, 190, 829, + 822, 190, 190, 190, 190, 1025, 190, 190, 823, 190, - 826, 192, 192, 192, 192, 192, 850, 824, 823, 825, - 192, 192, 829, 192, 827, 822, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 826, 832, 1023, - 192, 192, 192, 192, 824, 828, 825, 1023, 192, 829, - 192, 827, 192, 192, 192, 192, 192, 830, 192, 192, - 192, 192, 192, 192, 831, 832, 192, 851, 192, 192, - 192, 852, 828, 853, 192, 192, 854, 855, 856, 192, - 192, 192, 192, 857, 830, 192, 192, 858, 859, 192, - 192, 831, 860, 192, 851, 192, 861, 862, 852, 863, - 853, 192, 864, 854, 855, 856, 865, 866, 867, 192, + 190, 828, 190, 190, 190, 190, 827, 190, 826, 190, + 825, 190, 190, 824, 190, 1025, 829, 847, 190, 190, + 190, 190, 190, 190, 190, 830, 190, 190, 828, 848, + 190, 832, 190, 827, 190, 190, 190, 831, 190, 190, + 849, 190, 190, 850, 847, 851, 190, 852, 190, 190, + 190, 190, 830, 853, 190, 190, 848, 854, 832, 190, + 855, 856, 190, 857, 831, 858, 190, 849, 190, 190, + 850, 859, 851, 860, 852, 861, 862, 863, 190, 864, + 853, 865, 190, 866, 854, 867, 190, 855, 856, 868, + 857, 869, 858, 870, 871, 872, 873, 874, 859, 875, - 857, 868, 869, 192, 858, 859, 870, 871, 872, 860, - 873, 874, 875, 861, 862, 876, 863, 877, 878, 864, - 879, 880, 881, 865, 866, 867, 882, 883, 868, 869, - 192, 192, 192, 870, 871, 872, 885, 873, 874, 875, - 192, 935, 876, 1023, 877, 878, 886, 879, 880, 881, - 192, 192, 192, 882, 883, 1023, 192, 192, 192, 192, - 192, 884, 192, 885, 887, 192, 192, 192, 935, 1023, - 192, 888, 1023, 886, 890, 192, 192, 192, 192, 192, - 889, 1023, 192, 192, 893, 192, 891, 192, 884, 192, - 192, 887, 192, 192, 192, 192, 192, 192, 888, 192, + 860, 876, 861, 862, 863, 877, 864, 878, 865, 879, + 866, 880, 867, 881, 882, 883, 868, 884, 869, 190, + 870, 871, 872, 873, 874, 190, 875, 190, 876, 190, + 886, 887, 877, 1025, 878, 891, 879, 1025, 880, 190, + 881, 882, 883, 1025, 884, 190, 190, 190, 885, 190, + 190, 190, 190, 1025, 190, 190, 190, 886, 887, 888, + 190, 190, 891, 190, 190, 1025, 190, 1025, 1025, 190, + 889, 937, 190, 890, 190, 885, 190, 190, 190, 892, + 190, 190, 190, 190, 190, 190, 888, 190, 190, 190, + 190, 190, 893, 894, 190, 190, 190, 889, 937, 895, - 192, 890, 192, 192, 192, 936, 892, 889, 897, 192, - 192, 893, 192, 891, 894, 1023, 192, 192, 898, 192, - 192, 192, 192, 192, 192, 896, 192, 192, 192, 1023, - 192, 192, 936, 892, 192, 897, 192, 192, 192, 895, - 192, 894, 192, 192, 192, 898, 192, 192, 937, 899, - 1023, 192, 896, 192, 192, 192, 901, 192, 192, 938, - 192, 192, 192, 192, 1023, 192, 895, 192, 900, 192, - 192, 192, 1023, 192, 902, 937, 899, 903, 192, 192, - 192, 192, 192, 901, 1023, 192, 938, 192, 192, 192, - 192, 192, 192, 192, 905, 900, 192, 192, 904, 192, + 890, 1025, 1025, 190, 938, 190, 892, 190, 190, 898, + 190, 190, 190, 190, 190, 190, 190, 1025, 896, 893, + 894, 190, 190, 190, 190, 1025, 895, 899, 190, 190, + 190, 938, 190, 897, 1025, 1025, 898, 190, 939, 190, + 190, 190, 190, 900, 190, 896, 1025, 190, 190, 190, + 190, 190, 901, 902, 899, 190, 190, 190, 190, 190, + 897, 904, 903, 190, 190, 939, 190, 190, 940, 190, + 900, 190, 941, 190, 190, 190, 190, 190, 190, 901, + 902, 942, 190, 190, 190, 190, 190, 190, 904, 903, + 190, 190, 905, 190, 190, 940, 190, 190, 906, 941, - 192, 902, 192, 1023, 903, 192, 192, 192, 192, 192, - 939, 192, 192, 192, 1023, 192, 192, 192, 192, 192, - 192, 905, 906, 192, 908, 904, 192, 192, 192, 192, - 192, 1023, 192, 1023, 192, 192, 192, 939, 192, 192, - 192, 192, 909, 192, 192, 907, 192, 192, 192, 906, - 192, 908, 192, 910, 192, 192, 192, 192, 911, 192, - 912, 192, 192, 192, 192, 1023, 192, 192, 192, 909, - 192, 192, 907, 192, 192, 192, 940, 192, 192, 192, - 910, 192, 192, 192, 192, 911, 192, 912, 192, 192, - 192, 192, 192, 192, 192, 913, 914, 192, 915, 941, + 190, 190, 190, 907, 190, 190, 190, 190, 942, 190, + 190, 190, 190, 1025, 190, 910, 190, 943, 190, 905, + 190, 190, 908, 1025, 190, 906, 190, 190, 190, 190, + 907, 909, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 910, 190, 943, 190, 190, 912, 190, 908, + 190, 911, 944, 190, 190, 913, 190, 190, 909, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 945, + 190, 190, 190, 190, 912, 190, 190, 190, 911, 944, + 190, 914, 913, 190, 190, 190, 190, 190, 190, 915, + 190, 190, 190, 190, 917, 916, 945, 190, 190, 920, - 1023, 192, 1023, 940, 918, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 919, 192, 192, 192, 192, 192, - 916, 1023, 913, 914, 192, 915, 941, 192, 192, 917, - 192, 918, 942, 192, 192, 192, 192, 192, 192, 192, - 920, 919, 192, 192, 192, 192, 924, 916, 921, 192, - 192, 192, 192, 922, 192, 1023, 917, 192, 192, 942, - 923, 192, 192, 192, 192, 192, 925, 920, 1023, 192, - 192, 192, 192, 924, 192, 921, 192, 192, 192, 192, - 922, 192, 192, 1023, 929, 192, 928, 923, 192, 927, - 192, 192, 931, 925, 192, 926, 192, 192, 192, 192, + 190, 1025, 190, 190, 1025, 190, 190, 190, 914, 946, + 190, 190, 190, 190, 190, 190, 915, 190, 190, 190, + 190, 917, 916, 947, 918, 190, 920, 190, 919, 921, + 922, 190, 190, 190, 190, 190, 946, 190, 190, 948, + 190, 190, 190, 923, 190, 190, 190, 190, 190, 949, + 947, 918, 190, 1025, 190, 919, 921, 922, 190, 925, + 190, 190, 190, 924, 190, 926, 948, 190, 190, 190, + 923, 190, 190, 950, 190, 190, 949, 1025, 190, 930, + 190, 190, 190, 190, 190, 1025, 925, 190, 927, 190, + 924, 190, 926, 929, 190, 190, 190, 928, 190, 931, - 1023, 192, 192, 192, 192, 192, 930, 192, 192, 192, - 192, 929, 192, 928, 943, 192, 927, 192, 192, 931, - 933, 192, 926, 192, 192, 192, 944, 192, 945, 192, - 192, 192, 932, 930, 192, 192, 934, 192, 192, 192, - 192, 943, 192, 946, 192, 192, 947, 933, 948, 949, - 192, 192, 950, 944, 192, 945, 951, 952, 953, 932, - 192, 954, 192, 934, 955, 192, 956, 192, 957, 958, - 946, 192, 959, 947, 960, 948, 949, 961, 962, 950, - 192, 1023, 964, 951, 952, 953, 989, 192, 954, 1023, - 192, 955, 192, 956, 192, 957, 958, 966, 192, 959, + 950, 190, 190, 190, 190, 190, 930, 190, 933, 190, + 190, 190, 932, 190, 190, 927, 190, 1025, 190, 190, + 929, 190, 190, 935, 928, 190, 931, 190, 190, 190, + 190, 190, 934, 190, 190, 933, 951, 952, 190, 932, + 190, 190, 190, 953, 936, 190, 190, 190, 190, 190, + 935, 954, 955, 956, 190, 190, 957, 958, 959, 934, + 190, 190, 960, 951, 952, 190, 961, 962, 190, 190, + 953, 936, 963, 1025, 190, 190, 964, 190, 954, 955, + 956, 190, 966, 957, 958, 959, 190, 190, 1025, 960, + 965, 190, 991, 961, 962, 190, 190, 190, 968, 963, - 192, 960, 192, 963, 961, 962, 965, 192, 192, 964, - 192, 1023, 192, 989, 192, 1023, 967, 192, 192, 192, - 192, 192, 1023, 1023, 966, 192, 990, 192, 192, 192, - 963, 192, 991, 965, 192, 192, 192, 192, 192, 192, - 192, 192, 970, 967, 192, 192, 968, 192, 192, 969, - 192, 192, 192, 990, 192, 192, 192, 1023, 192, 991, - 971, 192, 192, 192, 192, 192, 1023, 192, 192, 970, - 192, 192, 192, 968, 192, 192, 969, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 971, 192, 192, - 192, 192, 1023, 972, 192, 192, 1023, 192, 975, 192, + 967, 190, 190, 964, 190, 1025, 190, 190, 190, 966, + 969, 190, 190, 190, 190, 190, 190, 965, 190, 991, + 190, 1025, 1025, 190, 190, 968, 190, 967, 190, 190, + 970, 190, 190, 190, 190, 190, 190, 969, 190, 190, + 190, 971, 190, 190, 190, 190, 190, 190, 972, 973, + 190, 190, 1025, 190, 190, 1025, 1025, 970, 190, 190, + 992, 1025, 190, 190, 190, 190, 190, 190, 971, 190, + 190, 190, 190, 190, 190, 972, 973, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 992, 974, 1025, + 1025, 190, 190, 190, 1025, 975, 190, 190, 977, 190, - 973, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 974, 192, 192, 192, - 972, 192, 192, 192, 977, 975, 976, 973, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 979, 192, - 192, 192, 192, 974, 192, 192, 192, 1023, 192, 192, - 192, 977, 981, 976, 192, 192, 192, 978, 192, 992, - 980, 192, 192, 192, 192, 979, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 1023, 1023, 192, 981, - 1023, 192, 982, 192, 978, 192, 992, 980, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 974, 190, 190, 190, 190, + 993, 976, 975, 1025, 978, 977, 190, 190, 190, 190, + 190, 190, 190, 981, 190, 190, 190, 190, 979, 190, + 1025, 190, 190, 190, 190, 190, 190, 993, 976, 1025, + 190, 978, 190, 190, 190, 190, 983, 994, 190, 1025, + 981, 190, 190, 190, 190, 979, 190, 980, 190, 190, + 982, 190, 190, 190, 190, 1025, 190, 190, 190, 190, + 190, 190, 984, 983, 994, 190, 190, 1025, 190, 190, + 1025, 190, 995, 190, 980, 190, 190, 982, 190, 190, - 192, 192, 984, 983, 985, 192, 192, 192, 192, 982, - 1023, 1023, 192, 1023, 192, 192, 192, 192, 192, 192, - 192, 192, 986, 192, 192, 192, 192, 192, 192, 984, - 983, 985, 192, 192, 192, 192, 993, 192, 192, 192, - 192, 192, 994, 192, 192, 192, 995, 988, 996, 986, - 987, 192, 997, 192, 192, 192, 998, 192, 192, 192, - 192, 192, 192, 993, 192, 192, 192, 192, 999, 994, - 192, 192, 192, 995, 988, 996, 192, 987, 192, 997, - 1000, 192, 192, 998, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 999, 192, 192, 1023, 192, + 190, 190, 190, 190, 190, 190, 190, 1025, 986, 984, + 987, 985, 190, 190, 190, 190, 190, 988, 190, 995, + 190, 996, 190, 190, 190, 190, 190, 190, 1025, 190, + 1025, 190, 190, 190, 190, 986, 190, 987, 985, 190, + 997, 190, 190, 190, 988, 190, 190, 190, 996, 190, + 190, 190, 190, 190, 190, 989, 998, 990, 999, 190, + 1000, 190, 190, 190, 1025, 1011, 190, 997, 190, 190, + 190, 190, 190, 190, 190, 1025, 190, 190, 1025, 190, + 190, 1002, 989, 998, 990, 999, 190, 1000, 190, 190, + 1001, 190, 1011, 190, 190, 190, 190, 190, 190, 190, - 192, 1023, 192, 192, 192, 192, 1001, 1000, 192, 192, - 192, 192, 192, 192, 192, 1004, 192, 192, 192, 192, - 1023, 192, 192, 192, 192, 192, 1002, 192, 192, 192, - 192, 192, 192, 1001, 192, 192, 192, 192, 192, 192, - 192, 192, 1004, 192, 192, 192, 1009, 1003, 192, 192, - 192, 192, 192, 1002, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 1005, 1007, 192, 1008, 1006, - 192, 192, 192, 1009, 1003, 192, 192, 192, 192, 192, - 192, 192, 1010, 192, 1011, 192, 1012, 192, 192, 1013, - 1023, 192, 1005, 1007, 192, 1008, 1006, 192, 192, 192, + 190, 190, 190, 190, 190, 190, 190, 190, 1002, 1025, + 190, 1012, 1025, 190, 190, 190, 190, 1001, 190, 1003, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 1004, 1006, 190, 190, 190, 1012, 190, + 190, 190, 1013, 190, 190, 190, 1003, 190, 1014, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 1005, 190, + 1004, 1006, 190, 190, 190, 190, 190, 190, 1007, 1013, + 190, 190, 190, 190, 190, 1014, 190, 190, 1010, 190, + 190, 190, 190, 190, 190, 1005, 190, 1008, 190, 1015, + 1025, 190, 190, 190, 190, 1007, 1009, 190, 190, 190, - 192, 1023, 192, 192, 192, 192, 192, 192, 192, 1010, - 192, 1011, 192, 1012, 192, 192, 1013, 1014, 192, 1015, - 192, 192, 192, 1016, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 1019, 192, 192, 1020, 192, 1021, 192, - 1017, 192, 192, 1023, 1014, 192, 1015, 192, 192, 192, - 1016, 192, 192, 1018, 192, 192, 192, 192, 192, 192, - 1019, 192, 192, 1020, 192, 1021, 1022, 1017, 192, 192, - 192, 1023, 192, 1023, 192, 192, 192, 1023, 1023, 192, - 1018, 192, 1023, 192, 192, 192, 1023, 1023, 1023, 192, - 192, 192, 1023, 1022, 192, 192, 1023, 192, 1023, 192, + 190, 190, 190, 190, 190, 1010, 190, 190, 190, 1025, + 190, 190, 1025, 190, 1008, 190, 1015, 1016, 190, 190, + 190, 190, 190, 1009, 1021, 190, 190, 190, 190, 190, + 190, 190, 1018, 1017, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 1022, 1016, 190, 190, 1023, 190, 190, + 1025, 1021, 1020, 190, 190, 190, 1019, 190, 190, 1018, + 1017, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 1022, 1025, 1024, 190, 1023, 190, 190, 190, 190, 1020, + 190, 190, 1025, 1019, 190, 190, 1025, 1025, 190, 190, + 1025, 190, 1025, 1025, 190, 1025, 190, 190, 1025, 1024, - 1023, 192, 1023, 192, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 192, 1023, 1023, 1023, 1023, 1023, 192, 1023, 1023, - 1023, 192, 46, 46, 46, 46, 46, 88, 1023, 1023, - 88, 88, 178, 178, 178, 1023, 178, 180, 1023, 180, - 180, 180, 183, 1023, 183, 183, 183, 192, 1023, 192, - 192, 192, 7, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 190, 190, 1025, 190, 190, 190, 1025, 1025, 190, 1025, + 1025, 190, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 190, 190, 1025, 1025, 1025, 190, 46, + 46, 46, 46, 46, 88, 1025, 1025, 88, 88, 176, + 176, 176, 1025, 176, 178, 1025, 178, 178, 178, 181, + 1025, 181, 181, 181, 190, 1025, 190, 190, 190, 7, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023 + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025 } ; -static const flex_int16_t yy_chk[4121] = +static const flex_int16_t yy_chk[4128] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1449,445 +1452,446 @@ static const flex_int16_t yy_chk[4121] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 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, 1026, - 15, 17, 17, 18, 18, 21, 22, 21, 24, 382, - 23, 30, 24, 21, 274, 21, 24, 23, 31, 21, - 21, 44, 24, 98, 23, 24, 22, 23, 23, 25, - 187, 25, 21, 22, 21, 24, 25, 23, 30, 24, + 5, 5, 5, 5, 9, 9, 10, 10, 15, 1028, + 15, 17, 17, 18, 18, 21, 22, 21, 24, 377, + 23, 30, 24, 21, 270, 21, 24, 23, 31, 21, + 21, 44, 24, 98, 23, 24, 22, 23, 55, 25, + 55, 25, 21, 22, 21, 24, 25, 23, 30, 24, 21, 25, 21, 24, 23, 31, 21, 21, 44, 24, - 98, 23, 24, 22, 23, 23, 25, 28, 25, 186, + 98, 23, 24, 22, 23, 27, 25, 28, 25, 185, - 27, 49, 49, 25, 42, 28, 27, 183, 25, 26, - 99, 28, 42, 50, 50, 57, 57, 26, 32, 55, - 26, 55, 32, 26, 28, 102, 26, 27, 32, 26, - 33, 42, 28, 27, 33, 29, 26, 99, 28, 42, - 33, 29, 29, 29, 26, 32, 92, 26, 29, 32, - 26, 34, 102, 26, 91, 32, 26, 33, 58, 58, - 38, 33, 29, 36, 38, 34, 88, 33, 29, 29, - 29, 34, 34, 35, 36, 29, 85, 41, 34, 41, - 36, 35, 41, 71, 39, 35, 39, 38, 35, 39, - 36, 38, 34, 43, 43, 60, 39, 39, 34, 34, + 32, 27, 184, 25, 32, 28, 29, 42, 25, 26, + 32, 28, 29, 29, 29, 42, 181, 26, 92, 29, + 26, 91, 27, 26, 28, 88, 26, 32, 27, 26, + 85, 32, 28, 29, 42, 60, 26, 32, 28, 29, + 29, 29, 42, 34, 26, 33, 29, 26, 36, 33, + 26, 43, 43, 26, 35, 33, 26, 34, 59, 36, + 49, 49, 35, 34, 34, 36, 35, 38, 56, 35, + 34, 38, 33, 50, 50, 36, 33, 52, 43, 43, + 51, 35, 33, 41, 34, 41, 36, 47, 41, 35, + 34, 34, 36, 35, 38, 39, 35, 39, 38, 99, - 35, 36, 59, 71, 41, 56, 41, 36, 35, 41, - 71, 39, 35, 39, 68, 35, 39, 70, 68, 52, - 43, 43, 68, 39, 39, 40, 40, 70, 68, 40, - 71, 103, 40, 40, 86, 86, 107, 70, 68, 40, - 110, 68, 40, 51, 70, 68, 90, 90, 47, 68, - 181, 181, 40, 40, 70, 68, 40, 45, 103, 40, - 40, 185, 185, 107, 70, 68, 40, 110, 20, 40, - 61, 61, 67, 61, 61, 61, 61, 61, 61, 67, - 61, 61, 61, 72, 77, 67, 61, 72, 61, 100, - 113, 113, 67, 72, 61, 106, 61, 100, 19, 67, + 39, 57, 57, 58, 58, 86, 86, 39, 39, 45, + 41, 20, 41, 90, 90, 41, 179, 179, 67, 70, + 100, 71, 39, 19, 39, 67, 99, 39, 100, 70, + 101, 67, 102, 101, 39, 39, 40, 103, 67, 70, + 40, 71, 106, 40, 40, 67, 70, 100, 71, 106, + 40, 107, 67, 40, 16, 100, 70, 101, 67, 102, + 101, 183, 183, 40, 103, 67, 70, 40, 71, 106, + 40, 40, 11, 7, 4, 77, 106, 40, 107, 3, + 40, 61, 61, 84, 61, 61, 61, 61, 61, 61, + 68, 61, 61, 61, 68, 77, 72, 61, 68, 61, - 61, 61, 106, 72, 77, 84, 67, 114, 115, 16, - 72, 77, 67, 61, 72, 61, 100, 113, 113, 67, - 72, 61, 106, 61, 100, 84, 116, 61, 61, 106, - 72, 77, 84, 117, 114, 115, 61, 62, 62, 11, - 62, 62, 62, 62, 62, 62, 73, 62, 62, 62, - 73, 76, 84, 116, 62, 76, 73, 118, 101, 78, - 117, 101, 76, 78, 120, 121, 73, 83, 76, 7, - 83, 83, 4, 73, 62, 76, 3, 73, 76, 78, - 0, 62, 76, 73, 118, 101, 78, 83, 101, 76, - 78, 120, 121, 73, 83, 76, 81, 83, 83, 104, + 72, 104, 77, 84, 68, 61, 72, 61, 109, 113, + 84, 61, 61, 114, 68, 104, 72, 68, 109, 115, + 0, 68, 77, 72, 61, 68, 61, 72, 104, 0, + 84, 68, 61, 72, 61, 109, 113, 0, 61, 61, + 114, 68, 104, 72, 116, 109, 115, 61, 62, 62, + 0, 62, 62, 62, 62, 62, 62, 73, 62, 62, + 62, 73, 76, 0, 110, 62, 76, 73, 117, 110, + 78, 116, 119, 76, 78, 112, 112, 73, 83, 76, + 0, 83, 83, 120, 73, 62, 76, 0, 73, 76, + 78, 110, 62, 76, 73, 117, 110, 78, 83, 119, - 122, 62, 76, 62, 63, 81, 78, 81, 63, 109, - 81, 63, 123, 104, 83, 108, 81, 108, 63, 109, - 111, 63, 63, 81, 124, 111, 104, 122, 63, 0, - 0, 63, 81, 0, 81, 63, 109, 81, 63, 123, - 104, 0, 108, 81, 108, 63, 109, 111, 63, 63, - 82, 124, 111, 0, 82, 63, 64, 112, 82, 119, - 64, 119, 112, 125, 64, 119, 126, 127, 112, 129, - 64, 130, 119, 64, 82, 112, 119, 82, 132, 128, - 64, 82, 128, 64, 112, 82, 119, 64, 119, 112, - 125, 64, 119, 126, 127, 112, 129, 64, 130, 119, + 76, 78, 112, 112, 73, 83, 76, 81, 83, 83, + 120, 121, 62, 76, 62, 63, 81, 78, 81, 63, + 122, 81, 63, 123, 108, 83, 108, 81, 108, 63, + 124, 125, 63, 126, 81, 128, 129, 131, 121, 63, + 0, 0, 63, 81, 0, 81, 63, 122, 81, 63, + 123, 108, 0, 108, 81, 108, 63, 124, 125, 63, + 126, 82, 128, 129, 131, 82, 63, 64, 111, 82, + 118, 64, 118, 111, 127, 64, 118, 127, 132, 111, + 0, 64, 134, 118, 64, 82, 111, 118, 82, 135, + 0, 64, 82, 136, 64, 111, 82, 118, 64, 118, - 64, 82, 112, 119, 133, 132, 128, 64, 65, 128, - 134, 135, 136, 137, 138, 65, 139, 65, 139, 140, - 134, 140, 65, 141, 142, 134, 134, 65, 65, 0, - 143, 133, 140, 0, 144, 65, 145, 134, 135, 136, - 137, 138, 65, 139, 65, 139, 140, 134, 140, 65, - 141, 142, 134, 134, 65, 65, 66, 143, 146, 140, - 66, 144, 147, 145, 66, 148, 150, 66, 151, 152, - 66, 153, 155, 66, 154, 156, 66, 155, 154, 157, - 66, 0, 0, 66, 159, 146, 160, 66, 0, 147, - 0, 66, 148, 150, 66, 151, 152, 66, 153, 155, + 111, 127, 64, 118, 127, 132, 111, 133, 64, 134, + 118, 64, 82, 111, 118, 137, 135, 133, 64, 65, + 136, 140, 133, 133, 141, 138, 65, 138, 65, 142, + 139, 143, 139, 65, 133, 144, 145, 146, 65, 65, + 0, 147, 137, 139, 133, 149, 65, 150, 140, 133, + 133, 141, 138, 65, 138, 65, 142, 139, 143, 139, + 65, 151, 144, 145, 146, 65, 65, 66, 147, 152, + 139, 66, 149, 153, 150, 66, 155, 153, 66, 156, + 154, 66, 158, 159, 66, 154, 0, 66, 151, 160, + 161, 66, 0, 0, 66, 0, 152, 163, 66, 0, - 66, 154, 156, 66, 155, 154, 157, 66, 69, 69, - 158, 159, 161, 160, 162, 69, 69, 69, 163, 158, - 164, 165, 69, 166, 167, 168, 170, 158, 69, 0, - 171, 164, 0, 0, 172, 69, 69, 158, 0, 161, - 172, 162, 69, 69, 69, 163, 158, 164, 165, 69, - 166, 167, 168, 170, 158, 69, 74, 171, 164, 169, - 74, 172, 169, 174, 175, 173, 176, 172, 192, 0, - 74, 0, 0, 0, 276, 278, 74, 74, 173, 279, - 74, 0, 0, 74, 0, 0, 169, 74, 192, 169, - 174, 175, 173, 176, 0, 192, 194, 74, 193, 193, + 153, 0, 66, 155, 153, 66, 156, 154, 66, 158, + 159, 66, 154, 157, 66, 164, 160, 161, 66, 69, + 69, 162, 157, 165, 163, 166, 69, 69, 69, 168, + 157, 167, 162, 69, 167, 169, 172, 170, 171, 69, + 157, 173, 164, 170, 0, 174, 69, 69, 162, 157, + 165, 171, 166, 69, 69, 69, 168, 157, 167, 162, + 69, 167, 169, 172, 170, 171, 69, 74, 173, 190, + 170, 74, 174, 0, 191, 191, 194, 0, 171, 194, + 194, 74, 272, 0, 192, 274, 0, 74, 74, 190, + 0, 74, 0, 0, 74, 191, 190, 275, 74, 192, - 197, 276, 278, 74, 74, 173, 279, 74, 75, 75, - 0, 194, 200, 197, 281, 192, 194, 75, 0, 193, - 197, 75, 0, 194, 75, 193, 193, 197, 75, 0, - 195, 0, 200, 0, 0, 75, 75, 195, 194, 200, - 197, 281, 0, 194, 75, 195, 193, 197, 75, 196, - 195, 75, 196, 196, 283, 75, 79, 195, 79, 200, - 198, 79, 198, 284, 195, 285, 287, 288, 79, 79, - 0, 0, 195, 196, 0, 289, 196, 195, 79, 196, - 196, 283, 198, 79, 215, 79, 0, 198, 79, 198, - 284, 215, 285, 287, 288, 79, 79, 199, 199, 0, + 194, 191, 191, 194, 192, 0, 194, 194, 74, 272, + 193, 192, 274, 198, 74, 74, 190, 193, 74, 75, + 75, 195, 191, 277, 275, 193, 192, 194, 75, 208, + 193, 192, 75, 198, 195, 75, 196, 193, 196, 75, + 198, 195, 0, 208, 193, 0, 75, 75, 195, 208, + 277, 0, 193, 0, 279, 75, 208, 193, 196, 75, + 198, 195, 75, 196, 199, 196, 75, 79, 195, 79, + 208, 199, 79, 197, 197, 212, 208, 280, 199, 79, + 79, 279, 212, 0, 199, 196, 281, 283, 197, 79, + 0, 199, 284, 197, 79, 212, 79, 0, 199, 79, - 196, 201, 289, 0, 215, 79, 80, 80, 201, 198, - 80, 215, 199, 80, 80, 201, 0, 199, 215, 0, - 80, 201, 202, 80, 199, 199, 202, 0, 201, 0, - 80, 215, 226, 80, 80, 201, 203, 80, 205, 199, - 80, 80, 201, 203, 199, 203, 202, 80, 201, 202, - 80, 204, 226, 202, 206, 205, 203, 80, 205, 226, - 0, 204, 0, 203, 0, 205, 212, 212, 290, 206, - 203, 204, 203, 202, 206, 0, 0, 208, 204, 226, - 0, 206, 205, 203, 0, 205, 0, 212, 204, 209, - 208, 208, 228, 212, 212, 290, 206, 208, 204, 0, + 197, 197, 212, 0, 280, 199, 79, 79, 200, 212, + 206, 199, 200, 281, 283, 197, 79, 80, 285, 284, + 197, 80, 212, 202, 80, 80, 206, 203, 286, 201, + 206, 80, 200, 202, 80, 200, 201, 206, 201, 200, + 201, 80, 203, 202, 80, 285, 287, 203, 80, 201, + 202, 80, 80, 206, 203, 286, 201, 206, 80, 200, + 202, 80, 210, 201, 210, 201, 205, 201, 80, 203, + 202, 209, 209, 287, 203, 288, 201, 204, 0, 205, + 205, 204, 204, 0, 210, 282, 205, 282, 204, 210, + 207, 210, 209, 205, 0, 204, 213, 289, 209, 209, - 291, 206, 207, 228, 208, 209, 207, 207, 211, 209, - 0, 210, 228, 207, 212, 293, 209, 208, 208, 228, - 207, 210, 211, 213, 208, 213, 207, 291, 211, 207, - 228, 210, 209, 207, 207, 211, 209, 216, 210, 228, - 207, 217, 293, 0, 216, 213, 0, 207, 210, 211, - 213, 217, 213, 207, 218, 211, 219, 216, 210, 0, - 221, 217, 220, 0, 216, 295, 219, 218, 217, 220, - 221, 216, 213, 214, 218, 214, 219, 296, 217, 214, - 221, 218, 220, 219, 216, 0, 214, 221, 217, 220, - 214, 0, 295, 219, 218, 214, 220, 221, 222, 225, + 207, 204, 288, 213, 204, 215, 205, 205, 204, 204, + 207, 210, 282, 205, 282, 204, 213, 207, 215, 209, + 291, 214, 204, 213, 289, 215, 216, 207, 204, 292, + 213, 214, 215, 0, 294, 0, 216, 207, 211, 223, + 211, 214, 217, 213, 211, 215, 216, 291, 214, 217, + 295, 211, 215, 216, 218, 211, 292, 0, 214, 223, + 211, 294, 217, 216, 218, 211, 223, 211, 214, 217, + 219, 211, 0, 216, 218, 221, 217, 295, 211, 220, + 219, 218, 211, 296, 221, 0, 223, 211, 222, 217, + 219, 218, 225, 220, 224, 221, 220, 219, 224, 220, - 214, 218, 214, 219, 296, 0, 214, 221, 222, 220, - 223, 224, 227, 214, 0, 225, 227, 214, 222, 225, - 224, 232, 214, 298, 223, 222, 225, 223, 299, 0, - 223, 224, 227, 0, 0, 222, 231, 223, 224, 227, - 231, 232, 225, 227, 230, 222, 225, 224, 232, 0, - 298, 223, 244, 230, 223, 299, 231, 223, 224, 227, - 229, 229, 241, 231, 230, 233, 233, 231, 232, 241, - 229, 230, 244, 300, 0, 229, 229, 0, 234, 244, - 230, 229, 241, 231, 234, 233, 234, 229, 229, 241, - 0, 230, 233, 233, 0, 301, 241, 229, 234, 244, + 297, 218, 221, 225, 222, 298, 220, 219, 222, 227, + 296, 221, 225, 229, 224, 222, 0, 219, 227, 225, + 220, 224, 221, 220, 228, 224, 220, 297, 228, 227, + 225, 222, 298, 229, 0, 222, 227, 299, 301, 225, + 229, 224, 226, 226, 228, 227, 230, 230, 233, 0, + 0, 228, 226, 0, 302, 228, 227, 226, 226, 0, + 229, 233, 0, 226, 299, 301, 230, 293, 233, 226, + 226, 228, 231, 230, 230, 233, 241, 234, 231, 226, + 231, 302, 293, 0, 226, 226, 234, 232, 233, 232, + 226, 232, 231, 230, 293, 233, 241, 234, 0, 231, - 300, 237, 229, 229, 236, 234, 238, 0, 229, 241, - 237, 234, 233, 234, 235, 238, 235, 236, 235, 239, - 240, 237, 301, 0, 236, 234, 238, 235, 237, 0, - 0, 236, 242, 238, 239, 240, 242, 237, 235, 239, - 240, 235, 238, 235, 236, 235, 239, 240, 237, 243, - 243, 236, 302, 238, 235, 246, 242, 245, 245, 242, - 247, 239, 240, 242, 248, 235, 239, 240, 248, 243, - 246, 0, 251, 247, 251, 246, 243, 243, 245, 302, - 247, 0, 246, 242, 245, 245, 249, 247, 248, 250, - 249, 248, 251, 303, 0, 248, 243, 246, 250, 251, + 232, 235, 236, 241, 234, 231, 256, 231, 0, 293, + 235, 232, 303, 234, 232, 237, 232, 236, 232, 231, + 0, 235, 236, 241, 234, 238, 256, 232, 235, 236, + 237, 304, 238, 256, 0, 237, 239, 235, 232, 303, + 239, 243, 237, 305, 236, 238, 240, 240, 235, 236, + 242, 242, 238, 256, 0, 0, 243, 237, 304, 238, + 239, 243, 237, 239, 306, 0, 240, 239, 243, 244, + 305, 242, 238, 240, 240, 245, 307, 242, 242, 245, + 246, 247, 244, 243, 246, 0, 0, 239, 243, 244, + 247, 306, 248, 240, 248, 247, 244, 308, 242, 245, - 247, 251, 246, 250, 305, 245, 249, 247, 252, 250, - 0, 252, 253, 249, 253, 248, 250, 249, 0, 251, - 303, 253, 254, 256, 255, 250, 260, 256, 252, 253, - 250, 305, 254, 249, 253, 252, 250, 255, 252, 253, - 257, 253, 254, 257, 255, 258, 260, 256, 253, 254, - 256, 255, 258, 260, 256, 252, 253, 306, 259, 254, - 261, 253, 0, 257, 255, 258, 259, 257, 261, 254, - 257, 255, 258, 260, 256, 0, 0, 259, 259, 258, - 261, 263, 264, 262, 306, 259, 264, 261, 0, 264, - 257, 307, 258, 259, 262, 261, 0, 263, 265, 265, + 246, 247, 245, 307, 0, 251, 245, 246, 247, 244, + 249, 246, 248, 249, 309, 251, 244, 247, 310, 248, + 311, 248, 247, 252, 308, 251, 245, 246, 247, 250, + 249, 250, 251, 312, 0, 0, 252, 249, 250, 248, + 249, 309, 251, 252, 253, 310, 250, 311, 253, 313, + 252, 250, 251, 0, 0, 0, 250, 249, 250, 254, + 312, 255, 254, 252, 257, 250, 0, 0, 253, 255, + 252, 253, 257, 250, 258, 253, 313, 259, 250, 0, + 255, 255, 254, 260, 257, 258, 254, 260, 255, 254, + 260, 257, 0, 259, 258, 253, 255, 259, 262, 257, - 0, 263, 264, 262, 259, 259, 0, 261, 263, 264, - 262, 266, 269, 264, 0, 266, 264, 308, 307, 265, - 267, 262, 0, 268, 263, 265, 265, 267, 263, 264, - 262, 266, 269, 267, 309, 310, 268, 270, 266, 269, - 267, 271, 266, 268, 308, 271, 265, 267, 311, 286, - 268, 286, 270, 312, 267, 313, 297, 270, 266, 269, - 267, 309, 310, 268, 270, 271, 315, 267, 271, 316, - 268, 297, 271, 317, 318, 311, 286, 319, 286, 270, - 312, 320, 313, 297, 270, 321, 322, 323, 324, 325, - 326, 327, 271, 315, 329, 328, 316, 330, 297, 332, + 0, 258, 262, 260, 259, 261, 261, 255, 255, 254, + 260, 257, 258, 314, 260, 263, 0, 260, 262, 265, + 259, 258, 263, 264, 259, 262, 261, 267, 263, 262, + 260, 267, 261, 261, 315, 263, 264, 266, 316, 265, + 314, 317, 263, 264, 318, 262, 265, 319, 320, 263, + 264, 267, 266, 261, 267, 263, 321, 266, 267, 322, + 323, 315, 263, 264, 266, 316, 265, 324, 317, 325, + 264, 318, 326, 328, 319, 320, 329, 324, 267, 266, + 330, 331, 332, 321, 266, 333, 322, 323, 334, 335, + 336, 337, 339, 340, 324, 341, 325, 342, 343, 326, - 317, 318, 333, 334, 319, 328, 335, 336, 320, 337, - 338, 339, 321, 322, 323, 324, 325, 326, 327, 340, - 341, 329, 328, 343, 330, 344, 332, 345, 346, 333, - 334, 347, 328, 335, 336, 348, 337, 338, 339, 349, - 350, 351, 352, 353, 354, 355, 340, 341, 356, 357, - 343, 359, 344, 360, 345, 346, 361, 362, 347, 364, - 365, 366, 348, 367, 369, 371, 349, 350, 351, 352, - 353, 354, 355, 369, 372, 356, 357, 370, 359, 370, - 360, 373, 374, 361, 362, 375, 364, 365, 366, 376, - 367, 369, 371, 377, 378, 379, 380, 383, 378, 384, + 328, 344, 345, 329, 324, 346, 347, 330, 331, 332, + 348, 349, 333, 350, 351, 334, 335, 336, 337, 339, + 340, 352, 341, 353, 342, 343, 355, 356, 344, 345, + 357, 358, 346, 347, 359, 360, 361, 348, 349, 362, + 350, 351, 364, 365, 366, 365, 367, 368, 352, 369, + 353, 364, 370, 355, 356, 371, 372, 357, 358, 374, + 373, 359, 360, 361, 373, 375, 362, 0, 378, 364, + 365, 366, 365, 367, 368, 483, 369, 379, 364, 370, + 380, 381, 371, 372, 484, 383, 374, 373, 378, 382, + 384, 373, 375, 385, 384, 378, 382, 379, 0, 485, - 369, 372, 0, 0, 370, 0, 370, 385, 373, 374, - 386, 387, 375, 388, 489, 390, 376, 383, 387, 384, - 377, 378, 379, 380, 383, 378, 384, 385, 389, 391, - 386, 387, 389, 388, 385, 390, 0, 386, 387, 391, - 388, 489, 390, 392, 383, 387, 384, 400, 401, 391, - 0, 394, 389, 394, 385, 389, 391, 386, 387, 389, - 388, 392, 390, 392, 393, 396, 391, 400, 401, 395, - 392, 393, 490, 394, 400, 401, 391, 402, 394, 389, - 394, 396, 395, 398, 393, 396, 397, 398, 392, 395, - 392, 393, 396, 0, 400, 401, 395, 402, 393, 490, + 380, 381, 483, 0, 379, 383, 0, 380, 381, 382, + 0, 484, 383, 385, 384, 378, 382, 384, 0, 386, + 385, 384, 390, 382, 379, 387, 485, 380, 381, 386, + 388, 389, 383, 389, 0, 390, 382, 388, 0, 386, + 385, 384, 390, 387, 0, 387, 386, 391, 393, 390, + 388, 395, 387, 389, 0, 394, 386, 388, 389, 394, + 389, 392, 390, 391, 388, 395, 386, 391, 393, 390, + 387, 395, 387, 396, 391, 393, 392, 388, 395, 394, + 389, 392, 394, 399, 397, 0, 394, 399, 392, 398, + 391, 486, 395, 396, 391, 393, 398, 400, 395, 401, - 394, 397, 0, 399, 402, 491, 397, 398, 396, 395, - 398, 393, 396, 397, 398, 403, 395, 399, 0, 0, - 407, 404, 403, 399, 402, 404, 405, 0, 397, 406, - 399, 406, 491, 397, 398, 403, 0, 492, 0, 408, - 407, 405, 403, 493, 399, 404, 405, 407, 404, 403, - 399, 406, 404, 405, 408, 411, 406, 409, 406, 408, - 409, 494, 403, 410, 492, 412, 408, 407, 405, 0, - 493, 414, 404, 405, 410, 411, 420, 415, 406, 415, - 409, 408, 411, 410, 409, 412, 408, 409, 494, 413, - 410, 414, 412, 413, 416, 0, 420, 0, 414, 415, + 396, 401, 402, 392, 397, 406, 394, 399, 392, 398, + 399, 397, 400, 0, 399, 403, 398, 400, 486, 0, + 396, 401, 402, 398, 400, 406, 401, 405, 401, 402, + 403, 397, 406, 0, 399, 403, 398, 404, 405, 400, + 404, 407, 403, 0, 400, 0, 408, 405, 401, 402, + 408, 409, 406, 410, 405, 410, 0, 403, 0, 412, + 404, 407, 403, 0, 404, 405, 412, 404, 407, 411, + 408, 409, 413, 408, 405, 410, 487, 408, 409, 412, + 410, 414, 410, 411, 415, 413, 412, 404, 407, 411, + 416, 0, 413, 412, 416, 414, 411, 408, 409, 413, - 496, 410, 411, 420, 415, 419, 415, 409, 416, 418, - 410, 422, 412, 413, 416, 0, 413, 417, 414, 419, - 413, 416, 418, 420, 417, 419, 415, 496, 0, 418, - 421, 422, 419, 499, 421, 416, 418, 417, 422, 423, - 413, 416, 425, 424, 417, 425, 419, 423, 0, 418, - 424, 417, 419, 0, 421, 426, 418, 421, 422, 423, - 499, 421, 0, 424, 417, 425, 423, 430, 433, 425, - 424, 426, 425, 427, 423, 426, 427, 424, 0, 428, - 430, 421, 426, 428, 0, 431, 423, 430, 433, 429, - 424, 431, 425, 427, 430, 433, 500, 434, 426, 428, + 0, 414, 410, 487, 415, 417, 412, 418, 414, 488, + 411, 415, 413, 417, 416, 418, 411, 416, 424, 413, + 0, 416, 414, 419, 0, 417, 420, 418, 414, 420, + 419, 415, 417, 424, 418, 421, 488, 0, 424, 490, + 417, 416, 418, 419, 422, 424, 0, 422, 425, 420, + 419, 421, 417, 420, 418, 421, 420, 419, 0, 423, + 424, 425, 421, 423, 422, 424, 490, 426, 425, 428, + 419, 422, 429, 426, 422, 425, 420, 430, 421, 423, + 0, 0, 421, 427, 0, 432, 423, 426, 425, 428, + 423, 422, 429, 427, 426, 425, 428, 430, 431, 429, - 427, 432, 426, 427, 429, 431, 428, 430, 0, 429, - 428, 432, 431, 435, 430, 433, 429, 434, 431, 436, - 427, 432, 439, 500, 434, 437, 428, 0, 432, 436, - 0, 429, 431, 435, 438, 440, 429, 441, 432, 436, - 435, 437, 439, 438, 434, 437, 436, 442, 432, 439, - 440, 442, 437, 450, 438, 440, 436, 441, 443, 443, - 435, 438, 440, 445, 441, 445, 436, 442, 437, 439, - 438, 444, 437, 450, 442, 444, 448, 440, 442, 443, - 450, 438, 440, 445, 441, 443, 443, 446, 447, 446, - 445, 448, 445, 449, 442, 444, 448, 501, 444, 454, + 426, 432, 433, 427, 430, 432, 423, 434, 431, 0, + 427, 433, 432, 436, 426, 0, 428, 0, 431, 429, + 427, 435, 433, 493, 430, 431, 0, 434, 432, 433, + 427, 0, 432, 436, 434, 431, 435, 442, 433, 437, + 436, 435, 440, 437, 440, 431, 438, 438, 435, 433, + 493, 439, 494, 442, 434, 439, 441, 442, 441, 437, + 436, 444, 440, 435, 442, 0, 437, 438, 435, 440, + 437, 440, 443, 438, 438, 439, 441, 444, 439, 494, + 442, 444, 439, 441, 442, 441, 437, 443, 444, 440, + 445, 446, 443, 447, 438, 448, 449, 0, 446, 443, - 450, 455, 444, 448, 447, 451, 443, 446, 447, 449, - 445, 0, 451, 449, 446, 447, 446, 452, 448, 454, - 449, 455, 444, 448, 501, 451, 454, 453, 455, 456, - 452, 447, 451, 456, 446, 447, 449, 452, 458, 451, - 449, 453, 457, 0, 452, 0, 454, 453, 455, 458, - 463, 457, 451, 456, 453, 459, 456, 452, 458, 0, - 456, 502, 457, 459, 452, 458, 461, 460, 453, 457, - 463, 460, 465, 504, 453, 459, 458, 463, 457, 0, - 456, 461, 459, 466, 462, 458, 461, 462, 502, 457, - 459, 460, 465, 461, 460, 464, 505, 463, 460, 465, + 496, 450, 439, 441, 444, 0, 447, 497, 444, 448, + 445, 446, 499, 447, 443, 448, 449, 445, 446, 443, + 447, 450, 448, 449, 453, 446, 451, 496, 450, 500, + 451, 0, 452, 447, 497, 453, 448, 445, 446, 499, + 447, 452, 448, 449, 453, 455, 454, 458, 450, 455, + 451, 453, 452, 451, 454, 456, 500, 451, 457, 452, + 501, 457, 453, 0, 460, 502, 454, 458, 452, 455, + 456, 453, 455, 454, 458, 456, 455, 451, 457, 452, + 459, 454, 456, 461, 460, 457, 462, 501, 457, 0, + 459, 460, 502, 454, 458, 0, 455, 456, 466, 463, - 504, 468, 459, 466, 462, 464, 467, 471, 461, 0, - 466, 462, 0, 461, 462, 464, 468, 506, 460, 465, - 469, 468, 464, 505, 467, 0, 467, 471, 468, 470, - 466, 462, 464, 467, 471, 469, 470, 473, 475, 472, - 469, 476, 464, 468, 506, 0, 507, 469, 468, 470, - 472, 467, 473, 467, 471, 0, 470, 473, 475, 472, - 474, 476, 469, 470, 473, 475, 472, 469, 476, 474, - 0, 508, 477, 507, 0, 0, 470, 472, 480, 473, - 474, 477, 480, 478, 473, 475, 472, 474, 476, 509, - 0, 479, 477, 478, 510, 478, 474, 481, 508, 477, + 459, 464, 456, 461, 462, 457, 462, 459, 0, 466, + 461, 460, 0, 462, 463, 465, 464, 459, 466, 463, + 468, 464, 465, 0, 467, 466, 463, 459, 464, 468, + 461, 462, 469, 462, 470, 465, 466, 0, 0, 467, + 468, 463, 465, 464, 467, 466, 463, 468, 464, 465, + 473, 467, 469, 472, 470, 471, 468, 0, 503, 469, + 473, 470, 465, 472, 471, 472, 467, 468, 476, 0, + 473, 467, 474, 472, 475, 471, 474, 473, 479, 469, + 472, 470, 471, 475, 476, 503, 504, 473, 476, 478, + 472, 471, 472, 479, 475, 476, 474, 473, 479, 474, - 0, 479, 480, 478, 0, 480, 481, 474, 477, 480, - 478, 479, 483, 0, 483, 482, 509, 481, 479, 477, - 478, 510, 478, 0, 481, 484, 511, 488, 479, 480, - 478, 482, 514, 481, 483, 482, 485, 486, 479, 483, - 488, 483, 482, 484, 481, 484, 486, 488, 515, 516, - 486, 485, 484, 511, 488, 517, 485, 486, 482, 514, - 518, 483, 482, 485, 486, 487, 519, 488, 487, 520, - 484, 522, 484, 486, 488, 515, 516, 486, 485, 525, - 526, 528, 517, 485, 486, 487, 531, 518, 532, 533, - 534, 535, 487, 519, 536, 487, 520, 538, 522, 542, + 472, 475, 471, 474, 477, 479, 477, 478, 0, 478, + 475, 476, 0, 504, 505, 476, 478, 0, 506, 480, + 479, 475, 482, 474, 481, 479, 477, 481, 480, 509, + 510, 477, 480, 477, 478, 482, 478, 511, 512, 480, + 513, 505, 482, 514, 481, 506, 480, 515, 517, 482, + 518, 481, 521, 477, 481, 480, 509, 510, 522, 480, + 524, 527, 482, 528, 511, 512, 480, 513, 529, 482, + 514, 481, 530, 531, 515, 517, 534, 518, 532, 521, + 538, 540, 542, 543, 543, 522, 544, 524, 527, 532, + 528, 545, 547, 548, 549, 529, 550, 551, 553, 530, - 544, 546, 547, 547, 548, 536, 525, 526, 528, 549, - 551, 552, 487, 531, 553, 532, 533, 534, 535, 554, - 555, 536, 557, 558, 538, 559, 542, 544, 546, 547, - 547, 548, 536, 560, 561, 562, 549, 551, 552, 563, - 564, 553, 566, 567, 568, 569, 554, 555, 572, 557, - 558, 574, 559, 575, 576, 577, 578, 579, 580, 581, - 560, 561, 562, 583, 585, 0, 563, 564, 590, 566, - 567, 568, 569, 591, 588, 572, 589, 593, 574, 592, - 575, 576, 577, 578, 579, 580, 581, 588, 590, 589, - 583, 585, 592, 591, 588, 590, 589, 593, 594, 592, + 531, 554, 555, 534, 556, 532, 557, 538, 540, 542, + 543, 543, 558, 544, 559, 560, 532, 562, 545, 547, + 548, 549, 563, 550, 551, 553, 564, 565, 554, 555, + 568, 556, 570, 557, 571, 572, 573, 574, 575, 558, + 576, 559, 560, 577, 562, 579, 581, 0, 0, 563, + 0, 586, 0, 564, 565, 584, 585, 568, 0, 570, + 587, 571, 572, 573, 574, 575, 588, 576, 584, 585, + 577, 586, 579, 581, 589, 584, 585, 590, 586, 588, + 587, 591, 584, 585, 0, 591, 588, 587, 0, 592, + 593, 594, 0, 588, 589, 584, 585, 590, 586, 594, - 591, 588, 0, 589, 593, 595, 592, 596, 597, 595, - 689, 691, 0, 692, 588, 590, 589, 0, 594, 592, - 591, 588, 598, 589, 593, 594, 592, 596, 597, 595, - 598, 599, 595, 600, 596, 597, 595, 689, 691, 602, - 692, 0, 598, 603, 599, 594, 693, 601, 600, 598, - 603, 599, 604, 600, 596, 597, 595, 598, 599, 602, - 600, 601, 0, 603, 0, 694, 602, 601, 604, 598, - 603, 599, 604, 693, 601, 600, 605, 603, 599, 604, - 600, 606, 0, 0, 607, 606, 602, 608, 601, 608, - 603, 605, 694, 610, 601, 604, 605, 607, 695, 604, + 0, 589, 584, 585, 590, 591, 588, 587, 591, 592, + 593, 594, 591, 588, 595, 596, 592, 593, 594, 598, + 687, 589, 0, 599, 590, 597, 594, 595, 689, 690, + 0, 691, 591, 598, 595, 596, 592, 593, 594, 598, + 597, 595, 596, 599, 600, 597, 598, 687, 602, 601, + 599, 600, 597, 603, 595, 689, 690, 603, 691, 0, + 598, 595, 596, 602, 600, 601, 598, 597, 602, 601, + 599, 600, 597, 604, 0, 602, 601, 603, 600, 605, + 603, 605, 607, 606, 603, 608, 604, 606, 0, 607, + 602, 600, 601, 604, 0, 602, 601, 609, 692, 612, - 610, 611, 609, 605, 607, 606, 609, 0, 606, 608, - 612, 607, 606, 610, 608, 613, 608, 696, 605, 698, - 610, 611, 609, 605, 607, 695, 613, 610, 611, 609, - 612, 607, 606, 609, 614, 613, 608, 612, 699, 615, - 610, 700, 613, 616, 696, 614, 698, 617, 611, 609, - 702, 617, 618, 613, 614, 615, 618, 612, 616, 615, - 619, 614, 613, 616, 620, 699, 615, 703, 700, 622, - 616, 617, 614, 621, 617, 623, 618, 702, 617, 618, - 619, 614, 615, 618, 620, 616, 615, 619, 621, 622, - 616, 620, 0, 621, 703, 623, 622, 624, 617, 625, + 604, 605, 607, 606, 603, 608, 605, 610, 605, 607, + 606, 611, 608, 604, 606, 612, 607, 609, 610, 612, + 604, 613, 611, 616, 609, 692, 612, 610, 605, 607, + 606, 611, 608, 614, 610, 615, 613, 614, 611, 615, + 0, 613, 612, 616, 609, 610, 612, 617, 613, 611, + 616, 619, 620, 621, 610, 619, 618, 614, 611, 615, + 614, 622, 615, 613, 614, 622, 615, 617, 613, 624, + 616, 618, 620, 621, 617, 619, 618, 0, 619, 620, + 621, 693, 619, 618, 614, 622, 615, 626, 622, 624, + 623, 627, 622, 628, 617, 625, 624, 0, 618, 620, - 621, 624, 623, 618, 0, 626, 0, 619, 0, 627, - 625, 620, 704, 628, 629, 621, 622, 0, 627, 625, - 621, 624, 623, 630, 624, 626, 625, 0, 624, 627, - 0, 631, 626, 628, 629, 632, 627, 625, 0, 704, - 628, 629, 0, 630, 631, 627, 625, 636, 624, 0, - 630, 631, 626, 633, 632, 632, 627, 637, 631, 634, - 628, 629, 632, 635, 637, 635, 633, 636, 638, 639, - 630, 631, 634, 633, 636, 0, 635, 637, 631, 634, - 633, 632, 632, 635, 637, 640, 634, 641, 638, 639, - 635, 637, 635, 633, 636, 638, 639, 642, 644, 634, + 621, 623, 619, 618, 625, 630, 629, 626, 693, 0, + 623, 627, 622, 628, 626, 625, 624, 623, 627, 629, + 628, 0, 625, 631, 630, 630, 629, 694, 623, 634, + 0, 625, 630, 629, 626, 632, 631, 623, 627, 636, + 628, 637, 625, 631, 696, 633, 629, 633, 632, 634, + 631, 630, 630, 629, 694, 632, 634, 635, 633, 636, + 638, 637, 632, 631, 635, 633, 636, 697, 637, 640, + 631, 696, 633, 698, 633, 632, 634, 635, 639, 642, + 638, 643, 632, 641, 635, 633, 636, 638, 637, 640, + 641, 635, 633, 639, 697, 647, 640, 0, 639, 642, - 633, 643, 641, 635, 637, 640, 634, 641, 643, 0, - 635, 645, 640, 0, 641, 638, 639, 642, 644, 0, - 647, 643, 646, 647, 642, 644, 648, 0, 643, 641, - 0, 645, 640, 705, 641, 643, 646, 646, 645, 648, - 647, 649, 646, 0, 642, 644, 648, 647, 643, 646, - 647, 651, 650, 648, 650, 0, 655, 652, 645, 0, - 705, 649, 653, 646, 646, 0, 648, 647, 649, 646, - 652, 651, 654, 648, 650, 653, 655, 652, 651, 650, - 654, 650, 653, 655, 652, 658, 656, 657, 649, 653, - 656, 657, 654, 658, 0, 659, 706, 652, 651, 654, + 698, 643, 0, 641, 635, 639, 642, 638, 643, 644, + 641, 645, 0, 700, 645, 647, 640, 641, 0, 646, + 639, 0, 647, 644, 644, 639, 642, 649, 643, 644, + 641, 645, 646, 648, 0, 648, 644, 0, 645, 646, + 700, 645, 647, 653, 650, 652, 646, 649, 651, 701, + 644, 644, 0, 652, 649, 648, 644, 650, 645, 646, + 648, 651, 648, 653, 650, 652, 646, 0, 651, 654, + 653, 650, 652, 654, 649, 651, 701, 655, 656, 658, + 652, 655, 648, 702, 650, 661, 656, 661, 651, 657, + 653, 650, 652, 654, 658, 651, 654, 0, 656, 658, - 0, 650, 653, 655, 652, 658, 660, 654, 659, 653, - 656, 657, 658, 656, 657, 659, 661, 656, 657, 654, - 658, 660, 659, 706, 661, 662, 660, 663, 0, 663, - 664, 0, 658, 660, 662, 659, 661, 656, 657, 665, - 666, 0, 659, 661, 666, 662, 707, 0, 660, 663, - 664, 661, 662, 660, 663, 667, 663, 664, 668, 665, - 666, 662, 0, 661, 669, 708, 665, 666, 668, 670, - 672, 666, 662, 707, 671, 667, 663, 664, 668, 709, - 0, 673, 667, 673, 669, 668, 665, 666, 671, 670, - 672, 669, 708, 675, 671, 668, 670, 672, 674, 677, + 654, 655, 657, 659, 655, 656, 658, 661, 655, 657, + 702, 659, 661, 656, 661, 660, 657, 662, 0, 663, + 654, 658, 0, 659, 660, 656, 658, 664, 655, 657, + 659, 664, 665, 666, 661, 660, 657, 662, 659, 663, + 0, 667, 660, 666, 662, 668, 663, 664, 0, 669, + 659, 660, 665, 666, 664, 670, 0, 703, 664, 665, + 666, 667, 660, 669, 662, 668, 663, 673, 667, 669, + 666, 671, 668, 671, 664, 670, 669, 672, 0, 665, + 666, 674, 670, 673, 703, 674, 672, 673, 667, 677, + 669, 675, 668, 671, 673, 0, 669, 672, 671, 676, - 676, 671, 667, 673, 676, 668, 709, 674, 673, 675, - 673, 669, 679, 675, 677, 671, 670, 672, 674, 677, - 675, 671, 681, 683, 676, 674, 677, 676, 684, 0, - 673, 676, 679, 678, 674, 678, 675, 0, 682, 679, - 675, 677, 681, 683, 680, 674, 677, 680, 684, 681, - 683, 676, 685, 678, 682, 684, 686, 710, 682, 679, - 678, 711, 678, 714, 680, 682, 716, 718, 721, 681, - 683, 680, 685, 722, 680, 684, 686, 723, 724, 685, - 678, 682, 729, 686, 710, 682, 731, 732, 711, 733, - 714, 680, 736, 716, 718, 721, 737, 738, 739, 685, + 671, 676, 670, 679, 672, 674, 675, 681, 674, 677, + 673, 675, 674, 672, 673, 0, 677, 704, 675, 676, + 671, 680, 678, 679, 672, 678, 676, 681, 676, 705, + 679, 682, 674, 675, 681, 683, 677, 680, 675, 684, + 706, 680, 678, 707, 704, 708, 676, 709, 680, 678, + 679, 682, 678, 712, 681, 683, 705, 713, 682, 684, + 715, 717, 683, 720, 680, 721, 684, 706, 680, 678, + 707, 722, 708, 723, 709, 728, 730, 731, 682, 732, + 712, 735, 683, 736, 713, 737, 684, 715, 717, 738, + 720, 739, 721, 741, 742, 743, 744, 745, 722, 746, - 722, 740, 742, 686, 723, 724, 743, 744, 745, 729, - 746, 747, 748, 731, 732, 749, 733, 750, 752, 736, - 753, 754, 756, 737, 738, 739, 757, 758, 740, 742, - 760, 761, 763, 743, 744, 745, 764, 746, 747, 748, - 762, 833, 749, 0, 750, 752, 765, 753, 754, 756, - 760, 761, 763, 757, 758, 0, 764, 760, 761, 763, - 762, 762, 767, 764, 766, 766, 765, 762, 833, 0, - 768, 767, 0, 765, 769, 770, 771, 760, 761, 763, - 768, 0, 767, 764, 773, 766, 771, 762, 762, 767, - 768, 766, 766, 765, 769, 770, 771, 768, 767, 772, + 723, 747, 728, 730, 731, 748, 732, 749, 735, 751, + 736, 752, 737, 753, 755, 756, 738, 757, 739, 759, + 741, 742, 743, 744, 745, 760, 746, 761, 747, 762, + 763, 764, 748, 0, 749, 768, 751, 0, 752, 759, + 753, 755, 756, 0, 757, 760, 759, 761, 761, 762, + 763, 764, 760, 0, 761, 768, 762, 763, 764, 765, + 765, 766, 768, 767, 769, 0, 759, 0, 0, 770, + 766, 833, 760, 767, 761, 761, 762, 763, 764, 770, + 765, 766, 768, 767, 769, 771, 765, 765, 766, 770, + 767, 769, 771, 772, 773, 774, 770, 766, 833, 774, - 774, 769, 770, 771, 773, 835, 772, 768, 778, 767, - 775, 773, 766, 771, 775, 0, 777, 768, 779, 772, - 774, 769, 770, 771, 776, 777, 772, 774, 778, 0, - 775, 773, 835, 772, 780, 778, 777, 775, 779, 776, - 785, 775, 782, 777, 776, 779, 772, 774, 836, 780, - 0, 776, 777, 781, 780, 778, 782, 775, 786, 837, - 785, 780, 782, 777, 0, 779, 776, 785, 781, 782, - 783, 776, 0, 781, 783, 836, 780, 784, 786, 784, - 781, 780, 788, 782, 0, 786, 837, 785, 790, 782, - 783, 787, 789, 792, 789, 781, 793, 783, 787, 784, + 767, 0, 0, 775, 835, 771, 770, 765, 766, 777, + 767, 769, 771, 772, 773, 774, 770, 0, 775, 771, + 772, 773, 774, 775, 776, 0, 774, 778, 779, 777, + 775, 835, 771, 776, 0, 0, 777, 780, 836, 781, + 772, 773, 774, 779, 776, 775, 0, 778, 779, 784, + 775, 776, 780, 781, 778, 779, 777, 780, 782, 781, + 776, 783, 782, 783, 780, 836, 781, 785, 837, 784, + 779, 776, 838, 788, 778, 779, 784, 786, 782, 780, + 781, 840, 790, 783, 780, 782, 781, 785, 783, 782, + 783, 787, 786, 788, 785, 837, 784, 786, 787, 838, - 781, 783, 788, 0, 784, 786, 784, 791, 790, 788, - 838, 787, 789, 792, 0, 790, 793, 783, 787, 789, - 792, 789, 791, 793, 795, 787, 784, 791, 796, 788, - 794, 0, 798, 0, 791, 790, 799, 838, 787, 789, - 792, 800, 796, 793, 795, 794, 797, 801, 796, 791, - 794, 795, 798, 797, 791, 796, 799, 794, 802, 798, - 804, 800, 803, 799, 804, 0, 797, 801, 800, 796, - 807, 795, 794, 797, 801, 796, 840, 794, 802, 798, - 797, 806, 803, 799, 804, 802, 808, 804, 800, 803, - 807, 804, 805, 797, 801, 805, 806, 807, 809, 841, + 788, 789, 790, 789, 786, 782, 792, 791, 840, 790, + 783, 787, 793, 0, 785, 795, 794, 841, 787, 786, + 788, 789, 791, 0, 786, 787, 792, 791, 789, 790, + 789, 794, 793, 792, 791, 795, 794, 796, 787, 793, + 797, 798, 795, 794, 841, 799, 800, 797, 789, 791, + 801, 796, 843, 792, 791, 802, 803, 796, 794, 793, + 797, 798, 795, 794, 796, 799, 800, 797, 798, 845, + 801, 807, 799, 800, 797, 802, 803, 801, 796, 843, + 806, 804, 802, 803, 796, 804, 805, 797, 798, 805, + 808, 807, 799, 800, 809, 806, 845, 801, 807, 812, - 0, 806, 0, 840, 812, 802, 808, 810, 806, 803, - 813, 804, 805, 808, 813, 814, 811, 807, 809, 805, - 810, 0, 805, 806, 812, 809, 841, 810, 806, 811, - 813, 812, 843, 808, 810, 814, 811, 813, 817, 805, - 815, 813, 814, 811, 815, 809, 819, 810, 816, 816, - 819, 812, 820, 817, 810, 0, 811, 813, 817, 843, - 818, 818, 814, 811, 815, 817, 820, 815, 0, 816, - 819, 815, 820, 819, 822, 816, 816, 819, 824, 820, - 817, 818, 821, 0, 825, 817, 823, 818, 818, 822, - 823, 815, 827, 820, 822, 821, 816, 819, 824, 820, + 806, 0, 802, 803, 0, 804, 805, 806, 804, 849, + 808, 810, 804, 805, 809, 811, 805, 808, 807, 812, + 814, 809, 806, 851, 810, 813, 812, 806, 811, 813, + 815, 810, 804, 805, 815, 811, 849, 808, 810, 852, + 814, 809, 811, 816, 816, 813, 812, 814, 817, 858, + 851, 810, 813, 0, 815, 811, 813, 815, 810, 818, + 818, 815, 811, 817, 816, 819, 852, 814, 817, 819, + 816, 816, 813, 859, 820, 817, 858, 0, 822, 823, + 818, 815, 824, 823, 821, 0, 818, 818, 820, 819, + 817, 816, 819, 822, 820, 817, 819, 821, 822, 825, - 0, 822, 821, 828, 825, 824, 826, 826, 818, 821, - 823, 825, 827, 823, 845, 832, 822, 823, 829, 827, - 830, 822, 821, 828, 830, 824, 849, 826, 851, 821, - 828, 825, 829, 826, 826, 832, 831, 823, 829, 827, - 831, 845, 832, 852, 830, 829, 857, 830, 858, 861, - 828, 830, 862, 849, 826, 851, 864, 865, 866, 829, - 831, 868, 832, 831, 869, 829, 873, 831, 875, 876, - 852, 830, 877, 857, 882, 858, 861, 883, 884, 862, - 885, 0, 887, 864, 865, 866, 940, 831, 868, 0, - 889, 869, 888, 873, 886, 875, 876, 889, 884, 877, + 859, 820, 824, 823, 821, 822, 823, 818, 827, 824, + 823, 821, 826, 826, 828, 820, 819, 0, 829, 825, + 822, 820, 832, 830, 821, 822, 825, 830, 827, 824, + 823, 821, 829, 826, 828, 827, 862, 863, 829, 826, + 826, 828, 832, 865, 831, 829, 825, 830, 831, 832, + 830, 866, 867, 869, 830, 827, 870, 874, 876, 829, + 826, 828, 877, 862, 863, 829, 878, 883, 831, 832, + 865, 831, 884, 0, 830, 831, 885, 886, 866, 867, + 869, 887, 888, 870, 874, 876, 889, 891, 0, 877, + 887, 890, 942, 878, 883, 831, 885, 886, 890, 884, - 885, 882, 887, 886, 883, 884, 888, 885, 890, 887, - 889, 0, 888, 940, 886, 0, 891, 889, 891, 888, - 893, 886, 0, 0, 889, 884, 942, 885, 890, 887, - 886, 892, 943, 888, 895, 890, 897, 889, 891, 888, - 893, 886, 896, 891, 896, 891, 892, 893, 898, 894, - 899, 892, 894, 942, 895, 890, 897, 0, 892, 943, - 900, 895, 901, 897, 896, 891, 0, 893, 898, 896, - 899, 896, 894, 892, 904, 898, 894, 899, 892, 894, - 900, 895, 901, 897, 902, 903, 905, 900, 906, 901, - 907, 896, 0, 902, 904, 898, 0, 899, 909, 894, + 889, 887, 888, 885, 886, 0, 889, 891, 887, 888, + 892, 890, 892, 889, 891, 893, 894, 887, 890, 942, + 896, 0, 0, 885, 886, 890, 898, 889, 887, 888, + 893, 899, 892, 889, 891, 893, 894, 892, 890, 892, + 896, 895, 893, 894, 895, 900, 898, 896, 897, 901, + 897, 899, 0, 898, 902, 0, 0, 893, 899, 892, + 944, 0, 893, 894, 895, 900, 905, 896, 895, 901, + 897, 895, 900, 898, 902, 897, 901, 897, 899, 903, + 904, 902, 906, 907, 908, 909, 905, 944, 903, 0, + 0, 895, 900, 905, 0, 904, 901, 897, 911, 903, - 903, 904, 910, 908, 902, 903, 905, 900, 906, 901, - 907, 902, 903, 905, 911, 906, 908, 907, 909, 912, - 902, 904, 910, 908, 913, 909, 912, 903, 913, 910, - 908, 902, 903, 905, 911, 906, 914, 907, 916, 912, - 917, 911, 915, 908, 918, 909, 912, 0, 913, 910, - 908, 913, 919, 912, 919, 913, 914, 915, 916, 948, - 917, 911, 915, 914, 918, 916, 912, 917, 920, 915, - 921, 918, 922, 923, 919, 913, 0, 0, 925, 919, - 0, 919, 920, 914, 915, 916, 948, 917, 920, 915, - 921, 918, 922, 923, 929, 920, 924, 921, 925, 922, + 904, 902, 906, 907, 908, 909, 903, 904, 910, 906, + 907, 908, 909, 905, 912, 903, 913, 914, 911, 916, + 945, 910, 904, 0, 914, 911, 903, 904, 910, 906, + 907, 908, 909, 918, 912, 910, 913, 914, 915, 916, + 0, 912, 915, 913, 914, 911, 916, 945, 910, 0, + 919, 914, 917, 918, 920, 910, 921, 950, 921, 0, + 918, 912, 915, 913, 914, 915, 916, 917, 922, 915, + 919, 923, 917, 924, 920, 0, 925, 919, 921, 917, + 918, 920, 922, 921, 950, 921, 927, 0, 922, 915, + 0, 923, 952, 924, 917, 922, 925, 919, 923, 917, - 923, 919, 926, 924, 927, 925, 926, 928, 927, 920, - 0, 0, 930, 0, 929, 920, 924, 921, 931, 922, - 923, 929, 928, 924, 932, 925, 926, 928, 927, 926, - 924, 927, 930, 926, 928, 927, 950, 933, 931, 930, - 934, 929, 951, 924, 932, 931, 954, 934, 957, 928, - 933, 932, 958, 926, 928, 927, 959, 933, 962, 930, - 934, 963, 964, 950, 933, 931, 965, 934, 967, 951, - 966, 932, 967, 954, 934, 957, 968, 933, 962, 958, - 969, 963, 964, 959, 933, 962, 965, 934, 963, 964, - 966, 970, 967, 965, 971, 967, 968, 966, 0, 967, + 924, 920, 930, 925, 926, 921, 927, 0, 928, 922, + 929, 926, 928, 927, 929, 922, 931, 930, 923, 952, + 924, 953, 930, 925, 926, 932, 933, 934, 0, 930, + 0, 926, 928, 927, 929, 928, 931, 929, 926, 928, + 956, 929, 935, 931, 930, 932, 933, 934, 953, 930, + 936, 926, 932, 933, 934, 935, 959, 936, 960, 928, + 961, 929, 935, 931, 0, 991, 964, 956, 965, 935, + 936, 966, 932, 933, 934, 0, 967, 936, 0, 968, + 970, 971, 935, 959, 936, 960, 964, 961, 965, 935, + 969, 966, 991, 964, 969, 965, 967, 936, 966, 968, - 969, 0, 972, 968, 973, 962, 970, 969, 963, 964, - 974, 970, 976, 965, 971, 978, 979, 966, 970, 967, - 0, 971, 972, 968, 973, 980, 975, 969, 975, 972, - 974, 973, 976, 970, 977, 978, 979, 974, 970, 976, - 982, 971, 978, 979, 983, 980, 989, 977, 975, 972, - 981, 973, 980, 975, 977, 975, 984, 974, 985, 976, - 982, 977, 978, 979, 983, 981, 985, 982, 986, 984, - 981, 983, 980, 989, 977, 975, 984, 981, 985, 987, - 988, 977, 992, 984, 994, 985, 996, 982, 986, 997, - 0, 983, 981, 985, 1000, 986, 984, 981, 1001, 987, + 970, 971, 973, 967, 972, 974, 968, 970, 971, 0, + 975, 994, 0, 964, 969, 965, 976, 969, 966, 972, + 978, 969, 973, 967, 972, 974, 968, 970, 971, 973, + 975, 972, 974, 977, 980, 977, 976, 975, 994, 981, + 978, 969, 996, 976, 982, 979, 972, 978, 998, 973, + 984, 972, 974, 983, 980, 977, 985, 975, 979, 981, + 977, 980, 977, 976, 982, 979, 981, 978, 983, 996, + 984, 982, 979, 983, 986, 998, 985, 984, 988, 989, + 983, 980, 977, 985, 990, 979, 981, 986, 987, 999, + 0, 982, 979, 1002, 986, 983, 987, 984, 988, 989, - 988, 0, 999, 984, 1002, 985, 987, 988, 1003, 992, - 1004, 994, 1005, 996, 1000, 986, 997, 999, 1001, 1002, - 1006, 1000, 999, 1004, 1002, 1001, 987, 988, 1003, 999, - 1004, 1002, 1005, 1009, 1008, 1003, 1011, 1004, 1014, 1005, - 1006, 1000, 1007, 0, 999, 1001, 1002, 1006, 1015, 999, - 1004, 1002, 1016, 1007, 1008, 1003, 1017, 1004, 1014, 1005, - 1009, 1008, 1007, 1011, 1018, 1014, 1016, 1006, 1015, 1007, - 1021, 0, 1016, 0, 1022, 1015, 1017, 0, 0, 1016, - 1007, 1008, 0, 1017, 1018, 1014, 0, 0, 0, 1007, - 1021, 1018, 0, 1016, 1022, 1015, 0, 1021, 0, 1016, + 983, 986, 1001, 985, 990, 988, 989, 1003, 987, 0, + 1005, 990, 0, 1002, 986, 987, 999, 1001, 1004, 1006, + 1002, 986, 1001, 987, 1011, 988, 989, 1003, 1007, 1001, + 1005, 990, 1006, 1004, 1003, 987, 1008, 1005, 1004, 1006, + 1002, 1009, 1010, 1013, 1001, 1004, 1006, 1016, 1007, 1001, + 0, 1011, 1009, 1017, 1003, 1007, 1008, 1005, 1018, 1006, + 1004, 1009, 1010, 1008, 1019, 1004, 1006, 1016, 1009, 1010, + 1013, 0, 1018, 1017, 1016, 1007, 1020, 1023, 1018, 1009, + 1017, 1024, 0, 1008, 1019, 1018, 0, 0, 1009, 1010, + 0, 1019, 0, 0, 1016, 0, 1020, 1023, 0, 1018, - 0, 1022, 0, 1017, 0, 0, 0, 0, 0, 0, - 0, 1018, 0, 0, 0, 0, 0, 1021, 0, 0, - 0, 1022, 1024, 1024, 1024, 1024, 1024, 1025, 0, 0, - 1025, 1025, 1027, 1027, 1027, 0, 1027, 1028, 0, 1028, - 1028, 1028, 1029, 0, 1029, 1029, 1029, 1030, 0, 1030, - 1030, 1030, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1017, 1024, 0, 1020, 1023, 1018, 0, 0, 1024, 0, + 0, 1019, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1020, 1023, 0, 0, 0, 1024, 1026, + 1026, 1026, 1026, 1026, 1027, 0, 0, 1027, 1027, 1029, + 1029, 1029, 0, 1029, 1030, 0, 1030, 1030, 1030, 1031, + 0, 1031, 1031, 1031, 1032, 0, 1032, 1032, 1032, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023 + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025 } ; /* The intent behind this definition is that it'll catch @@ -1917,7 +1921,7 @@ static const flex_int16_t yy_chk[4121] = static thread_local std::stringstream strbuf; -#line 1920 "flex_lexer.cpp" +#line 1925 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -1931,7 +1935,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 1934 "flex_lexer.cpp" +#line 1939 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -2218,7 +2222,7 @@ YY_DECL #line 56 "flex_lexer.l" -#line 2221 "flex_lexer.cpp" +#line 2226 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2245,13 +2249,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1024 ) + if ( yy_current_state >= 1026 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1023 ); + while ( yy_current_state != 1025 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2476,382 +2480,382 @@ TOKEN(EXTRACT) case 41: YY_RULE_SETUP #line 100 "flex_lexer.l" -TOKEN(GLOBAL) +TOKEN(FORMAT) YY_BREAK case 42: YY_RULE_SETUP #line 101 "flex_lexer.l" -TOKEN(HAVING) +TOKEN(GLOBAL) YY_BREAK case 43: YY_RULE_SETUP #line 102 "flex_lexer.l" -TOKEN(IMPORT) +TOKEN(HAVING) YY_BREAK case 44: YY_RULE_SETUP #line 103 "flex_lexer.l" -TOKEN(INSERT) +TOKEN(IMPORT) YY_BREAK case 45: YY_RULE_SETUP #line 104 "flex_lexer.l" -TOKEN(ISNULL) +TOKEN(INSERT) YY_BREAK case 46: YY_RULE_SETUP #line 105 "flex_lexer.l" -TOKEN(OFFSET) +TOKEN(ISNULL) YY_BREAK case 47: YY_RULE_SETUP #line 106 "flex_lexer.l" -TOKEN(RENAME) +TOKEN(OFFSET) YY_BREAK case 48: YY_RULE_SETUP #line 107 "flex_lexer.l" -TOKEN(SCHEMA) +TOKEN(RENAME) YY_BREAK case 49: YY_RULE_SETUP #line 108 "flex_lexer.l" -TOKEN(SELECT) +TOKEN(SCHEMA) YY_BREAK case 50: YY_RULE_SETUP #line 109 "flex_lexer.l" -TOKEN(SORTED) +TOKEN(SELECT) YY_BREAK case 51: YY_RULE_SETUP #line 110 "flex_lexer.l" -TOKEN(TABLES) +TOKEN(SORTED) YY_BREAK case 52: YY_RULE_SETUP #line 111 "flex_lexer.l" -TOKEN(UNIQUE) +TOKEN(TABLES) YY_BREAK case 53: YY_RULE_SETUP #line 112 "flex_lexer.l" -TOKEN(UNLOAD) +TOKEN(UNIQUE) YY_BREAK case 54: YY_RULE_SETUP #line 113 "flex_lexer.l" -TOKEN(UPDATE) +TOKEN(UNLOAD) YY_BREAK case 55: YY_RULE_SETUP #line 114 "flex_lexer.l" -TOKEN(VALUES) +TOKEN(UPDATE) YY_BREAK case 56: YY_RULE_SETUP #line 115 "flex_lexer.l" -TOKEN(AFTER) +TOKEN(VALUES) YY_BREAK case 57: YY_RULE_SETUP #line 116 "flex_lexer.l" -TOKEN(ALTER) +TOKEN(AFTER) YY_BREAK case 58: YY_RULE_SETUP #line 117 "flex_lexer.l" -TOKEN(ARRAY) +TOKEN(ALTER) YY_BREAK case 59: YY_RULE_SETUP #line 118 "flex_lexer.l" -TOKEN(CROSS) +TOKEN(ARRAY) YY_BREAK case 60: YY_RULE_SETUP #line 119 "flex_lexer.l" -TOKEN(DELTA) +TOKEN(CROSS) YY_BREAK case 61: YY_RULE_SETUP #line 120 "flex_lexer.l" -TOKEN(FLOAT) +TOKEN(DELTA) YY_BREAK case 62: YY_RULE_SETUP #line 121 "flex_lexer.l" -TOKEN(GROUP) +TOKEN(FLOAT) YY_BREAK case 63: YY_RULE_SETUP #line 122 "flex_lexer.l" -TOKEN(INDEX) +TOKEN(GROUP) YY_BREAK case 64: YY_RULE_SETUP #line 123 "flex_lexer.l" -TOKEN(INNER) +TOKEN(INDEX) YY_BREAK case 65: YY_RULE_SETUP #line 124 "flex_lexer.l" -TOKEN(LIMIT) +TOKEN(INNER) YY_BREAK case 66: YY_RULE_SETUP #line 125 "flex_lexer.l" -TOKEN(LOCAL) +TOKEN(LIMIT) YY_BREAK case 67: YY_RULE_SETUP #line 126 "flex_lexer.l" -TOKEN(MERGE) +TOKEN(LOCAL) YY_BREAK case 68: YY_RULE_SETUP #line 127 "flex_lexer.l" -TOKEN(MINUS) +TOKEN(MERGE) YY_BREAK case 69: YY_RULE_SETUP #line 128 "flex_lexer.l" -TOKEN(ORDER) +TOKEN(MINUS) YY_BREAK case 70: YY_RULE_SETUP #line 129 "flex_lexer.l" -TOKEN(OUTER) +TOKEN(ORDER) YY_BREAK case 71: YY_RULE_SETUP #line 130 "flex_lexer.l" -TOKEN(RIGHT) +TOKEN(OUTER) YY_BREAK case 72: YY_RULE_SETUP #line 131 "flex_lexer.l" -TOKEN(TABLE) +TOKEN(RIGHT) YY_BREAK case 73: YY_RULE_SETUP #line 132 "flex_lexer.l" -TOKEN(UNION) +TOKEN(TABLE) YY_BREAK case 74: YY_RULE_SETUP #line 133 "flex_lexer.l" -TOKEN(USING) +TOKEN(UNION) YY_BREAK case 75: YY_RULE_SETUP #line 134 "flex_lexer.l" -TOKEN(WHERE) +TOKEN(USING) YY_BREAK case 76: YY_RULE_SETUP #line 135 "flex_lexer.l" -TOKEN(CALL) +TOKEN(WHERE) YY_BREAK case 77: YY_RULE_SETUP #line 136 "flex_lexer.l" -TOKEN(CASE) +TOKEN(CALL) YY_BREAK case 78: YY_RULE_SETUP #line 137 "flex_lexer.l" -TOKEN(CHAR) +TOKEN(CASE) YY_BREAK case 79: YY_RULE_SETUP #line 138 "flex_lexer.l" -TOKEN(DATE) +TOKEN(CHAR) YY_BREAK case 80: YY_RULE_SETUP #line 139 "flex_lexer.l" -TOKEN(DESC) +TOKEN(COPY) YY_BREAK case 81: YY_RULE_SETUP #line 140 "flex_lexer.l" -TOKEN(DROP) +TOKEN(DATE) YY_BREAK case 82: YY_RULE_SETUP #line 141 "flex_lexer.l" -TOKEN(ELSE) +TOKEN(DESC) YY_BREAK case 83: YY_RULE_SETUP #line 142 "flex_lexer.l" -TOKEN(FILE) +TOKEN(DROP) YY_BREAK case 84: YY_RULE_SETUP #line 143 "flex_lexer.l" -TOKEN(FROM) +TOKEN(ELSE) YY_BREAK case 85: YY_RULE_SETUP #line 144 "flex_lexer.l" -TOKEN(FULL) +TOKEN(FILE) YY_BREAK case 86: YY_RULE_SETUP #line 145 "flex_lexer.l" -TOKEN(HASH) +TOKEN(FROM) YY_BREAK case 87: YY_RULE_SETUP #line 146 "flex_lexer.l" -TOKEN(HINT) +TOKEN(FULL) YY_BREAK case 88: YY_RULE_SETUP #line 147 "flex_lexer.l" -TOKEN(INTO) +TOKEN(HASH) YY_BREAK case 89: YY_RULE_SETUP #line 148 "flex_lexer.l" -TOKEN(JOIN) +TOKEN(HINT) YY_BREAK case 90: YY_RULE_SETUP #line 149 "flex_lexer.l" -TOKEN(LEFT) +TOKEN(INTO) YY_BREAK case 91: YY_RULE_SETUP #line 150 "flex_lexer.l" -TOKEN(LIKE) +TOKEN(JOIN) YY_BREAK case 92: YY_RULE_SETUP #line 151 "flex_lexer.l" -TOKEN(ILIKE) +TOKEN(LEFT) YY_BREAK case 93: YY_RULE_SETUP #line 152 "flex_lexer.l" -TOKEN(LOAD) +TOKEN(LIKE) YY_BREAK case 94: YY_RULE_SETUP #line 153 "flex_lexer.l" -TOKEN(LONG) +TOKEN(ILIKE) YY_BREAK case 95: YY_RULE_SETUP #line 154 "flex_lexer.l" -TOKEN(NULL) +TOKEN(LOAD) YY_BREAK case 96: YY_RULE_SETUP #line 155 "flex_lexer.l" -TOKEN(PLAN) +TOKEN(LONG) YY_BREAK case 97: YY_RULE_SETUP #line 156 "flex_lexer.l" -TOKEN(SHOW) +TOKEN(NULL) YY_BREAK case 98: YY_RULE_SETUP #line 157 "flex_lexer.l" -TOKEN(TEXT) +TOKEN(PLAN) YY_BREAK case 99: YY_RULE_SETUP #line 158 "flex_lexer.l" -TOKEN(THEN) +TOKEN(SHOW) YY_BREAK case 100: YY_RULE_SETUP #line 159 "flex_lexer.l" -TOKEN(TIME) +TOKEN(TEXT) YY_BREAK case 101: YY_RULE_SETUP #line 160 "flex_lexer.l" -TOKEN(VIEW) +TOKEN(THEN) YY_BREAK case 102: YY_RULE_SETUP #line 161 "flex_lexer.l" -TOKEN(WHEN) +TOKEN(TIME) YY_BREAK case 103: YY_RULE_SETUP #line 162 "flex_lexer.l" -TOKEN(WITH) +TOKEN(VIEW) YY_BREAK case 104: YY_RULE_SETUP #line 163 "flex_lexer.l" -TOKEN(ADD) +TOKEN(WHEN) YY_BREAK case 105: YY_RULE_SETUP #line 164 "flex_lexer.l" -TOKEN(ALL) +TOKEN(WITH) YY_BREAK case 106: YY_RULE_SETUP #line 165 "flex_lexer.l" -TOKEN(AND) +TOKEN(ADD) YY_BREAK case 107: YY_RULE_SETUP #line 166 "flex_lexer.l" -TOKEN(ASC) +TOKEN(ALL) YY_BREAK case 108: YY_RULE_SETUP #line 167 "flex_lexer.l" -TOKEN(CSV) +TOKEN(AND) YY_BREAK case 109: YY_RULE_SETUP #line 168 "flex_lexer.l" -TOKEN(END) +TOKEN(ASC) YY_BREAK case 110: YY_RULE_SETUP #line 169 "flex_lexer.l" -TOKEN(FOR) +TOKEN(END) YY_BREAK case 111: YY_RULE_SETUP #line 170 "flex_lexer.l" -TOKEN(INT) +TOKEN(FOR) YY_BREAK case 112: YY_RULE_SETUP #line 171 "flex_lexer.l" -TOKEN(KEY) +TOKEN(INT) YY_BREAK case 113: YY_RULE_SETUP #line 172 "flex_lexer.l" -TOKEN(NOT) +TOKEN(KEY) YY_BREAK case 114: YY_RULE_SETUP #line 173 "flex_lexer.l" -TOKEN(OFF) +TOKEN(NOT) YY_BREAK case 115: YY_RULE_SETUP #line 174 "flex_lexer.l" -TOKEN(SET) +TOKEN(OFF) YY_BREAK case 116: YY_RULE_SETUP #line 175 "flex_lexer.l" -TOKEN(TBL) +TOKEN(SET) YY_BREAK case 117: YY_RULE_SETUP @@ -2947,7 +2951,7 @@ TOKEN(FALSE) case 135: YY_RULE_SETUP #line 196 "flex_lexer.l" -TOKEN(EQUALS) +TOKEN(EQUALS) YY_BREAK case 136: YY_RULE_SETUP @@ -3049,7 +3053,7 @@ YY_RULE_SETUP #line 236 "flex_lexer.l" ECHO; YY_BREAK -#line 3052 "flex_lexer.cpp" +#line 3057 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3350,7 +3354,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 >= 1024 ) + if ( yy_current_state >= 1026 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3379,11 +3383,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 >= 1024 ) + if ( yy_current_state >= 1026 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1023); + yy_is_jam = (yy_current_state == 1025); (void)yyg; return yy_is_jam ? 0 : yy_current_state; diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 05df105..8e8e96c 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -2,9 +2,9 @@ #define hsql_HEADER_H 1 #define hsql_IN_HEADER 1 -#line 5 "flex_lexer.h" +#line 6 "flex_lexer.h" -#line 7 "flex_lexer.h" +#line 8 "flex_lexer.h" #define YY_INT_ALIGNED short int @@ -733,6 +733,6 @@ extern int yylex \ #line 236 "flex_lexer.l" -#line 736 "flex_lexer.h" +#line 737 "flex_lexer.h" #undef hsql_IN_HEADER #endif /* hsql_HEADER_H */ diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 3b35d54..6a86a75 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -44,7 +44,7 @@ static thread_local std::stringstream strbuf; %option warn %option case-insensitive %option prefix="hsql_" -%option bison-locations +%option bison-locations /* %option nodefault */ @@ -97,6 +97,7 @@ ESCAPE TOKEN(ESCAPE) EXCEPT TOKEN(EXCEPT) EXISTS TOKEN(EXISTS) EXTRACT TOKEN(EXTRACT) +FORMAT TOKEN(FORMAT) GLOBAL TOKEN(GLOBAL) HAVING TOKEN(HAVING) IMPORT TOKEN(IMPORT) @@ -135,6 +136,7 @@ WHERE TOKEN(WHERE) CALL TOKEN(CALL) CASE TOKEN(CASE) CHAR TOKEN(CHAR) +COPY TOKEN(COPY) DATE TOKEN(DATE) DESC TOKEN(DESC) DROP TOKEN(DROP) @@ -164,7 +166,6 @@ ADD TOKEN(ADD) ALL TOKEN(ALL) AND TOKEN(AND) ASC TOKEN(ASC) -CSV TOKEN(CSV) END TOKEN(END) FOR TOKEN(FOR) INT TOKEN(INT) @@ -172,7 +173,6 @@ KEY TOKEN(KEY) NOT TOKEN(NOT) OFF TOKEN(OFF) SET TOKEN(SET) -TBL TOKEN(TBL) TOP TOKEN(TOP) AS TOKEN(AS) BY TOKEN(BY) @@ -193,7 +193,7 @@ TRUE TOKEN(TRUE) FALSE TOKEN(FALSE) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ -"==" TOKEN(EQUALS) +"==" TOKEN(EQUALS) "!=" TOKEN(NOTEQUALS) "<>" TOKEN(NOTEQUALS) "<=" TOKEN(LESSEQ) diff --git a/src/parser/sql_keywords.txt b/src/parser/sql_keywords.txt index a1dccff..ba4bfa1 100644 --- a/src/parser/sql_keywords.txt +++ b/src/parser/sql_keywords.txt @@ -76,10 +76,11 @@ VALUES DIRECT SORTED +COPY +FORMAT + IMPORT -CSV FILE -TBL CONTROL UPDATE diff --git a/src/sql/ExportStatement.h b/src/sql/ExportStatement.h new file mode 100755 index 0000000..f432f9e --- /dev/null +++ b/src/sql/ExportStatement.h @@ -0,0 +1,22 @@ +#ifndef SQLPARSER_EXPORT_STATEMENT_H +#define SQLPARSER_EXPORT_STATEMENT_H + +#include "ImportStatement.h" +#include "SQLStatement.h" + +namespace hsql { + // Represents SQL Export statements. + struct ExportStatement : SQLStatement { + ExportStatement(ImportType type); + virtual ~ExportStatement(); + + // ImportType is used for compatibility reasons + ImportType type; + char* filePath; + char* schema; + char* tableName; + }; + +} // namespace hsql + +#endif diff --git a/src/sql/ImportStatement.h b/src/sql/ImportStatement.h index 0e686a0..18b5831 100755 --- a/src/sql/ImportStatement.h +++ b/src/sql/ImportStatement.h @@ -7,6 +7,8 @@ namespace hsql { enum ImportType { kImportCSV, kImportTbl, // Hyrise file format + kImportBinary, + kImportAuto }; // Represents SQL Import statements. diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index e03e0ce..18ad92e 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -134,6 +134,20 @@ namespace hsql { } } + // ExportStatement + ExportStatement::ExportStatement(ImportType type) : + SQLStatement(kStmtExport), + type(type), + filePath(nullptr), + schema(nullptr), + tableName(nullptr) {}; + + ExportStatement::~ExportStatement() { + free(filePath); + free(schema); + free(tableName); + } + // ImportStatement ImportStatement::ImportStatement(ImportType type) : SQLStatement(kStmtImport), diff --git a/src/sql/statements.h b/src/sql/statements.h index c6d24c7..7090768 100644 --- a/src/sql/statements.h +++ b/src/sql/statements.h @@ -11,5 +11,6 @@ #include "PrepareStatement.h" #include "ExecuteStatement.h" #include "ShowStatement.h" +#include "ExportStatement.h" #endif // SQLPARSER_STATEMENTS_H diff --git a/src/util/sqlhelper.cpp b/src/util/sqlhelper.cpp index 33c7177..87772c0 100755 --- a/src/util/sqlhelper.cpp +++ b/src/util/sqlhelper.cpp @@ -196,6 +196,40 @@ namespace hsql { void printImportStatementInfo(const ImportStatement* stmt, uintmax_t numIndent) { inprint("ImportStatement", numIndent); inprint(stmt->filePath, numIndent + 1); + switch (stmt->type) { + case ImportType::kImportCSV: + inprint("CSV", numIndent + 1); + break; + case ImportType::kImportTbl: + inprint("TBL", numIndent + 1); + break; + case ImportType::kImportBinary: + inprint("BINARY", numIndent + 1); + break; + case ImportType::kImportAuto: + inprint("AUTO", numIndent + 1); + break; + } + inprint(stmt->tableName, numIndent + 1); + } + + void printExportStatementInfo(const ExportStatement* stmt, uintmax_t numIndent) { + inprint("ExportStatement", numIndent); + inprint(stmt->filePath, numIndent + 1); + switch (stmt->type) { + case ImportType::kImportCSV: + inprint("CSV", numIndent + 1); + break; + case ImportType::kImportTbl: + inprint("TBL", numIndent + 1); + break; + case ImportType::kImportBinary: + inprint("BINARY", numIndent + 1); + break; + case ImportType::kImportAuto: + inprint("AUTO", numIndent + 1); + break; + } inprint(stmt->tableName, numIndent + 1); } @@ -241,6 +275,9 @@ namespace hsql { case kStmtImport: printImportStatementInfo((const ImportStatement*) stmt, 0); break; + case kStmtExport: + printExportStatementInfo((const ExportStatement*) stmt, 0); + break; default: break; } diff --git a/src/util/sqlhelper.h b/src/util/sqlhelper.h index 9298b72..cd3416a 100644 --- a/src/util/sqlhelper.h +++ b/src/util/sqlhelper.h @@ -14,6 +14,9 @@ namespace hsql { // Prints a summary of the given ImportStatement with the given indentation. void printImportStatementInfo(const ImportStatement* stmt, uintmax_t num_indent); + // Prints a summary of the given CopyStatement with the given indentation. + void printExportStatementInfo(const ExportStatement* stmt, uintmax_t num_indent); + // Prints a summary of the given InsertStatement with the given indentation. void printInsertStatementInfo(const InsertStatement* stmt, uintmax_t num_indent); diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 99b8eca..ed33213 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -10,8 +10,12 @@ !SELECT * FROM t WHERE a = ? AND b = ?;gibberish; !SHOW COLUMNS; !DESCRIBE; +!COPY; +!COPY students; +!COPY students FROM 'students_file' WITH FORMAT XYZ; +!COPY students TO 'students_file' WITH FORMAT XYZ; !select a + 2 as b(spam, eggs) from B; !WITH a AS SELECT 1 SELECT 1; !WITH a AS (SELECT ) SELECT 1; !WITH a AS (WITH b AS (SELECT 1) SELECT 1) SELECT 1; # We do not support nested WITH clauses -!WITH a AS (SELECT ) b AS (SELECT ) SELECT 1; # Missing comma between WITH descriptions \ No newline at end of file +!WITH a AS (SELECT ) b AS (SELECT ) SELECT 1; # Missing comma between WITH descriptions diff --git a/test/queries/queries-good.sql b/test/queries/queries-good.sql index c9805b5..8b0a5cf 100755 --- a/test/queries/queries-good.sql +++ b/test/queries/queries-good.sql @@ -54,6 +54,17 @@ PREPARE prep2 FROM 'INSERT INTO test VALUES (?, 0, 0); INSERT INTO test VALUES ( EXECUTE prep_inst(1, 2, 3); EXECUTE prep; DEALLOCATE PREPARE prep; +# COPY +COPY students FROM 'student.tbl'; +COPY students FROM 'file_path' WITH FORMAT TBL; +COPY students FROM 'file_path' WITH FORMAT CSV; +COPY students FROM 'file_path' WITH FORMAT BIN; +COPY students FROM 'file_path' WITH FORMAT BINARY; +COPY students TO 'student.tbl'; +COPY students TO 'file_path' WITH FORMAT TBL; +COPY students TO 'file_path' WITH FORMAT CSV; +COPY students TO 'file_path' WITH FORMAT BIN; +COPY students TO 'file_path' WITH FORMAT BINARY; # HINTS SELECT * FROM test WITH HINT(NO_CACHE); SELECT * FROM test WITH HINT(NO_CACHE, NO_SAMPLING); diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index f636fb5..71980cf 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -205,6 +205,45 @@ TEST(DescribeStatementTest) { ASSERT_STREQ(stmt->name, "students"); } +TEST(ImportStatementTest) { + TEST_PARSE_SINGLE_SQL( + "IMPORT FROM TBL FILE 'students_file' INTO students;", + kStmtImport, + ImportStatement, + result, + stmt); + + ASSERT_EQ(stmt->type, kImportTbl); + ASSERT_NOTNULL(stmt->tableName); + ASSERT_STREQ(stmt->tableName, "students"); + ASSERT_STREQ(stmt->filePath, "students_file"); +} + +TEST(CopyStatementTest) { + TEST_PARSE_SINGLE_SQL( + "COPY students FROM 'students_file' ;", + kStmtImport, + ImportStatement, + import_result, + import_stmt); + + ASSERT_EQ(import_stmt->type, kImportAuto); + ASSERT_NOTNULL(import_stmt->tableName); + ASSERT_STREQ(import_stmt->tableName, "students"); + ASSERT_STREQ(import_stmt->filePath, "students_file"); + + TEST_PARSE_SINGLE_SQL( + "COPY students TO 'students_file';", + kStmtExport, + ExportStatement, + export_result, + export_stmt); + + ASSERT_EQ(export_stmt->type, kImportAuto); + ASSERT_NOTNULL(export_stmt->tableName); + ASSERT_STREQ(export_stmt->tableName, "students"); + ASSERT_STREQ(export_stmt->filePath, "students_file"); +} SQLParserResult parse_and_move(std::string query) { hsql::SQLParserResult result; diff --git a/test/test.sh b/test/test.sh index 5766a13..bb1f34d 100755 --- a/test/test.sh +++ b/test/test.sh @@ -46,7 +46,7 @@ fi ################################################# # Checking if the grammar is conflict free. -printf "\n${GREEN}Checking for conflicts in the grammer...${NC}\n" +printf "\n${GREEN}Checking for conflicts in the grammar...${NC}\n" printf "${RED}" make -C src/parser/ test >>/dev/null CONFLICT_RET=$?