From 4b617bca96487b1a5406833ad2a1bdbac3546cc2 Mon Sep 17 00:00:00 2001 From: Till Later Date: Tue, 14 Jan 2020 13:21:19 +0100 Subject: [PATCH] Adds simple transaction commands (#137) --- src/parser/bison_parser.cpp | 2956 ++++++++++++++++---------------- src/parser/bison_parser.h | 23 +- src/parser/bison_parser.y | 24 + src/parser/flex_lexer.cpp | 2257 ++++++++++++------------ src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 4 + src/sql/SQLStatement.h | 3 +- src/sql/TransactionStatement.h | 25 + src/sql/statements.cpp | 10 +- src/sql/statements.h | 1 + src/util/sqlhelper.cpp | 18 + src/util/sqlhelper.h | 3 + test/queries/queries-bad.sql | 1 + test/sql_tests.cpp | 46 + 14 files changed, 2816 insertions(+), 2557 deletions(-) create mode 100644 src/sql/TransactionStatement.h diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 1ee2625..5d6632a 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -311,14 +311,18 @@ extern int hsql_debug; SQL_YEAR = 390, SQL_TRUE = 391, SQL_FALSE = 392, - SQL_EQUALS = 393, - SQL_NOTEQUALS = 394, - SQL_LESS = 395, - SQL_GREATER = 396, - SQL_LESSEQ = 397, - SQL_GREATEREQ = 398, - SQL_NOTNULL = 399, - SQL_UMINUS = 400 + SQL_TRANSACTION = 393, + SQL_BEGIN = 394, + SQL_COMMIT = 395, + SQL_ROLLBACK = 396, + SQL_EQUALS = 397, + SQL_NOTEQUALS = 398, + SQL_LESS = 399, + SQL_GREATER = 400, + SQL_LESSEQ = 401, + SQL_GREATEREQ = 402, + SQL_NOTNULL = 403, + SQL_UMINUS = 404 }; #endif @@ -346,6 +350,7 @@ union HSQL_STYPE hsql::PrepareStatement* prep_stmt; hsql::ExecuteStatement* exec_stmt; hsql::ShowStatement* show_stmt; + hsql::TransactionStatement* transaction_stmt; hsql::TableName table_name; hsql::TableRef* table; @@ -372,7 +377,7 @@ union HSQL_STYPE std::vector* order_vec; std::vector* with_description_vec; -#line 376 "bison_parser.cpp" +#line 381 "bison_parser.cpp" }; typedef union HSQL_STYPE HSQL_STYPE; @@ -635,21 +640,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 54 +#define YYFINAL 62 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 731 +#define YYLAST 711 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 163 +#define YYNTOKENS 167 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 102 +#define YYNNTS 104 /* YYNRULES -- Number of rules. */ -#define YYNRULES 250 +#define YYNRULES 256 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 454 +#define YYNSTATES 462 #define YYUNDEFTOK 2 -#define YYMAXUTOK 400 +#define YYMAXUTOK 404 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -663,13 +668,13 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 152, 2, 2, - 157, 158, 150, 148, 161, 149, 159, 151, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 160, - 141, 138, 142, 162, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 156, 2, 2, + 161, 162, 154, 152, 165, 153, 163, 155, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, + 145, 142, 146, 166, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 155, 2, 156, 153, 2, 2, 2, 2, 2, + 2, 159, 2, 160, 157, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -699,40 +704,40 @@ static const yytype_uint8 yytranslate[] = 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 139, 140, 143, 144, 145, 146, 147, - 154 + 135, 136, 137, 138, 139, 140, 141, 143, 144, 147, + 148, 149, 150, 151, 158 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 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 + 0, 267, 267, 288, 294, 303, 307, 311, 314, 317, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 341, + 342, 347, 348, 352, 356, 368, 371, 374, 380, 381, + 388, 395, 398, 402, 416, 422, 431, 448, 452, 455, + 464, 478, 481, 486, 500, 513, 520, 527, 538, 539, + 543, 544, 548, 554, 555, 556, 557, 558, 559, 560, + 561, 565, 566, 567, 577, 583, 589, 597, 598, 607, + 616, 629, 636, 647, 648, 658, 667, 668, 672, 684, + 688, 692, 710, 711, 715, 716, 720, 730, 747, 751, + 752, 753, 757, 758, 762, 774, 775, 779, 783, 784, + 788, 793, 794, 798, 803, 807, 808, 812, 813, 817, + 818, 822, 826, 827, 828, 834, 835, 839, 840, 841, + 842, 843, 844, 851, 852, 856, 857, 861, 862, 866, + 876, 877, 878, 879, 880, 884, 885, 886, 887, 888, + 889, 890, 891, 892, 893, 897, 898, 902, 903, 904, + 905, 906, 910, 911, 912, 913, 914, 915, 916, 917, + 918, 919, 920, 924, 925, 929, 930, 931, 932, 938, + 939, 940, 941, 945, 946, 950, 951, 955, 956, 957, + 958, 959, 960, 961, 965, 966, 970, 974, 975, 976, + 977, 978, 979, 983, 987, 991, 995, 996, 997, 998, + 1002, 1003, 1004, 1005, 1006, 1010, 1014, 1015, 1019, 1020, + 1024, 1028, 1032, 1044, 1045, 1055, 1056, 1060, 1061, 1070, + 1071, 1076, 1087, 1096, 1097, 1102, 1103, 1108, 1109, 1114, + 1115, 1120, 1121, 1130, 1131, 1135, 1139, 1143, 1150, 1163, + 1171, 1181, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1214, 1223, 1224, 1229, 1230 }; #endif @@ -759,15 +764,17 @@ static const char *const yytname[] = "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", + "YEAR", "TRUE", "FALSE", "TRANSACTION", "BEGIN", "COMMIT", "ROLLBACK", + "'='", "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", "file_type", "file_path", "opt_file_type", - "export_statement", "show_statement", "create_statement", - "opt_not_exists", "column_def_commalist", "column_def", "column_type", + "transaction_statement", "opt_transaction_keyword", "prepare_statement", + "prepare_target_query", "execute_statement", "import_statement", + "file_type", "file_path", "opt_file_type", "export_statement", + "show_statement", "create_statement", "opt_not_exists", + "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", @@ -810,158 +817,160 @@ static const yytype_uint16 yytoknum[] = 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 61, 393, - 394, 60, 62, 395, 396, 397, 398, 399, 43, 45, - 42, 47, 37, 94, 400, 91, 93, 40, 41, 46, - 59, 44, 63 + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 61, 397, 398, 60, 62, 399, 400, 401, + 402, 403, 43, 45, 42, 47, 37, 94, 404, 91, + 93, 40, 41, 46, 59, 44, 63 }; # endif -#define YYPACT_NINF -278 +#define YYPACT_NINF -277 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-278))) + (!!((Yystate) == (-277))) -#define YYTABLE_NINF -248 +#define YYTABLE_NINF -254 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-248))) + (!!((Yytable_value) == (-254))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 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 + 468, 7, 40, 82, 89, 40, -19, 48, 57, 13, + 40, 40, -8, 17, 156, 29, 29, 29, 180, 38, + -277, 121, -277, 121, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -30, -277, 211, 86, -277, + 102, 158, -277, 138, 138, 40, 264, 40, 157, -277, + -62, 162, 162, 40, -277, 166, 130, -277, -277, -277, + -277, -277, -277, 463, -277, 208, -277, -277, 185, -30, + 28, -277, 5, -277, 300, 11, 304, 196, 40, 40, + 236, -277, 226, 154, 313, 316, 316, 284, 40, 40, + -277, 161, 156, -277, 169, 325, 321, 172, 175, -277, + -277, -277, -30, 231, 220, -30, 65, -277, -277, -277, + -277, -277, -277, -277, -277, 183, 179, -277, -277, -277, + -277, -277, -277, -277, -277, -277, 299, -56, 154, 235, + -277, 316, 343, 42, 210, -23, -277, 250, -277, 250, + -277, -277, -277, -277, -277, 355, -277, -277, 235, -277, + -277, -277, 288, -277, -277, -277, 235, 288, 235, 55, + -277, -277, 11, -277, 358, 258, 362, 248, 96, 209, + 212, 133, 285, 217, 214, -277, 182, -27, 312, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, 286, -277, -9, 218, -277, 235, + 313, -277, 335, -277, -277, 222, 66, -277, 294, 219, + -277, 25, 65, 221, -277, 75, 65, -27, 336, -26, + -277, 305, -277, 205, 71, -277, 258, 6, 16, 338, + 423, 235, 41, 69, 232, 214, 516, 235, 259, 233, + -76, 235, 235, 214, -277, 214, -46, 237, 84, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 325, 40, -277, 391, 11, -27, + -277, 264, 11, -277, 355, 10, 236, -277, 235, -277, + 397, -277, -277, -277, 235, -277, -277, -277, -277, 235, + 235, 316, -277, 241, -277, -277, 246, -277, -277, -277, + 118, -277, 362, -277, -277, 235, -277, -277, 247, -277, + -277, -277, -277, -277, -277, 323, -51, 93, 235, 235, + -277, 338, 314, -14, -277, -277, -277, 303, 469, 552, + 214, 256, 182, -277, 328, 261, 552, 552, 552, 552, + 383, 383, 383, 383, 259, 259, -94, -94, -94, -87, + 267, -277, -277, 100, -277, 109, -277, 258, -277, 331, + -277, 263, -277, 23, -277, 365, -277, -277, -277, -27, + -27, -277, 424, 426, -277, 339, -277, -277, 110, -277, + 235, 235, 235, -277, 97, -18, 273, -277, 214, 552, + 182, 275, 116, -277, -277, -277, -277, 280, 351, -277, + -277, -277, 372, 375, 376, 357, 10, 447, -277, -277, + -277, 333, -277, 291, 297, -277, -277, -69, -27, 117, + -277, 235, -277, 516, 298, 135, -277, -277, 23, 10, + -277, -277, -277, 10, 420, 311, 235, -277, -277, -277, + -277, -27, -277, -277, -277, -277, 281, 343, -25, 315, + 235, 142, 235, -277, 18, -27, -277, -277, -27, 310, + 317, -277 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = +static const yytype_uint16 yydefact[] = { - 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, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 29, 29, 0, 254, + 3, 20, 18, 20, 17, 8, 9, 7, 11, 16, + 13, 14, 12, 15, 10, 0, 233, 0, 223, 70, + 32, 0, 43, 49, 49, 0, 0, 0, 0, 222, + 0, 68, 68, 0, 41, 0, 235, 236, 28, 25, + 27, 26, 1, 234, 2, 0, 6, 5, 116, 0, + 79, 80, 108, 66, 0, 126, 0, 0, 0, 0, + 102, 36, 0, 74, 0, 0, 0, 0, 0, 0, + 42, 0, 0, 4, 0, 0, 96, 0, 0, 90, + 91, 89, 0, 93, 0, 0, 122, 224, 205, 208, + 210, 211, 206, 207, 212, 0, 125, 127, 200, 201, + 202, 209, 203, 204, 31, 30, 0, 0, 74, 0, + 69, 0, 0, 0, 0, 102, 76, 39, 37, 39, + 67, 64, 65, 238, 237, 0, 115, 95, 0, 83, + 82, 84, 108, 85, 92, 88, 0, 108, 0, 0, + 86, 33, 0, 48, 0, 234, 0, 0, 196, 0, + 0, 0, 0, 0, 0, 198, 0, 101, 130, 137, + 138, 139, 132, 134, 140, 133, 152, 141, 142, 143, + 136, 131, 145, 146, 0, 255, 0, 0, 72, 0, + 0, 75, 0, 35, 40, 23, 0, 21, 99, 97, + 123, 232, 122, 107, 109, 114, 122, 118, 120, 117, + 128, 0, 46, 0, 0, 50, 234, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 0, 147, 0, + 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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 + 0, 0, 0, 0, 0, 0, 73, 0, 0, 78, + 77, 0, 0, 19, 0, 0, 102, 98, 0, 230, + 0, 231, 129, 81, 0, 113, 112, 111, 87, 0, + 0, 0, 54, 0, 57, 56, 0, 55, 60, 53, + 63, 45, 0, 47, 184, 0, 197, 199, 0, 187, + 188, 189, 190, 191, 192, 0, 0, 0, 0, 0, + 171, 0, 0, 0, 144, 135, 163, 164, 0, 159, + 0, 0, 0, 150, 0, 162, 161, 177, 178, 179, + 180, 181, 182, 183, 154, 153, 156, 155, 157, 158, + 0, 34, 256, 0, 38, 0, 22, 234, 100, 213, + 215, 0, 217, 228, 216, 104, 124, 229, 110, 121, + 119, 44, 0, 0, 61, 0, 52, 51, 0, 175, + 0, 0, 0, 169, 0, 0, 0, 193, 0, 160, + 0, 0, 0, 151, 194, 71, 24, 0, 0, 250, + 242, 248, 246, 249, 244, 0, 0, 0, 227, 221, + 225, 0, 94, 0, 0, 62, 185, 0, 173, 0, + 172, 0, 176, 195, 0, 0, 167, 165, 228, 0, + 245, 247, 243, 0, 214, 229, 0, 58, 59, 186, + 170, 174, 168, 166, 218, 239, 251, 0, 106, 0, + 0, 0, 0, 103, 0, 252, 240, 226, 105, 196, + 0, 241 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -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 + -277, -277, -277, 411, -277, 454, -277, 206, -277, 177, + -277, -277, -277, -277, 213, -78, 348, -277, -277, -277, + 438, -277, 186, -277, -277, -277, 439, -277, -277, -277, + 369, -277, -277, 301, -153, 0, 401, -66, 430, -277, + -277, 178, 289, -277, -277, -277, -111, -277, -277, 49, + -277, 223, -277, -277, 32, -226, -277, -22, 240, -129, + -134, -277, -277, -277, -277, -277, -277, 287, -277, -277, + -277, -277, -277, -277, -277, -277, 67, -73, -80, -277, + -277, -88, -277, -277, -277, -276, 94, -277, -277, -277, + -1, -277, 98, 319, -277, -277, -277, -277, 432, -277, + -277, -277, -277, 80 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -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 + -1, 18, 19, 20, 21, 66, 206, 207, 22, 59, + 23, 125, 24, 25, 82, 137, 203, 26, 27, 28, + 78, 224, 225, 300, 376, 29, 88, 30, 31, 32, + 133, 33, 135, 136, 34, 151, 152, 71, 102, 103, + 155, 72, 148, 208, 276, 277, 130, 412, 453, 106, + 213, 214, 287, 96, 160, 209, 115, 116, 210, 211, + 178, 179, 180, 181, 182, 183, 184, 233, 185, 186, + 187, 188, 315, 189, 190, 191, 192, 193, 118, 119, + 120, 121, 122, 123, 358, 359, 360, 361, 362, 48, + 363, 408, 409, 410, 282, 35, 36, 56, 57, 364, + 405, 456, 64, 196 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -969,158 +978,154 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 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 + 177, 39, 117, 98, 42, 138, 138, 146, 139, 49, + 50, 323, 222, 38, 99, 108, 109, 110, 147, 306, + 452, 459, 68, 290, 201, 85, 279, 215, 279, 217, + 219, 164, 241, 37, 249, 70, 53, 99, 236, 241, + 238, 249, 232, 38, 80, 100, 83, 240, 330, 242, + 381, 138, 90, 194, 129, 43, 242, 241, 168, 108, + 109, 110, 165, 263, 86, 264, 51, 198, 100, 97, + 269, 54, 264, 303, 242, 331, 104, 127, 128, 378, + 101, 241, 241, 421, 44, 40, 325, 141, 142, 220, + 241, 143, 41, 439, 68, 52, 169, 170, 242, 242, + 197, 236, 316, 101, 47, 166, 392, 242, 111, 328, + 239, 329, 326, 327, 158, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 434, 69, 159, 241, 171, 45, 168, 108, 109, 110, + 278, 407, 200, 280, 46, 231, 387, 112, 113, 241, + 242, 278, 111, 266, 318, 215, 267, 446, 285, 55, + 369, 370, 218, 308, 425, 365, 242, 58, 304, 172, + 307, 357, 175, 319, 169, 170, 350, 114, 382, 320, + 62, 333, 173, 241, 286, 168, 108, 109, 110, 384, + 385, 112, 113, 60, 61, 117, 389, 319, 334, 117, + 242, 212, 63, 383, 397, 241, 216, 420, 174, 175, + 448, 138, 171, 371, 73, 374, 176, 168, 108, 109, + 110, 114, 242, 169, 170, 241, 65, 440, 273, 292, + 111, 274, 375, 301, 68, 293, 302, 231, 168, 108, + 109, 110, 242, 294, 283, 76, 353, 172, 288, 74, + 355, 417, 418, 419, 423, 386, 170, 227, 77, 228, + 173, 171, 395, 75, 351, 162, 391, 81, 295, 112, + 113, 396, 416, 84, 162, 278, 169, 170, 427, 111, + 153, 278, 87, 153, 91, 296, 174, 175, 168, 108, + 109, 110, 441, 171, 176, 92, 172, 443, 94, 114, + 278, 297, 95, 107, 457, 298, 398, 267, 124, 173, + 126, 111, 131, 129, 171, 132, 134, 299, 112, 113, + 108, 455, 69, 458, 424, 140, 234, 170, 235, 243, + 145, 110, 111, 147, 149, 174, 175, 150, 154, 156, + 163, 173, 399, 176, 162, 161, 195, 400, 114, 172, + 112, 113, 199, 401, 402, 202, 398, 449, 205, 104, + 244, 221, 173, 14, 171, 223, 226, 174, 175, 403, + 229, 112, 113, 230, 404, 176, 237, 265, 271, 268, + 114, 275, 111, 272, 278, 289, 284, 249, 174, 175, + 68, 291, 399, 321, 352, 324, 176, 400, 332, 235, + 367, 114, 372, 401, 402, 450, 245, 373, 330, 379, + 380, 241, 173, 260, 261, 262, 263, 390, 264, 403, + 264, 112, 113, -251, 404, 393, 246, 394, 406, 411, + 413, 244, 414, 247, 248, 422, 415, 426, 174, 175, + 249, 250, 428, 429, 430, 398, 176, 431, 432, 433, + 435, 114, 436, 437, 251, 252, 253, 254, 255, 438, + 442, 256, 257, -253, 258, 259, 260, 261, 262, 263, + 1, 264, 447, 228, 93, 1, 454, 67, 2, 461, + 356, 399, 79, 2, 354, 3, 400, 204, 377, 4, + 3, 89, 401, 402, 4, 5, -219, 167, 6, 7, + 5, 270, 105, 6, 7, 248, 157, 368, 403, 8, + 9, 249, -251, 404, 8, 9, 305, 244, 366, 317, + 10, 460, 0, 445, 144, 10, 444, 451, -254, -254, + 281, 0, -254, -254, 0, 258, 259, 260, 261, 262, + 263, 0, 264, 0, 11, 0, 0, 12, 0, 11, + 0, 0, 12, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 13, 245, 244, 0, 0, 13, 14, 0, + 0, 0, 0, 14, 0, 0, 0, 388, 0, 0, + 0, 0, 0, 322, 0, -220, 0, 0, 0, 0, + 0, 248, 0, 0, 0, 0, 0, 249, 250, 0, + 244, 0, 15, 16, 17, 0, 0, 15, 16, 17, + 245, 251, 252, 253, 254, 255, 0, 0, 256, 257, + 0, 258, 259, 260, 261, 262, 263, 0, 264, 0, + 322, 0, 0, 0, 0, 0, 0, 0, 248, 0, + 0, 0, 0, 0, 249, 250, -254, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 251, 252, + 253, 254, 255, 0, 0, 256, 257, 0, 258, 259, + 260, 261, 262, 263, 248, 264, 0, 0, 0, 0, + 249, -254, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -254, -254, -254, 254, 255, 0, + 0, 256, 257, 0, 258, 259, 260, 261, 262, 263, + 0, 264 }; static const yytype_int16 yycheck[] = { - 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, 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 + 129, 2, 75, 69, 5, 85, 86, 95, 86, 10, + 11, 237, 165, 3, 9, 4, 5, 6, 12, 3, + 45, 3, 52, 49, 135, 87, 3, 156, 3, 158, + 159, 87, 108, 26, 128, 35, 19, 9, 172, 108, + 174, 128, 171, 3, 45, 40, 47, 176, 94, 125, + 101, 131, 53, 131, 77, 74, 125, 108, 3, 4, + 5, 6, 118, 157, 126, 159, 74, 133, 40, 69, + 199, 54, 159, 226, 125, 121, 71, 78, 79, 305, + 75, 108, 108, 101, 103, 3, 162, 88, 89, 162, + 108, 91, 3, 162, 52, 103, 41, 42, 125, 125, + 58, 235, 231, 75, 91, 161, 332, 125, 97, 243, + 176, 245, 241, 242, 49, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 406, 161, 67, 108, 79, 87, 3, 4, 5, 6, + 165, 118, 165, 118, 87, 104, 160, 136, 137, 108, + 125, 165, 97, 162, 85, 284, 165, 433, 83, 3, + 289, 290, 107, 229, 390, 276, 125, 138, 162, 114, + 154, 161, 154, 104, 41, 42, 264, 166, 85, 110, + 0, 97, 127, 108, 109, 3, 4, 5, 6, 318, + 319, 136, 137, 16, 17, 268, 330, 104, 114, 272, + 125, 152, 164, 110, 357, 108, 157, 110, 153, 154, + 436, 291, 79, 291, 3, 97, 161, 3, 4, 5, + 6, 166, 125, 41, 42, 108, 105, 110, 162, 24, + 97, 165, 114, 162, 52, 30, 165, 104, 3, 4, + 5, 6, 125, 38, 212, 87, 268, 114, 216, 163, + 272, 380, 381, 382, 388, 321, 42, 161, 120, 163, + 127, 79, 162, 161, 265, 165, 332, 3, 63, 136, + 137, 162, 162, 116, 165, 165, 41, 42, 162, 97, + 102, 165, 120, 105, 118, 80, 153, 154, 3, 4, + 5, 6, 421, 79, 161, 165, 114, 162, 90, 166, + 165, 96, 117, 3, 162, 100, 25, 165, 4, 127, + 114, 97, 86, 77, 79, 161, 3, 112, 136, 137, + 4, 450, 161, 452, 390, 41, 41, 42, 114, 17, + 161, 6, 97, 12, 162, 153, 154, 162, 107, 119, + 41, 127, 61, 161, 165, 162, 3, 66, 166, 114, + 136, 137, 142, 72, 73, 105, 25, 76, 3, 71, + 48, 3, 127, 105, 79, 3, 118, 153, 154, 88, + 161, 136, 137, 161, 93, 161, 159, 91, 43, 161, + 166, 87, 97, 161, 165, 49, 165, 128, 153, 154, + 52, 86, 61, 161, 3, 162, 161, 66, 161, 114, + 3, 166, 161, 72, 73, 124, 94, 161, 94, 162, + 87, 108, 127, 154, 155, 156, 157, 161, 159, 88, + 159, 136, 137, 92, 93, 97, 114, 160, 165, 64, + 6, 48, 6, 121, 122, 162, 97, 162, 153, 154, + 128, 129, 162, 92, 72, 25, 161, 72, 72, 92, + 3, 166, 119, 162, 142, 143, 144, 145, 146, 162, + 162, 149, 150, 0, 152, 153, 154, 155, 156, 157, + 7, 159, 161, 163, 63, 7, 161, 23, 15, 162, + 274, 61, 44, 15, 271, 22, 66, 139, 302, 26, + 22, 52, 72, 73, 26, 32, 165, 128, 35, 36, + 32, 200, 72, 35, 36, 122, 105, 284, 88, 46, + 47, 128, 92, 93, 46, 47, 227, 48, 278, 232, + 57, 454, -1, 429, 92, 57, 428, 447, 145, 146, + 211, -1, 149, 150, -1, 152, 153, 154, 155, 156, + 157, -1, 159, -1, 81, -1, -1, 84, -1, 81, + -1, -1, 84, 130, 131, 132, 133, 134, 135, -1, + -1, -1, 99, 94, 48, -1, -1, 99, 105, -1, + -1, -1, -1, 105, -1, -1, -1, 108, -1, -1, + -1, -1, -1, 114, -1, 165, -1, -1, -1, -1, + -1, 122, -1, -1, -1, -1, -1, 128, 129, -1, + 48, -1, 139, 140, 141, -1, -1, 139, 140, 141, + 94, 142, 143, 144, 145, 146, -1, -1, 149, 150, + -1, 152, 153, 154, 155, 156, 157, -1, 159, -1, + 114, -1, -1, -1, -1, -1, -1, -1, 122, -1, + -1, -1, -1, -1, 128, 129, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 142, 143, + 144, 145, 146, -1, -1, 149, 150, -1, 152, 153, + 154, 155, 156, 157, 122, 159, -1, -1, -1, -1, + 128, 129, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 142, 143, 144, 145, 146, -1, + -1, 149, 150, -1, 152, 153, 154, 155, 156, 157, + -1, 159 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1128,113 +1133,114 @@ static const yytype_int16 yycheck[] = static const yytype_uint16 yystos[] = { 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, 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 + 57, 81, 84, 99, 105, 139, 140, 141, 168, 169, + 170, 171, 175, 177, 179, 180, 184, 185, 186, 192, + 194, 195, 196, 198, 201, 262, 263, 26, 3, 257, + 3, 3, 257, 74, 103, 87, 87, 91, 256, 257, + 257, 74, 103, 19, 54, 3, 264, 265, 138, 176, + 176, 176, 0, 164, 269, 105, 172, 172, 52, 161, + 202, 204, 208, 3, 163, 161, 87, 120, 187, 187, + 257, 3, 181, 257, 116, 87, 126, 120, 193, 193, + 257, 118, 165, 170, 90, 117, 220, 202, 204, 9, + 40, 75, 205, 206, 71, 205, 216, 3, 4, 5, + 6, 97, 136, 137, 166, 223, 224, 244, 245, 246, + 247, 248, 249, 250, 4, 178, 114, 257, 257, 77, + 213, 86, 161, 197, 3, 199, 200, 182, 245, 182, + 41, 257, 257, 202, 265, 161, 248, 12, 209, 162, + 162, 202, 203, 208, 107, 207, 119, 203, 49, 67, + 221, 162, 165, 41, 87, 118, 161, 197, 3, 41, + 42, 79, 114, 127, 153, 154, 161, 226, 227, 228, + 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, + 241, 242, 243, 244, 182, 3, 270, 58, 204, 142, + 165, 213, 105, 183, 183, 3, 173, 174, 210, 222, + 225, 226, 216, 217, 218, 226, 216, 226, 107, 226, + 244, 3, 201, 3, 188, 189, 118, 161, 163, 161, + 161, 104, 226, 234, 41, 114, 227, 159, 227, 204, + 226, 108, 125, 17, 48, 94, 114, 121, 122, 128, + 129, 142, 143, 144, 145, 146, 149, 150, 152, 153, + 154, 155, 156, 157, 159, 91, 162, 165, 161, 226, + 200, 43, 161, 162, 165, 87, 211, 212, 165, 3, + 118, 260, 261, 221, 165, 83, 109, 219, 221, 49, + 49, 86, 24, 30, 38, 63, 80, 96, 100, 112, + 190, 162, 165, 201, 162, 209, 3, 154, 204, 130, + 131, 132, 133, 134, 135, 239, 226, 234, 85, 104, + 110, 161, 114, 222, 162, 162, 226, 226, 227, 227, + 94, 121, 161, 97, 114, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 248, 257, 3, 224, 181, 224, 174, 161, 251, 252, + 253, 254, 255, 257, 266, 213, 225, 3, 218, 226, + 226, 182, 161, 161, 97, 114, 191, 189, 222, 162, + 87, 101, 85, 110, 226, 226, 204, 160, 108, 227, + 161, 204, 222, 97, 160, 162, 162, 201, 25, 61, + 66, 72, 73, 88, 93, 267, 165, 118, 258, 259, + 260, 64, 214, 6, 6, 97, 162, 226, 226, 226, + 110, 101, 162, 227, 204, 222, 162, 162, 162, 92, + 72, 72, 72, 92, 252, 3, 119, 162, 162, 162, + 110, 226, 162, 162, 259, 253, 252, 161, 222, 76, + 124, 270, 45, 215, 161, 226, 268, 162, 226, 3, + 243, 162 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 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 + 0, 167, 168, 169, 169, 170, 170, 170, 170, 170, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, + 172, 173, 173, 174, 174, 175, 175, 175, 176, 176, + 177, 178, 179, 179, 180, 180, 181, 182, 183, 183, + 184, 185, 185, 185, 186, 186, 186, 186, 187, 187, + 188, 188, 189, 190, 190, 190, 190, 190, 190, 190, + 190, 191, 191, 191, 192, 192, 192, 193, 193, 194, + 195, 196, 196, 197, 197, 198, 199, 199, 200, 201, + 201, 201, 202, 202, 203, 203, 204, 204, 205, 206, + 206, 206, 207, 207, 208, 209, 209, 210, 211, 211, + 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, + 217, 218, 219, 219, 219, 220, 220, 221, 221, 221, + 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, + 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 228, 228, 229, 229, 229, + 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 231, 231, 232, 232, 232, 232, 233, + 233, 233, 233, 234, 234, 235, 235, 236, 236, 236, + 236, 236, 236, 236, 237, 237, 238, 239, 239, 239, + 239, 239, 239, 240, 241, 242, 243, 243, 243, 243, + 244, 244, 244, 244, 244, 245, 246, 246, 247, 247, + 248, 249, 250, 251, 251, 252, 252, 253, 253, 254, + 254, 255, 256, 257, 257, 258, 258, 259, 259, 260, + 260, 261, 261, 262, 262, 263, 264, 264, 265, 266, + 266, 266, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 268, 269, 269, 270, 270 }; /* 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, 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 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, + 0, 1, 3, 1, 4, 2, 2, 2, 1, 0, + 4, 1, 2, 5, 7, 5, 1, 1, 3, 0, + 5, 2, 3, 2, 8, 7, 6, 7, 3, 0, + 1, 3, 3, 1, 1, 1, 1, 1, 4, 4, + 1, 1, 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 }; @@ -1736,31 +1742,31 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 3: /* IDENTIFIER */ -#line 147 "bison_parser.y" - { free( (((*yyvaluep).sval)) ); } -#line 1742 "bison_parser.cpp" - break; - - case 4: /* STRING */ -#line 147 "bison_parser.y" +#line 148 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } #line 1748 "bison_parser.cpp" break; - case 5: /* FLOATVAL */ -#line 145 "bison_parser.y" - { } + case 4: /* STRING */ +#line 148 "bison_parser.y" + { free( (((*yyvaluep).sval)) ); } #line 1754 "bison_parser.cpp" break; - case 6: /* INTVAL */ -#line 145 "bison_parser.y" + case 5: /* FLOATVAL */ +#line 146 "bison_parser.y" { } #line 1760 "bison_parser.cpp" break; - case 165: /* statement_list */ -#line 148 "bison_parser.y" + case 6: /* INTVAL */ +#line 146 "bison_parser.y" + { } +#line 1766 "bison_parser.cpp" + break; + + case 169: /* statement_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).stmt_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).stmt_vec))) { @@ -1769,23 +1775,23 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1773 "bison_parser.cpp" - break; - - case 166: /* statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).statement)); } #line 1779 "bison_parser.cpp" break; - case 167: /* preparable_statement */ -#line 156 "bison_parser.y" + case 170: /* statement */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).statement)); } #line 1785 "bison_parser.cpp" break; - case 168: /* opt_hints */ -#line 148 "bison_parser.y" + case 171: /* preparable_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).statement)); } +#line 1791 "bison_parser.cpp" + break; + + case 172: /* opt_hints */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1794,11 +1800,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1798 "bison_parser.cpp" +#line 1804 "bison_parser.cpp" break; - case 169: /* hint_list */ -#line 148 "bison_parser.y" + case 173: /* hint_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -1807,83 +1813,89 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1811 "bison_parser.cpp" - break; - - case 170: /* hint */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } #line 1817 "bison_parser.cpp" break; - case 171: /* prepare_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).prep_stmt)); } + case 174: /* hint */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } #line 1823 "bison_parser.cpp" break; - case 172: /* prepare_target_query */ -#line 147 "bison_parser.y" - { free( (((*yyvaluep).sval)) ); } + case 175: /* transaction_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).transaction_stmt)); } #line 1829 "bison_parser.cpp" break; - case 173: /* execute_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).exec_stmt)); } + case 177: /* prepare_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).prep_stmt)); } #line 1835 "bison_parser.cpp" break; - case 174: /* import_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).import_stmt)); } + case 178: /* prepare_target_query */ +#line 148 "bison_parser.y" + { free( (((*yyvaluep).sval)) ); } #line 1841 "bison_parser.cpp" break; - case 175: /* file_type */ -#line 145 "bison_parser.y" - { } + case 179: /* execute_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).exec_stmt)); } #line 1847 "bison_parser.cpp" break; - case 176: /* file_path */ -#line 147 "bison_parser.y" - { free( (((*yyvaluep).sval)) ); } + case 180: /* import_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).import_stmt)); } #line 1853 "bison_parser.cpp" break; - case 177: /* opt_file_type */ -#line 145 "bison_parser.y" + case 181: /* file_type */ +#line 146 "bison_parser.y" { } #line 1859 "bison_parser.cpp" break; - case 178: /* export_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).export_stmt)); } + case 182: /* file_path */ +#line 148 "bison_parser.y" + { free( (((*yyvaluep).sval)) ); } #line 1865 "bison_parser.cpp" break; - case 179: /* show_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).show_stmt)); } + case 183: /* opt_file_type */ +#line 146 "bison_parser.y" + { } #line 1871 "bison_parser.cpp" break; - case 180: /* create_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).create_stmt)); } + case 184: /* export_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).export_stmt)); } #line 1877 "bison_parser.cpp" break; - case 181: /* opt_not_exists */ -#line 145 "bison_parser.y" - { } + case 185: /* show_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).show_stmt)); } #line 1883 "bison_parser.cpp" break; - case 182: /* column_def_commalist */ -#line 148 "bison_parser.y" + case 186: /* create_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).create_stmt)); } +#line 1889 "bison_parser.cpp" + break; + + case 187: /* opt_not_exists */ +#line 146 "bison_parser.y" + { } +#line 1895 "bison_parser.cpp" + break; + + case 188: /* column_def_commalist */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).column_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).column_vec))) { @@ -1892,59 +1904,59 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1896 "bison_parser.cpp" - break; - - case 183: /* column_def */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).column_t)); } -#line 1902 "bison_parser.cpp" - break; - - case 184: /* column_type */ -#line 145 "bison_parser.y" - { } #line 1908 "bison_parser.cpp" break; - case 185: /* opt_column_nullable */ -#line 145 "bison_parser.y" - { } + case 189: /* column_def */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).column_t)); } #line 1914 "bison_parser.cpp" break; - case 186: /* drop_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).drop_stmt)); } + case 190: /* column_type */ +#line 146 "bison_parser.y" + { } #line 1920 "bison_parser.cpp" break; - case 187: /* opt_exists */ -#line 145 "bison_parser.y" + case 191: /* opt_column_nullable */ +#line 146 "bison_parser.y" { } #line 1926 "bison_parser.cpp" break; - case 188: /* delete_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).delete_stmt)); } + case 192: /* drop_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).drop_stmt)); } #line 1932 "bison_parser.cpp" break; - case 189: /* truncate_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).delete_stmt)); } + case 193: /* opt_exists */ +#line 146 "bison_parser.y" + { } #line 1938 "bison_parser.cpp" break; - case 190: /* insert_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).insert_stmt)); } + case 194: /* delete_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).delete_stmt)); } #line 1944 "bison_parser.cpp" break; - case 191: /* opt_column_list */ -#line 148 "bison_parser.y" + case 195: /* truncate_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).delete_stmt)); } +#line 1950 "bison_parser.cpp" + break; + + case 196: /* insert_statement */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).insert_stmt)); } +#line 1956 "bison_parser.cpp" + break; + + case 197: /* opt_column_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -1953,17 +1965,17 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1957 "bison_parser.cpp" +#line 1969 "bison_parser.cpp" break; - case 192: /* update_statement */ -#line 156 "bison_parser.y" + case 198: /* update_statement */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 1963 "bison_parser.cpp" +#line 1975 "bison_parser.cpp" break; - case 193: /* update_clause_commalist */ -#line 148 "bison_parser.y" + case 199: /* update_clause_commalist */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).update_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).update_vec))) { @@ -1972,53 +1984,53 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1976 "bison_parser.cpp" - break; - - case 194: /* update_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).update_t)); } -#line 1982 "bison_parser.cpp" - break; - - case 195: /* select_statement */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).select_stmt)); } #line 1988 "bison_parser.cpp" break; - case 196: /* select_with_paren */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).select_stmt)); } + case 200: /* update_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).update_t)); } #line 1994 "bison_parser.cpp" break; - case 197: /* select_paren_or_clause */ -#line 156 "bison_parser.y" + case 201: /* select_statement */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2000 "bison_parser.cpp" break; - case 198: /* select_no_paren */ -#line 156 "bison_parser.y" + case 202: /* select_with_paren */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2006 "bison_parser.cpp" break; - case 202: /* select_clause */ -#line 156 "bison_parser.y" + case 203: /* select_paren_or_clause */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } #line 2012 "bison_parser.cpp" break; - case 203: /* opt_distinct */ -#line 145 "bison_parser.y" - { } + case 204: /* select_no_paren */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).select_stmt)); } #line 2018 "bison_parser.cpp" break; - case 204: /* select_list */ -#line 148 "bison_parser.y" + case 208: /* select_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).select_stmt)); } +#line 2024 "bison_parser.cpp" + break; + + case 209: /* opt_distinct */ +#line 146 "bison_parser.y" + { } +#line 2030 "bison_parser.cpp" + break; + + case 210: /* select_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2027,41 +2039,41 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2031 "bison_parser.cpp" - break; - - case 205: /* opt_from_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } -#line 2037 "bison_parser.cpp" - break; - - case 206: /* from_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } #line 2043 "bison_parser.cpp" break; - case 207: /* opt_where */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } + case 211: /* opt_from_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } #line 2049 "bison_parser.cpp" break; - case 208: /* opt_group */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).group_t)); } + case 212: /* from_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } #line 2055 "bison_parser.cpp" break; - case 209: /* opt_having */ -#line 156 "bison_parser.y" + case 213: /* opt_where */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2061 "bison_parser.cpp" break; - case 210: /* opt_order */ -#line 148 "bison_parser.y" + case 214: /* opt_group */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).group_t)); } +#line 2067 "bison_parser.cpp" + break; + + case 215: /* opt_having */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2073 "bison_parser.cpp" + break; + + case 216: /* opt_order */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2070,11 +2082,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2074 "bison_parser.cpp" +#line 2086 "bison_parser.cpp" break; - case 211: /* order_list */ -#line 148 "bison_parser.y" + case 217: /* order_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).order_vec))) { @@ -2083,35 +2095,35 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2087 "bison_parser.cpp" - break; - - case 212: /* order_desc */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).order)); } -#line 2093 "bison_parser.cpp" - break; - - case 213: /* opt_order_type */ -#line 145 "bison_parser.y" - { } #line 2099 "bison_parser.cpp" break; - case 214: /* opt_top */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).limit)); } + case 218: /* order_desc */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).order)); } #line 2105 "bison_parser.cpp" break; - case 215: /* opt_limit */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).limit)); } + case 219: /* opt_order_type */ +#line 146 "bison_parser.y" + { } #line 2111 "bison_parser.cpp" break; - case 216: /* expr_list */ -#line 148 "bison_parser.y" + case 220: /* opt_top */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).limit)); } +#line 2117 "bison_parser.cpp" + break; + + case 221: /* opt_limit */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).limit)); } +#line 2123 "bison_parser.cpp" + break; + + case 222: /* expr_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2120,11 +2132,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2124 "bison_parser.cpp" +#line 2136 "bison_parser.cpp" break; - case 217: /* opt_literal_list */ -#line 148 "bison_parser.y" + case 223: /* opt_literal_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2133,11 +2145,11 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2137 "bison_parser.cpp" +#line 2149 "bison_parser.cpp" break; - case 218: /* literal_list */ -#line 148 "bison_parser.y" + case 224: /* literal_list */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).expr_vec))) { @@ -2146,185 +2158,185 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2150 "bison_parser.cpp" - break; - - case 219: /* expr_alias */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } -#line 2156 "bison_parser.cpp" - break; - - case 220: /* expr */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } #line 2162 "bison_parser.cpp" break; - case 221: /* operand */ -#line 156 "bison_parser.y" + case 225: /* expr_alias */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2168 "bison_parser.cpp" break; - case 222: /* scalar_expr */ -#line 156 "bison_parser.y" + case 226: /* expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2174 "bison_parser.cpp" break; - case 223: /* unary_expr */ -#line 156 "bison_parser.y" + case 227: /* operand */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2180 "bison_parser.cpp" break; - case 224: /* binary_expr */ -#line 156 "bison_parser.y" + case 228: /* scalar_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2186 "bison_parser.cpp" break; - case 225: /* logic_expr */ -#line 156 "bison_parser.y" + case 229: /* unary_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2192 "bison_parser.cpp" break; - case 226: /* in_expr */ -#line 156 "bison_parser.y" + case 230: /* binary_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2198 "bison_parser.cpp" break; - case 227: /* case_expr */ -#line 156 "bison_parser.y" + case 231: /* logic_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2204 "bison_parser.cpp" break; - case 228: /* case_list */ -#line 156 "bison_parser.y" + case 232: /* in_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2210 "bison_parser.cpp" break; - case 229: /* exists_expr */ -#line 156 "bison_parser.y" + case 233: /* case_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2216 "bison_parser.cpp" break; - case 230: /* comp_expr */ -#line 156 "bison_parser.y" + case 234: /* case_list */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2222 "bison_parser.cpp" break; - case 231: /* function_expr */ -#line 156 "bison_parser.y" + case 235: /* exists_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2228 "bison_parser.cpp" break; - case 232: /* extract_expr */ -#line 156 "bison_parser.y" + case 236: /* comp_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2234 "bison_parser.cpp" break; - case 233: /* datetime_field */ -#line 145 "bison_parser.y" - { } + case 237: /* function_expr */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } #line 2240 "bison_parser.cpp" break; - case 234: /* array_expr */ -#line 156 "bison_parser.y" + case 238: /* extract_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2246 "bison_parser.cpp" break; - case 235: /* array_index */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } + case 239: /* datetime_field */ +#line 146 "bison_parser.y" + { } #line 2252 "bison_parser.cpp" break; - case 236: /* between_expr */ -#line 156 "bison_parser.y" + case 240: /* array_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2258 "bison_parser.cpp" break; - case 237: /* column_name */ -#line 156 "bison_parser.y" + case 241: /* array_index */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2264 "bison_parser.cpp" break; - case 238: /* literal */ -#line 156 "bison_parser.y" + case 242: /* between_expr */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2270 "bison_parser.cpp" break; - case 239: /* string_literal */ -#line 156 "bison_parser.y" + case 243: /* column_name */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2276 "bison_parser.cpp" break; - case 240: /* bool_literal */ -#line 156 "bison_parser.y" + case 244: /* literal */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2282 "bison_parser.cpp" break; - case 241: /* num_literal */ -#line 156 "bison_parser.y" + case 245: /* string_literal */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2288 "bison_parser.cpp" break; - case 242: /* int_literal */ -#line 156 "bison_parser.y" + case 246: /* bool_literal */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2294 "bison_parser.cpp" break; - case 243: /* null_literal */ -#line 156 "bison_parser.y" + case 247: /* num_literal */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2300 "bison_parser.cpp" break; - case 244: /* param_expr */ -#line 156 "bison_parser.y" + case 248: /* int_literal */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).expr)); } #line 2306 "bison_parser.cpp" break; - case 245: /* table_ref */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } + case 249: /* null_literal */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } #line 2312 "bison_parser.cpp" break; - case 246: /* table_ref_atomic */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } + case 250: /* param_expr */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } #line 2318 "bison_parser.cpp" break; - case 247: /* nonjoin_table_ref_atomic */ -#line 156 "bison_parser.y" + case 251: /* table_ref */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).table)); } #line 2324 "bison_parser.cpp" break; - case 248: /* table_ref_commalist */ -#line 148 "bison_parser.y" + case 252: /* table_ref_atomic */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } +#line 2330 "bison_parser.cpp" + break; + + case 253: /* nonjoin_table_ref_atomic */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } +#line 2336 "bison_parser.cpp" + break; + + case 254: /* table_ref_commalist */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).table_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).table_vec))) { @@ -2333,95 +2345,95 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2337 "bison_parser.cpp" - break; - - case 249: /* table_ref_name */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } -#line 2343 "bison_parser.cpp" - break; - - case 250: /* table_ref_name_no_alias */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } #line 2349 "bison_parser.cpp" break; - case 251: /* table_name */ -#line 146 "bison_parser.y" - { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } + case 255: /* table_ref_name */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } #line 2355 "bison_parser.cpp" break; - case 252: /* table_alias */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).alias_t)); } + case 256: /* table_ref_name_no_alias */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } #line 2361 "bison_parser.cpp" break; - case 253: /* opt_table_alias */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).alias_t)); } + case 257: /* table_name */ +#line 147 "bison_parser.y" + { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } #line 2367 "bison_parser.cpp" break; - case 254: /* alias */ -#line 156 "bison_parser.y" + case 258: /* table_alias */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2373 "bison_parser.cpp" break; - case 255: /* opt_alias */ -#line 156 "bison_parser.y" + case 259: /* opt_table_alias */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } #line 2379 "bison_parser.cpp" break; - case 256: /* opt_with_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).with_description_vec)); } + case 260: /* alias */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).alias_t)); } #line 2385 "bison_parser.cpp" break; - case 257: /* with_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).with_description_vec)); } + case 261: /* opt_alias */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).alias_t)); } #line 2391 "bison_parser.cpp" break; - case 258: /* with_description_list */ -#line 156 "bison_parser.y" + case 262: /* opt_with_clause */ +#line 157 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } #line 2397 "bison_parser.cpp" break; - case 259: /* with_description */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).with_description_t)); } + case 263: /* with_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).with_description_vec)); } #line 2403 "bison_parser.cpp" break; - case 260: /* join_clause */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).table)); } + case 264: /* with_description_list */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).with_description_vec)); } #line 2409 "bison_parser.cpp" break; - case 261: /* opt_join_type */ -#line 145 "bison_parser.y" - { } + case 265: /* with_description */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).with_description_t)); } #line 2415 "bison_parser.cpp" break; - case 262: /* join_condition */ -#line 156 "bison_parser.y" - { delete (((*yyvaluep).expr)); } + case 266: /* join_clause */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).table)); } #line 2421 "bison_parser.cpp" break; - case 264: /* ident_commalist */ -#line 148 "bison_parser.y" + case 267: /* opt_join_type */ +#line 146 "bison_parser.y" + { } +#line 2427 "bison_parser.cpp" + break; + + case 268: /* join_condition */ +#line 157 "bison_parser.y" + { delete (((*yyvaluep).expr)); } +#line 2433 "bison_parser.cpp" + break; + + case 270: /* ident_commalist */ +#line 149 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { for (auto ptr : *(((*yyvaluep).str_vec))) { @@ -2430,7 +2442,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2434 "bison_parser.cpp" +#line 2446 "bison_parser.cpp" break; default: @@ -2548,7 +2560,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2552 "bison_parser.cpp" +#line 2564 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -2741,7 +2753,7 @@ yyreduce: switch (yyn) { case 2: -#line 264 "bison_parser.y" +#line 267 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2759,217 +2771,247 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2763 "bison_parser.cpp" +#line 2775 "bison_parser.cpp" break; case 3: -#line 285 "bison_parser.y" +#line 288 "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 2774 "bison_parser.cpp" +#line 2786 "bison_parser.cpp" break; case 4: -#line 291 "bison_parser.y" +#line 294 "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 2785 "bison_parser.cpp" +#line 2797 "bison_parser.cpp" break; case 5: -#line 300 "bison_parser.y" +#line 303 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2794 "bison_parser.cpp" +#line 2806 "bison_parser.cpp" break; case 6: -#line 304 "bison_parser.y" +#line 307 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2803 "bison_parser.cpp" +#line 2815 "bison_parser.cpp" break; case 7: -#line 308 "bison_parser.y" +#line 311 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2811 "bison_parser.cpp" +#line 2823 "bison_parser.cpp" break; case 8: -#line 311 "bison_parser.y" +#line 314 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2819 "bison_parser.cpp" +#line 2831 "bison_parser.cpp" break; case 9: -#line 314 "bison_parser.y" +#line 317 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 2827 "bison_parser.cpp" - break; - - case 10: -#line 321 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2833 "bison_parser.cpp" - break; - - case 11: -#line 322 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].create_stmt); } #line 2839 "bison_parser.cpp" break; - case 12: -#line 323 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].insert_stmt); } + case 10: +#line 324 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].select_stmt); } #line 2845 "bison_parser.cpp" break; - case 13: -#line 324 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].delete_stmt); } + case 11: +#line 325 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].create_stmt); } #line 2851 "bison_parser.cpp" break; - case 14: -#line 325 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].delete_stmt); } + case 12: +#line 326 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].insert_stmt); } #line 2857 "bison_parser.cpp" break; - case 15: -#line 326 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].update_stmt); } + case 13: +#line 327 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2863 "bison_parser.cpp" break; - case 16: -#line 327 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].drop_stmt); } + case 14: +#line 328 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].delete_stmt); } #line 2869 "bison_parser.cpp" break; - case 17: -#line 328 "bison_parser.y" - { (yyval.statement) = (yyvsp[0].exec_stmt); } + case 15: +#line 329 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].update_stmt); } #line 2875 "bison_parser.cpp" break; - case 18: -#line 337 "bison_parser.y" - { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } + case 16: +#line 330 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].drop_stmt); } #line 2881 "bison_parser.cpp" break; - case 19: -#line 338 "bison_parser.y" - { (yyval.expr_vec) = nullptr; } + case 17: +#line 331 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].exec_stmt); } #line 2887 "bison_parser.cpp" break; - case 20: -#line 343 "bison_parser.y" - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 18: +#line 332 "bison_parser.y" + { (yyval.statement) = (yyvsp[0].transaction_stmt); } #line 2893 "bison_parser.cpp" break; - case 21: -#line 344 "bison_parser.y" - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 19: +#line 341 "bison_parser.y" + { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } #line 2899 "bison_parser.cpp" break; + case 20: +#line 342 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 2905 "bison_parser.cpp" + break; + + case 21: +#line 347 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 2911 "bison_parser.cpp" + break; + case 22: #line 348 "bison_parser.y" - { - (yyval.expr) = Expr::make(kExprHint); - (yyval.expr)->name = (yyvsp[0].sval); - } -#line 2908 "bison_parser.cpp" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 2917 "bison_parser.cpp" break; 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); + (yyval.expr)->name = (yyvsp[0].sval); } -#line 2918 "bison_parser.cpp" +#line 2926 "bison_parser.cpp" break; case 24: -#line 364 "bison_parser.y" +#line 356 "bison_parser.y" + { + (yyval.expr) = Expr::make(kExprHint); + (yyval.expr)->name = (yyvsp[-3].sval); + (yyval.expr)->exprList = (yyvsp[-1].expr_vec); + } +#line 2936 "bison_parser.cpp" + break; + + case 25: +#line 368 "bison_parser.y" + { + (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); + } +#line 2944 "bison_parser.cpp" + break; + + case 26: +#line 371 "bison_parser.y" + { + (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); + } +#line 2952 "bison_parser.cpp" + break; + + case 27: +#line 374 "bison_parser.y" + { + (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); + } +#line 2960 "bison_parser.cpp" + break; + + case 30: +#line 388 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2928 "bison_parser.cpp" +#line 2970 "bison_parser.cpp" break; - case 26: -#line 374 "bison_parser.y" + case 32: +#line 398 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2937 "bison_parser.cpp" +#line 2979 "bison_parser.cpp" break; - case 27: -#line 378 "bison_parser.y" + case 33: +#line 402 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2947 "bison_parser.cpp" +#line 2989 "bison_parser.cpp" break; - case 28: -#line 392 "bison_parser.y" + case 34: +#line 416 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2958 "bison_parser.cpp" +#line 3000 "bison_parser.cpp" break; - case 29: -#line 398 "bison_parser.y" + case 35: +#line 422 "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" +#line 3011 "bison_parser.cpp" break; - case 30: -#line 407 "bison_parser.y" + case 36: +#line 431 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { (yyval.import_type_t) = kImportCSV; @@ -2984,70 +3026,70 @@ yyreduce: } free((yyvsp[0].sval)); } -#line 2988 "bison_parser.cpp" +#line 3030 "bison_parser.cpp" break; - case 31: -#line 424 "bison_parser.y" + case 37: +#line 448 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2994 "bison_parser.cpp" +#line 3036 "bison_parser.cpp" break; - case 32: -#line 428 "bison_parser.y" + case 38: +#line 452 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3002 "bison_parser.cpp" +#line 3044 "bison_parser.cpp" break; - case 33: -#line 431 "bison_parser.y" + case 39: +#line 455 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3008 "bison_parser.cpp" +#line 3050 "bison_parser.cpp" break; - case 34: -#line 440 "bison_parser.y" + case 40: +#line 464 "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" +#line 3061 "bison_parser.cpp" break; - case 35: -#line 454 "bison_parser.y" + case 41: +#line 478 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3027 "bison_parser.cpp" +#line 3069 "bison_parser.cpp" break; - case 36: -#line 457 "bison_parser.y" + case 42: +#line 481 "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 3037 "bison_parser.cpp" +#line 3079 "bison_parser.cpp" break; - case 37: -#line 462 "bison_parser.y" + case 43: +#line 486 "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" +#line 3089 "bison_parser.cpp" break; - case 38: -#line 476 "bison_parser.y" + case 44: +#line 500 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -3061,11 +3103,11 @@ yyreduce: free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3065 "bison_parser.cpp" +#line 3107 "bison_parser.cpp" break; - case 39: -#line 489 "bison_parser.y" + case 45: +#line 513 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3073,11 +3115,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 3077 "bison_parser.cpp" +#line 3119 "bison_parser.cpp" break; - case 40: -#line 496 "bison_parser.y" + case 46: +#line 520 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-3].bval); @@ -3085,11 +3127,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3089 "bison_parser.cpp" +#line 3131 "bison_parser.cpp" break; - case 41: -#line 503 "bison_parser.y" + case 47: +#line 527 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -3098,174 +3140,174 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3102 "bison_parser.cpp" - break; - - case 42: -#line 514 "bison_parser.y" - { (yyval.bval) = true; } -#line 3108 "bison_parser.cpp" - break; - - case 43: -#line 515 "bison_parser.y" - { (yyval.bval) = false; } -#line 3114 "bison_parser.cpp" - break; - - case 44: -#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 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 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 530 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3140 "bison_parser.cpp" +#line 3144 "bison_parser.cpp" break; case 48: -#line 531 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3146 "bison_parser.cpp" +#line 538 "bison_parser.y" + { (yyval.bval) = true; } +#line 3150 "bison_parser.cpp" break; case 49: -#line 532 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3152 "bison_parser.cpp" +#line 539 "bison_parser.y" + { (yyval.bval) = false; } +#line 3156 "bison_parser.cpp" break; case 50: -#line 533 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3158 "bison_parser.cpp" +#line 543 "bison_parser.y" + { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } +#line 3162 "bison_parser.cpp" break; case 51: -#line 534 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3164 "bison_parser.cpp" +#line 544 "bison_parser.y" + { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } +#line 3168 "bison_parser.cpp" break; case 52: -#line 535 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3170 "bison_parser.cpp" - break; - - case 53: -#line 536 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 548 "bison_parser.y" + { + (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); + } #line 3176 "bison_parser.cpp" break; - case 54: -#line 537 "bison_parser.y" - { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } + case 53: +#line 554 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } #line 3182 "bison_parser.cpp" break; - case 55: -#line 541 "bison_parser.y" - { (yyval.bval) = true; } + case 54: +#line 555 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::INT}; } #line 3188 "bison_parser.cpp" break; - case 56: -#line 542 "bison_parser.y" - { (yyval.bval) = false; } + case 55: +#line 556 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::LONG}; } #line 3194 "bison_parser.cpp" break; - case 57: -#line 543 "bison_parser.y" - { (yyval.bval) = false; } + case 56: +#line 557 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } #line 3200 "bison_parser.cpp" break; + case 57: +#line 558 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } +#line 3206 "bison_parser.cpp" + break; + case 58: -#line 553 "bison_parser.y" +#line 559 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } +#line 3212 "bison_parser.cpp" + break; + + case 59: +#line 560 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } +#line 3218 "bison_parser.cpp" + break; + + case 60: +#line 561 "bison_parser.y" + { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } +#line 3224 "bison_parser.cpp" + break; + + case 61: +#line 565 "bison_parser.y" + { (yyval.bval) = true; } +#line 3230 "bison_parser.cpp" + break; + + case 62: +#line 566 "bison_parser.y" + { (yyval.bval) = false; } +#line 3236 "bison_parser.cpp" + break; + + case 63: +#line 567 "bison_parser.y" + { (yyval.bval) = false; } +#line 3242 "bison_parser.cpp" + break; + + case 64: +#line 577 "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 3211 "bison_parser.cpp" +#line 3253 "bison_parser.cpp" break; - case 59: -#line 559 "bison_parser.y" + case 65: +#line 583 "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 3222 "bison_parser.cpp" +#line 3264 "bison_parser.cpp" break; - case 60: -#line 565 "bison_parser.y" + case 66: +#line 589 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3232 "bison_parser.cpp" +#line 3274 "bison_parser.cpp" break; - case 61: -#line 573 "bison_parser.y" + case 67: +#line 597 "bison_parser.y" { (yyval.bval) = true; } -#line 3238 "bison_parser.cpp" +#line 3280 "bison_parser.cpp" break; - case 62: -#line 574 "bison_parser.y" + case 68: +#line 598 "bison_parser.y" { (yyval.bval) = false; } -#line 3244 "bison_parser.cpp" +#line 3286 "bison_parser.cpp" break; - case 63: -#line 583 "bison_parser.y" + case 69: +#line 607 "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 3255 "bison_parser.cpp" +#line 3297 "bison_parser.cpp" break; - case 64: -#line 592 "bison_parser.y" + case 70: +#line 616 "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 3265 "bison_parser.cpp" +#line 3307 "bison_parser.cpp" break; - case 65: -#line 605 "bison_parser.y" + case 71: +#line 629 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3273,11 +3315,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3277 "bison_parser.cpp" +#line 3319 "bison_parser.cpp" break; - case 66: -#line 612 "bison_parser.y" + case 72: +#line 636 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3285,74 +3327,74 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3289 "bison_parser.cpp" +#line 3331 "bison_parser.cpp" break; - case 67: -#line 623 "bison_parser.y" + case 73: +#line 647 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3295 "bison_parser.cpp" +#line 3337 "bison_parser.cpp" break; - case 68: -#line 624 "bison_parser.y" + case 74: +#line 648 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 3301 "bison_parser.cpp" +#line 3343 "bison_parser.cpp" break; - case 69: -#line 634 "bison_parser.y" + case 75: +#line 658 "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 3312 "bison_parser.cpp" +#line 3354 "bison_parser.cpp" break; - case 70: -#line 643 "bison_parser.y" + case 76: +#line 667 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3318 "bison_parser.cpp" +#line 3360 "bison_parser.cpp" break; - case 71: -#line 644 "bison_parser.y" + case 77: +#line 668 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3324 "bison_parser.cpp" +#line 3366 "bison_parser.cpp" break; - case 72: -#line 648 "bison_parser.y" + case 78: +#line 672 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3334 "bison_parser.cpp" +#line 3376 "bison_parser.cpp" break; - case 73: -#line 660 "bison_parser.y" + case 79: +#line 684 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3343 "bison_parser.cpp" +#line 3385 "bison_parser.cpp" break; - case 74: -#line 664 "bison_parser.y" + case 80: +#line 688 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3352 "bison_parser.cpp" +#line 3394 "bison_parser.cpp" break; - case 75: -#line 668 "bison_parser.y" + case 81: +#line 692 "bison_parser.y" { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3368,23 +3410,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3372 "bison_parser.cpp" +#line 3414 "bison_parser.cpp" break; - case 76: -#line 686 "bison_parser.y" + case 82: +#line 710 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3378 "bison_parser.cpp" +#line 3420 "bison_parser.cpp" break; - case 77: -#line 687 "bison_parser.y" + case 83: +#line 711 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3384 "bison_parser.cpp" +#line 3426 "bison_parser.cpp" break; - case 80: -#line 696 "bison_parser.y" + case 86: +#line 720 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3395,11 +3437,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3399 "bison_parser.cpp" +#line 3441 "bison_parser.cpp" break; - case 81: -#line 706 "bison_parser.y" + case 87: +#line 730 "bison_parser.y" { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3414,11 +3456,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3418 "bison_parser.cpp" +#line 3460 "bison_parser.cpp" break; - case 88: -#line 738 "bison_parser.y" + case 94: +#line 762 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3428,213 +3470,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3432 "bison_parser.cpp" - break; - - case 89: -#line 750 "bison_parser.y" - { (yyval.bval) = true; } -#line 3438 "bison_parser.cpp" - break; - - case 90: -#line 751 "bison_parser.y" - { (yyval.bval) = false; } -#line 3444 "bison_parser.cpp" - break; - - case 92: -#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: + case 95: #line 774 "bison_parser.y" + { (yyval.bval) = true; } +#line 3480 "bison_parser.cpp" + break; + + case 96: +#line 775 "bison_parser.y" + { (yyval.bval) = false; } +#line 3486 "bison_parser.cpp" + break; + + case 98: +#line 783 "bison_parser.y" + { (yyval.table) = (yyvsp[0].table); } +#line 3492 "bison_parser.cpp" + break; + + case 99: +#line 784 "bison_parser.y" + { (yyval.table) = nullptr; } +#line 3498 "bison_parser.cpp" + break; + + case 100: +#line 788 "bison_parser.y" + { (yyval.table) = (yyvsp[0].table); } +#line 3504 "bison_parser.cpp" + break; + + case 101: +#line 793 "bison_parser.y" + { (yyval.expr) = (yyvsp[0].expr); } +#line 3510 "bison_parser.cpp" + break; + + case 102: +#line 794 "bison_parser.y" + { (yyval.expr) = nullptr; } +#line 3516 "bison_parser.cpp" + break; + + case 103: +#line 798 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3484 "bison_parser.cpp" - break; - - case 98: -#line 779 "bison_parser.y" - { (yyval.group_t) = nullptr; } -#line 3490 "bison_parser.cpp" - break; - - case 99: -#line 783 "bison_parser.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 3496 "bison_parser.cpp" - break; - - case 100: -#line 784 "bison_parser.y" - { (yyval.expr) = nullptr; } -#line 3502 "bison_parser.cpp" - break; - - case 101: -#line 788 "bison_parser.y" - { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3508 "bison_parser.cpp" - break; - - case 102: -#line 789 "bison_parser.y" - { (yyval.order_vec) = nullptr; } -#line 3514 "bison_parser.cpp" - break; - - case 103: -#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 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 798 "bison_parser.y" - { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } + case 104: +#line 803 "bison_parser.y" + { (yyval.group_t) = nullptr; } #line 3532 "bison_parser.cpp" break; - case 106: -#line 802 "bison_parser.y" - { (yyval.order_type) = kOrderAsc; } + case 105: +#line 807 "bison_parser.y" + { (yyval.expr) = (yyvsp[0].expr); } #line 3538 "bison_parser.cpp" break; - case 107: -#line 803 "bison_parser.y" - { (yyval.order_type) = kOrderDesc; } + case 106: +#line 808 "bison_parser.y" + { (yyval.expr) = nullptr; } #line 3544 "bison_parser.cpp" break; - case 108: -#line 804 "bison_parser.y" - { (yyval.order_type) = kOrderAsc; } + case 107: +#line 812 "bison_parser.y" + { (yyval.order_vec) = (yyvsp[0].order_vec); } #line 3550 "bison_parser.cpp" break; - case 109: -#line 810 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } + case 108: +#line 813 "bison_parser.y" + { (yyval.order_vec) = nullptr; } #line 3556 "bison_parser.cpp" break; - case 110: -#line 811 "bison_parser.y" - { (yyval.limit) = nullptr; } + case 109: +#line 817 "bison_parser.y" + { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } #line 3562 "bison_parser.cpp" break; - case 111: -#line 815 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } + case 110: +#line 818 "bison_parser.y" + { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } #line 3568 "bison_parser.cpp" break; - case 112: -#line 816 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } + case 111: +#line 822 "bison_parser.y" + { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } #line 3574 "bison_parser.cpp" break; - case 113: -#line 817 "bison_parser.y" - { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } + case 112: +#line 826 "bison_parser.y" + { (yyval.order_type) = kOrderAsc; } #line 3580 "bison_parser.cpp" break; - case 114: -#line 818 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, nullptr); } + case 113: +#line 827 "bison_parser.y" + { (yyval.order_type) = kOrderDesc; } #line 3586 "bison_parser.cpp" break; - case 115: -#line 819 "bison_parser.y" - { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } + case 114: +#line 828 "bison_parser.y" + { (yyval.order_type) = kOrderAsc; } #line 3592 "bison_parser.cpp" break; - case 116: -#line 820 "bison_parser.y" - { (yyval.limit) = nullptr; } + case 115: +#line 834 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } #line 3598 "bison_parser.cpp" break; - case 117: -#line 827 "bison_parser.y" - { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } + case 116: +#line 835 "bison_parser.y" + { (yyval.limit) = nullptr; } #line 3604 "bison_parser.cpp" break; - case 118: -#line 828 "bison_parser.y" - { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } + case 117: +#line 839 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } #line 3610 "bison_parser.cpp" break; - case 119: -#line 832 "bison_parser.y" - { (yyval.expr_vec) = (yyvsp[0].expr_vec); } + case 118: +#line 840 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } #line 3616 "bison_parser.cpp" break; - case 120: -#line 833 "bison_parser.y" - { (yyval.expr_vec) = nullptr; } + case 119: +#line 841 "bison_parser.y" + { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } #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)); } + case 120: +#line 842 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, nullptr); } #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); } + case 121: +#line 843 "bison_parser.y" + { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } #line 3634 "bison_parser.cpp" break; + case 122: +#line 844 "bison_parser.y" + { (yyval.limit) = nullptr; } +#line 3640 "bison_parser.cpp" + break; + case 123: -#line 842 "bison_parser.y" +#line 851 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3646 "bison_parser.cpp" + break; + + case 124: +#line 852 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3652 "bison_parser.cpp" + break; + + case 125: +#line 856 "bison_parser.y" + { (yyval.expr_vec) = (yyvsp[0].expr_vec); } +#line 3658 "bison_parser.cpp" + break; + + case 126: +#line 857 "bison_parser.y" + { (yyval.expr_vec) = nullptr; } +#line 3664 "bison_parser.cpp" + break; + + case 127: +#line 861 "bison_parser.y" + { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } +#line 3670 "bison_parser.cpp" + break; + + case 128: +#line 862 "bison_parser.y" + { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } +#line 3676 "bison_parser.cpp" + break; + + case 129: +#line 866 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3642,415 +3684,415 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3646 "bison_parser.cpp" - break; - - case 129: -#line 860 "bison_parser.y" - { (yyval.expr) = (yyvsp[-1].expr); } -#line 3652 "bison_parser.cpp" - break; - - case 138: -#line 869 "bison_parser.y" - { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3658 "bison_parser.cpp" - break; - - case 141: -#line 878 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3664 "bison_parser.cpp" - break; - - case 142: -#line 879 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3670 "bison_parser.cpp" - break; - - case 143: -#line 880 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3676 "bison_parser.cpp" - break; - - case 144: -#line 881 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3682 "bison_parser.cpp" - break; - - case 145: -#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 887 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } + case 135: +#line 884 "bison_parser.y" + { (yyval.expr) = (yyvsp[-1].expr); } #line 3694 "bison_parser.cpp" break; - case 148: -#line 888 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } + case 144: +#line 893 "bison_parser.y" + { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } #line 3700 "bison_parser.cpp" break; - case 149: -#line 889 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } + case 147: +#line 902 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } #line 3706 "bison_parser.cpp" break; - case 150: -#line 890 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } + case 148: +#line 903 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } #line 3712 "bison_parser.cpp" break; - case 151: -#line 891 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } + case 149: +#line 904 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } #line 3718 "bison_parser.cpp" break; - case 152: -#line 892 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } + case 150: +#line 905 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } #line 3724 "bison_parser.cpp" break; - case 153: -#line 893 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } + case 151: +#line 906 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } #line 3730 "bison_parser.cpp" break; - case 154: -#line 894 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } + case 153: +#line 911 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } #line 3736 "bison_parser.cpp" break; - case 155: -#line 895 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } + case 154: +#line 912 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } #line 3742 "bison_parser.cpp" break; - case 156: -#line 896 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } + case 155: +#line 913 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } #line 3748 "bison_parser.cpp" break; - case 157: -#line 900 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } + case 156: +#line 914 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } #line 3754 "bison_parser.cpp" break; - case 158: -#line 901 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } + case 157: +#line 915 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } #line 3760 "bison_parser.cpp" break; - case 159: -#line 905 "bison_parser.y" - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } + case 158: +#line 916 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } #line 3766 "bison_parser.cpp" break; - case 160: -#line 906 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } + case 159: +#line 917 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } #line 3772 "bison_parser.cpp" break; - case 161: -#line 907 "bison_parser.y" - { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } + case 160: +#line 918 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } #line 3778 "bison_parser.cpp" break; - case 162: -#line 908 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } + case 161: +#line 919 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } #line 3784 "bison_parser.cpp" break; - case 163: -#line 914 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } + case 162: +#line 920 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } #line 3790 "bison_parser.cpp" break; - case 164: -#line 915 "bison_parser.y" - { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 163: +#line 924 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } #line 3796 "bison_parser.cpp" break; - case 165: -#line 916 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } + case 164: +#line 925 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } #line 3802 "bison_parser.cpp" break; - case 166: -#line 917 "bison_parser.y" - { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } + case 165: +#line 929 "bison_parser.y" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } #line 3808 "bison_parser.cpp" break; - case 167: -#line 921 "bison_parser.y" - { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 166: +#line 930 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } #line 3814 "bison_parser.cpp" break; - case 168: -#line 922 "bison_parser.y" - { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } + case 167: +#line 931 "bison_parser.y" + { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } #line 3820 "bison_parser.cpp" break; - case 169: -#line 926 "bison_parser.y" - { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } + case 168: +#line 932 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } #line 3826 "bison_parser.cpp" break; - case 170: -#line 927 "bison_parser.y" - { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } + case 169: +#line 938 "bison_parser.y" + { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } #line 3832 "bison_parser.cpp" break; - case 171: -#line 931 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 170: +#line 939 "bison_parser.y" + { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3838 "bison_parser.cpp" break; - case 172: -#line 932 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } + case 171: +#line 940 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } #line 3844 "bison_parser.cpp" break; - case 173: -#line 933 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } + case 172: +#line 941 "bison_parser.y" + { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } #line 3850 "bison_parser.cpp" break; - case 174: -#line 934 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } + case 173: +#line 945 "bison_parser.y" + { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3856 "bison_parser.cpp" break; - case 175: -#line 935 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } + case 174: +#line 946 "bison_parser.y" + { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } #line 3862 "bison_parser.cpp" break; - case 176: -#line 936 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } + case 175: +#line 950 "bison_parser.y" + { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } #line 3868 "bison_parser.cpp" break; - case 177: -#line 937 "bison_parser.y" - { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } + case 176: +#line 951 "bison_parser.y" + { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } #line 3874 "bison_parser.cpp" break; - case 178: -#line 941 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } + case 177: +#line 955 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3880 "bison_parser.cpp" break; - case 179: -#line 942 "bison_parser.y" - { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } + case 178: +#line 956 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } #line 3886 "bison_parser.cpp" break; - case 180: -#line 946 "bison_parser.y" - { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } + case 179: +#line 957 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } #line 3892 "bison_parser.cpp" break; - case 181: -#line 950 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeSecond; } + case 180: +#line 958 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } #line 3898 "bison_parser.cpp" break; - case 182: -#line 951 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeMinute; } + case 181: +#line 959 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } #line 3904 "bison_parser.cpp" break; - case 183: -#line 952 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeHour; } + case 182: +#line 960 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } #line 3910 "bison_parser.cpp" break; - case 184: -#line 953 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeDay; } + case 183: +#line 961 "bison_parser.y" + { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } #line 3916 "bison_parser.cpp" break; - case 185: -#line 954 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeMonth; } + case 184: +#line 965 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } #line 3922 "bison_parser.cpp" break; - case 186: -#line 955 "bison_parser.y" - { (yyval.datetime_field) = kDatetimeYear; } + case 185: +#line 966 "bison_parser.y" + { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } #line 3928 "bison_parser.cpp" break; - case 187: -#line 959 "bison_parser.y" - { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } + case 186: +#line 970 "bison_parser.y" + { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } #line 3934 "bison_parser.cpp" break; - case 188: -#line 963 "bison_parser.y" - { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } + case 187: +#line 974 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeSecond; } #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)); } + case 188: +#line 975 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeMinute; } #line 3946 "bison_parser.cpp" break; - case 190: -#line 971 "bison_parser.y" - { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } + case 189: +#line 976 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeHour; } #line 3952 "bison_parser.cpp" break; - case 191: -#line 972 "bison_parser.y" - { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } + case 190: +#line 977 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeDay; } #line 3958 "bison_parser.cpp" break; - case 192: -#line 973 "bison_parser.y" - { (yyval.expr) = Expr::makeStar(); } + case 191: +#line 978 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeMonth; } #line 3964 "bison_parser.cpp" break; - case 193: -#line 974 "bison_parser.y" - { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } + case 192: +#line 979 "bison_parser.y" + { (yyval.datetime_field) = kDatetimeYear; } #line 3970 "bison_parser.cpp" break; - case 199: -#line 986 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } + case 193: +#line 983 "bison_parser.y" + { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } #line 3976 "bison_parser.cpp" break; - case 200: -#line 990 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral(true); } + case 194: +#line 987 "bison_parser.y" + { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } #line 3982 "bison_parser.cpp" break; - case 201: + case 195: #line 991 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral(false); } + { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } #line 3988 "bison_parser.cpp" break; - case 202: + case 196: #line 995 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } + { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } #line 3994 "bison_parser.cpp" break; - case 204: -#line 1000 "bison_parser.y" - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } + case 197: +#line 996 "bison_parser.y" + { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } #line 4000 "bison_parser.cpp" break; - case 205: -#line 1004 "bison_parser.y" - { (yyval.expr) = Expr::makeNullLiteral(); } + case 198: +#line 997 "bison_parser.y" + { (yyval.expr) = Expr::makeStar(); } #line 4006 "bison_parser.cpp" break; + case 199: +#line 998 "bison_parser.y" + { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } +#line 4012 "bison_parser.cpp" + break; + + case 205: +#line 1010 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 4018 "bison_parser.cpp" + break; + case 206: -#line 1008 "bison_parser.y" +#line 1014 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral(true); } +#line 4024 "bison_parser.cpp" + break; + + case 207: +#line 1015 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral(false); } +#line 4030 "bison_parser.cpp" + break; + + case 208: +#line 1019 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 4036 "bison_parser.cpp" + break; + + case 210: +#line 1024 "bison_parser.y" + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 4042 "bison_parser.cpp" + break; + + case 211: +#line 1028 "bison_parser.y" + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 4048 "bison_parser.cpp" + break; + + case 212: +#line 1032 "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 4016 "bison_parser.cpp" +#line 4058 "bison_parser.cpp" break; - case 208: -#line 1021 "bison_parser.y" + case 214: +#line 1045 "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 4027 "bison_parser.cpp" +#line 4069 "bison_parser.cpp" break; - case 212: -#line 1037 "bison_parser.y" + case 218: +#line 1061 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4038 "bison_parser.cpp" +#line 4080 "bison_parser.cpp" break; - case 213: -#line 1046 "bison_parser.y" + case 219: +#line 1070 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4044 "bison_parser.cpp" +#line 4086 "bison_parser.cpp" break; - case 214: -#line 1047 "bison_parser.y" + case 220: +#line 1071 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4050 "bison_parser.cpp" +#line 4092 "bison_parser.cpp" break; - case 215: -#line 1052 "bison_parser.y" + case 221: +#line 1076 "bison_parser.y" { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -4058,103 +4100,103 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4062 "bison_parser.cpp" +#line 4104 "bison_parser.cpp" break; - case 216: -#line 1063 "bison_parser.y" + case 222: +#line 1087 "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 4072 "bison_parser.cpp" - break; - - case 217: -#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 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 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 222: -#line 1085 "bison_parser.y" - { (yyval.alias_t) = nullptr; } -#line 4096 "bison_parser.cpp" - break; - - case 223: -#line 1090 "bison_parser.y" - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4102 "bison_parser.cpp" - break; - - case 224: -#line 1091 "bison_parser.y" - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4108 "bison_parser.cpp" - break; - - 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; } + case 223: +#line 1096 "bison_parser.y" + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} #line 4120 "bison_parser.cpp" break; - case 229: -#line 1111 "bison_parser.y" - { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } + case 224: +#line 1097 "bison_parser.y" + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } #line 4126 "bison_parser.cpp" break; + case 226: +#line 1103 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 4132 "bison_parser.cpp" + break; + + case 228: +#line 1109 "bison_parser.y" + { (yyval.alias_t) = nullptr; } +#line 4138 "bison_parser.cpp" + break; + + case 229: +#line 1114 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4144 "bison_parser.cpp" + break; + case 230: #line 1115 "bison_parser.y" + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 4150 "bison_parser.cpp" + break; + + case 232: +#line 1121 "bison_parser.y" + { (yyval.alias_t) = nullptr; } +#line 4156 "bison_parser.cpp" + break; + + case 234: +#line 1131 "bison_parser.y" + { (yyval.with_description_vec) = nullptr; } +#line 4162 "bison_parser.cpp" + break; + + case 235: +#line 1135 "bison_parser.y" + { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } +#line 4168 "bison_parser.cpp" + break; + + case 236: +#line 1139 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4135 "bison_parser.cpp" +#line 4177 "bison_parser.cpp" break; - case 231: -#line 1119 "bison_parser.y" + case 237: +#line 1143 "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 4144 "bison_parser.cpp" +#line 4186 "bison_parser.cpp" break; - case 232: -#line 1126 "bison_parser.y" + case 238: +#line 1150 "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 4154 "bison_parser.cpp" +#line 4196 "bison_parser.cpp" break; - case 233: -#line 1140 "bison_parser.y" + case 239: +#line 1164 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4162,11 +4204,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4166 "bison_parser.cpp" +#line 4208 "bison_parser.cpp" break; - case 234: -#line 1148 "bison_parser.y" + case 240: +#line 1172 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4175,11 +4217,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 4179 "bison_parser.cpp" +#line 4221 "bison_parser.cpp" break; - case 235: -#line 1158 "bison_parser.y" + case 241: +#line 1182 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -4195,83 +4237,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 4199 "bison_parser.cpp" - break; - - case 236: -#line 1176 "bison_parser.y" - { (yyval.uval) = kJoinInner; } -#line 4205 "bison_parser.cpp" - break; - - case 237: -#line 1177 "bison_parser.y" - { (yyval.uval) = kJoinLeft; } -#line 4211 "bison_parser.cpp" - break; - - case 238: -#line 1178 "bison_parser.y" - { (yyval.uval) = kJoinLeft; } -#line 4217 "bison_parser.cpp" - break; - - case 239: -#line 1179 "bison_parser.y" - { (yyval.uval) = kJoinRight; } -#line 4223 "bison_parser.cpp" - break; - - case 240: -#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; } + case 242: +#line 1200 "bison_parser.y" + { (yyval.uval) = kJoinInner; } #line 4247 "bison_parser.cpp" break; - case 244: -#line 1184 "bison_parser.y" - { (yyval.uval) = kJoinCross; } + case 243: +#line 1201 "bison_parser.y" + { (yyval.uval) = kJoinLeft; } #line 4253 "bison_parser.cpp" break; - case 245: -#line 1185 "bison_parser.y" - { (yyval.uval) = kJoinInner; } + case 244: +#line 1202 "bison_parser.y" + { (yyval.uval) = kJoinLeft; } #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)); } + case 245: +#line 1203 "bison_parser.y" + { (yyval.uval) = kJoinRight; } #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); } + case 246: +#line 1204 "bison_parser.y" + { (yyval.uval) = kJoinRight; } #line 4271 "bison_parser.cpp" break; + case 247: +#line 1205 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4277 "bison_parser.cpp" + break; -#line 4275 "bison_parser.cpp" + case 248: +#line 1206 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4283 "bison_parser.cpp" + break; + + case 249: +#line 1207 "bison_parser.y" + { (yyval.uval) = kJoinFull; } +#line 4289 "bison_parser.cpp" + break; + + case 250: +#line 1208 "bison_parser.y" + { (yyval.uval) = kJoinCross; } +#line 4295 "bison_parser.cpp" + break; + + case 251: +#line 1209 "bison_parser.y" + { (yyval.uval) = kJoinInner; } +#line 4301 "bison_parser.cpp" + break; + + case 255: +#line 1229 "bison_parser.y" + { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } +#line 4307 "bison_parser.cpp" + break; + + case 256: +#line 1230 "bison_parser.y" + { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } +#line 4313 "bison_parser.cpp" + break; + + +#line 4317 "bison_parser.cpp" default: break; } @@ -4509,7 +4551,7 @@ yyreturn: #endif return yyresult; } -#line 1209 "bison_parser.y" +#line 1233 "bison_parser.y" /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 248feda..d13c4cb 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -218,14 +218,18 @@ extern int hsql_debug; SQL_YEAR = 390, SQL_TRUE = 391, SQL_FALSE = 392, - SQL_EQUALS = 393, - SQL_NOTEQUALS = 394, - SQL_LESS = 395, - SQL_GREATER = 396, - SQL_LESSEQ = 397, - SQL_GREATEREQ = 398, - SQL_NOTNULL = 399, - SQL_UMINUS = 400 + SQL_TRANSACTION = 393, + SQL_BEGIN = 394, + SQL_COMMIT = 395, + SQL_ROLLBACK = 396, + SQL_EQUALS = 397, + SQL_NOTEQUALS = 398, + SQL_LESS = 399, + SQL_GREATER = 400, + SQL_LESSEQ = 401, + SQL_GREATEREQ = 402, + SQL_NOTNULL = 403, + SQL_UMINUS = 404 }; #endif @@ -253,6 +257,7 @@ union HSQL_STYPE hsql::PrepareStatement* prep_stmt; hsql::ExecuteStatement* exec_stmt; hsql::ShowStatement* show_stmt; + hsql::TransactionStatement* transaction_stmt; hsql::TableName table_name; hsql::TableRef* table; @@ -279,7 +284,7 @@ union HSQL_STYPE std::vector* order_vec; std::vector* with_description_vec; -#line 283 "bison_parser.h" +#line 288 "bison_parser.h" }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index 967ed10..ed2a667 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -111,6 +111,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha hsql::PrepareStatement* prep_stmt; hsql::ExecuteStatement* exec_stmt; hsql::ShowStatement* show_stmt; + hsql::TransactionStatement* transaction_stmt; hsql::TableName table_name; hsql::TableRef* table; @@ -180,6 +181,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %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 +%token TRANSACTION BEGIN COMMIT ROLLBACK /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -187,6 +189,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type statement_list %type statement preparable_statement %type execute_statement +%type transaction_statement %type prepare_statement %type select_statement select_with_paren select_no_paren select_clause select_paren_or_clause %type import_statement @@ -326,6 +329,7 @@ preparable_statement: | update_statement { $$ = $1; } | drop_statement { $$ = $1; } | execute_statement { $$ = $1; } + | transaction_statement { $$ = $1; } ; @@ -356,6 +360,26 @@ hint: } ; +/****************************** + * Transaction Statement + ******************************/ + + transaction_statement: + BEGIN opt_transaction_keyword { + $$ = new TransactionStatement(kBeginTransaction); + } + | ROLLBACK opt_transaction_keyword { + $$ = new TransactionStatement(kRollbackTransaction); + } + | COMMIT opt_transaction_keyword { + $$ = new TransactionStatement(kCommitTransaction); + } + ; + +opt_transaction_keyword: + TRANSACTION + | /* empty */ + ; /****************************** * Prepared Statement diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 468ff8c..7256eca 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 152 -#define YY_END_OF_BUFFER 153 +#define YY_NUM_RULES 156 +#define YY_END_OF_BUFFER 157 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,28 +582,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1026] = +static const flex_int16_t yy_accept[1072] = { 0, - 0, 0, 149, 149, 2, 2, 153, 151, 4, 4, - 151, 151, 141, 147, 141, 141, 144, 141, 141, 141, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 141, 149, 150, 2, 2, 3, + 0, 0, 153, 153, 2, 2, 157, 155, 4, 4, + 155, 155, 145, 151, 145, 145, 148, 145, 145, 145, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 145, 153, 154, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 136, 0, 1, 144, - 143, 142, 138, 137, 135, 139, 146, 146, 146, 146, + 2, 2, 2, 2, 2, 4, 140, 0, 1, 148, + 147, 146, 142, 141, 139, 143, 150, 150, 150, 150, - 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, - 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, + 150, 150, 118, 150, 119, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 120, + 150, 150, 121, 122, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 123, 124, 125, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 126, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 144, 153, 152, 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, @@ -612,20 +612,20 @@ static const flex_int16_t yy_accept[1026] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, + 149, 146, 106, 150, 107, 150, 150, 108, 150, 109, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 130, 150, 150, 150, 150, 150, 150, + + 150, 150, 150, 110, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 111, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 112, 150, 150, + 113, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 114, 150, 150, 115, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 116, 150, + 150, 150, 150, 150, 150, 150, 150, 117, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 2, 2, 2, 2, 2, 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,19 +636,19 @@ static const flex_int16_t yy_accept[1026] = 2, 2, 2, 2, 2, 2, 2, 2, 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, 77, 146, - 78, 79, 146, 146, 80, 146, 146, 81, 146, 146, - - 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, 150, 150, 150, 150, 150, 150, 150, 77, + + 150, 78, 79, 150, 150, 150, 80, 150, 150, 81, + 150, 150, 150, 150, 82, 150, 150, 150, 83, 84, + 150, 150, 150, 150, 150, 150, 150, 85, 150, 150, + 86, 87, 150, 150, 88, 150, 89, 129, 150, 150, + 150, 150, 150, 150, 90, 150, 91, 92, 93, 150, + 95, 150, 96, 150, 150, 150, 150, 97, 150, 150, + 150, 150, 150, 98, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 99, 150, 150, 150, 150, 100, 101, + 102, 150, 133, 150, 150, 150, 150, 150, 150, 150, + 150, 103, 150, 104, 150, 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, @@ -658,45 +658,50 @@ static const flex_int16_t yy_accept[1026] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 57, 58, 146, 59, 146, 146, - 146, 146, 146, 146, 60, 146, 146, 146, 61, 146, + 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, 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, 57, 58, 150, 59, 150, 136, 150, 150, + 150, 150, 150, 150, 60, 150, 150, 150, 61, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 134, + 62, 150, 150, 63, 150, 94, 150, 64, 65, 150, + 150, 150, 150, 66, 67, 68, 69, 150, 131, 150, + 150, 150, 70, 71, 150, 150, 150, 150, 150, 72, + 150, 150, 150, 150, 150, 150, 73, 150, 150, 150, + 150, 74, 150, 150, 150, 75, 150, 150, 150, 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, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 150, 31, + 150, 150, 32, 138, 150, 33, 150, 150, 34, 150, + 35, 150, 36, 37, 38, 150, 39, 150, 150, 41, + 42, 43, 44, 45, 150, 150, 46, 128, 150, 150, + 47, 150, 150, 150, 48, 150, 150, 49, 127, 50, + + 51, 150, 52, 150, 150, 150, 150, 53, 54, 55, + 56, 150, 150, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 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, 150, 20, 150, 150, 21, 22, 40, + 23, 150, 24, 150, 150, 25, 26, 150, 150, 27, + 28, 150, 150, 150, 150, 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, 2, 2, 2, 2, 150, 10, 11, 150, + 12, 150, 13, 137, 150, 150, 150, 14, 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, 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, - 146, 7, 146, 8, 9, 2, 2, 2, 2, 2, - 5, 6, 2, 2, 0 + 150, 7, 150, 8, 9, 150, 2, 2, 2, 2, + 2, 2, 5, 6, 150, 2, 2, 2, 135, 2, + 0 } ; static const YY_CHAR yy_ec[256] = @@ -742,146 +747,150 @@ static const YY_CHAR yy_meta[68] = 5, 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1033] = +static const flex_int16_t yy_base[1079] = { 0, - 0, 0, 373, 368, 67, 0, 374, 4060, 133, 135, - 361, 0, 4060, 4060, 131, 345, 133, 132, 312, 300, + 0, 0, 422, 414, 67, 0, 410, 4278, 133, 135, + 368, 0, 4278, 4278, 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, + 257, 194, 231, 144, 243, 0, 297, 0, 259, 272, + 276, 276, 0, 0, 161, 259, 293, 294, 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, + 499, 524, 553, 366, 164, 312, 4278, 221, 4278, 308, + 212, 209, 4278, 4278, 4278, 4278, 0, 147, 267, 296, - 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, + 317, 302, 322, 450, 0, 318, 338, 552, 391, 439, + 596, 406, 341, 386, 384, 403, 457, 641, 451, 454, + 454, 453, 464, 487, 493, 494, 492, 498, 495, 0, + 510, 505, 691, 509, 544, 532, 561, 560, 608, 556, + 563, 569, 583, 592, 601, 617, 614, 0, 621, 611, + 615, 636, 665, 637, 655, 653, 659, 700, 676, 680, + 703, 707, 700, 712, 706, 707, 732, 749, 725, 736, + 745, 759, 757, 745, 765, 4278, 0, 4278, 0, 360, + 0, 212, 0, 364, 193, 190, 0, 0, 0, 0, + 762, 793, 790, 824, 847, 794, 856, 891, 806, 895, - 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, + 905, 953, 930, 939, 1005, 955, 956, 984, 896, 1009, + 1017, 1067, 1007, 1023, 1048, 1049, 1053, 1059, 1081, 1097, + 1099, 1102, 1115, 993, 1121, 1112, 1170, 1127, 1133, 1083, + 1155, 1181, 1195, 1210, 1224, 1225, 1221, 1238, 1239, 1247, + 1172, 1151, 1255, 1249, 1277, 1283, 1288, 1298, 1293, 1309, + 1311, 1344, 1347, 1333, 1352, 1365, 1368, 1350, 1382, 1393, + 1405, 1419, 1407, 1418, 1444, 1442, 1416, 1441, 1474, 0, + 4278, 145, 0, 768, 0, 769, 766, 0, 812, 0, + 838, 853, 841, 853, 965, 848, 869, 913, 932, 938, + 974, 957, 1018, 0, 1017, 1051, 1161, 1063, 1077, 1152, - 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, + 1189, 1194, 1229, 0, 1239, 1278, 1301, 1286, 1294, 1341, + 1369, 1408, 1462, 1451, 1452, 1465, 1476, 1459, 1473, 1473, + 1464, 1467, 1475, 1480, 1492, 1493, 1495, 1505, 1480, 1489, + 0, 1494, 1510, 1507, 1513, 1517, 1512, 1514, 1502, 1509, + 1510, 0, 1520, 1515, 1515, 1530, 1531, 1537, 1525, 1524, + 1536, 1550, 1532, 1545, 1542, 1550, 1542, 1559, 0, 1545, + 1549, 1550, 1559, 1556, 1553, 1560, 1570, 0, 1563, 1578, + 1570, 1571, 1587, 1575, 1569, 1590, 1571, 1583, 1591, 1598, + 1589, 0, 140, 1603, 1606, 1617, 1618, 1632, 1620, 1655, + 1621, 1636, 1654, 1642, 1670, 1686, 1680, 1672, 1708, 1676, - 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, + 1694, 1709, 1710, 1722, 1725, 1739, 1738, 1747, 1750, 1744, + 1763, 1779, 1781, 1760, 1768, 1800, 1782, 1813, 1798, 1814, + 1804, 1816, 1822, 1850, 1854, 1856, 1852, 1858, 1868, 1887, + 1892, 1893, 1909, 1898, 1906, 1910, 1921, 1924, 1932, 1938, + 1946, 1947, 1960, 1950, 1972, 1963, 1988, 1996, 2004, 2001, + 2012, 2014, 2009, 2038, 2040, 2049, 2046, 2050, 2068, 2062, + 2081, 2086, 2103, 2102, 2104, 2105, 2100, 2135, 2116, 2137, + 2138, 2146, 2154, 2160, 2148, 2177, 2189, 2179, 2190, 2191, + 2203, 2221, 2222, 2244, 2234, 2235, 2265, 2256, 2257, 2266, + 2294, 2295, 1609, 1621, 1651, 1706, 1840, 1858, 1875, 0, - 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, + 1904, 0, 0, 1956, 1974, 1973, 0, 1980, 2006, 0, + 2045, 2067, 2069, 2118, 2165, 2204, 2216, 2239, 0, 0, + 2242, 2278, 2280, 2283, 2304, 2309, 2307, 0, 2294, 2314, + 0, 0, 2315, 2306, 0, 2309, 0, 0, 2319, 2307, + 2307, 2315, 2316, 2337, 0, 2323, 0, 0, 0, 2316, + 0, 2326, 0, 2340, 2334, 2340, 2338, 0, 2354, 2354, + 2346, 2348, 2354, 0, 2367, 2368, 2357, 2355, 2354, 2374, + 2364, 2364, 2376, 0, 2380, 2378, 2383, 2374, 0, 0, + 2371, 2373, 0, 2395, 2385, 2381, 2406, 2388, 2402, 2405, + 2403, 0, 2392, 0, 2413, 0, 0, 2423, 2425, 2417, - 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, + 2419, 2428, 2442, 2427, 2453, 2461, 2456, 2459, 2477, 2467, + 2482, 2490, 2496, 2493, 2499, 2521, 2515, 2530, 2536, 2547, + 2551, 2561, 2566, 2564, 2569, 2579, 2601, 2602, 2604, 2607, + 2636, 2615, 2620, 2623, 2637, 2641, 2652, 2673, 2671, 2658, + 2677, 2674, 2675, 2687, 2690, 2692, 2715, 2716, 2731, 2725, + 2741, 2726, 2727, 2749, 2750, 2759, 2780, 2764, 2781, 2789, + 2790, 2785, 2795, 2821, 2813, 2834, 2838, 2835, 2829, 2857, + 2863, 2844, 2875, 2872, 2869, 2897, 2898, 2903, 2900, 2906, + 2909, 2911, 2939, 2921, 2935, 2937, 2960, 2943, 2969, 2952, + 2965, 2975, 2991, 3003, 2973, 3014, 2977, 3009, 3015, 3019, - 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, + 3027, 3028, 0, 0, 2401, 0, 2491, 0, 2525, 2528, + 2544, 2555, 2572, 2653, 0, 2671, 2733, 2799, 0, 2814, + 2808, 2858, 2983, 3013, 3011, 3016, 3023, 3039, 3047, 0, + 0, 3034, 3044, 0, 3055, 0, 3044, 0, 0, 3045, + 3063, 3051, 3060, 0, 0, 0, 0, 3068, 0, 3073, + 3068, 3058, 0, 0, 3077, 3066, 3067, 3081, 3078, 0, + 3087, 3089, 3089, 3074, 3092, 3097, 3083, 3086, 3086, 3106, + 3107, 0, 3105, 3112, 3113, 0, 3100, 3121, 3123, 0, + 3122, 3123, 3127, 3125, 3131, 3133, 3135, 3137, 3156, 3166, + 3167, 3168, 3171, 3179, 3190, 3185, 3200, 3219, 3221, 3202, - 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, + 3225, 3231, 3240, 3242, 3256, 3261, 3273, 3259, 3274, 3275, + 3304, 3285, 3307, 3296, 3299, 3310, 3313, 3329, 3315, 3325, + 3348, 3347, 3350, 3353, 3358, 3359, 3361, 3369, 3384, 3383, + 3393, 3399, 3401, 3402, 3423, 3407, 3433, 3412, 3445, 3451, + 3456, 3466, 3485, 3477, 3475, 3494, 3510, 3519, 3527, 3479, + 3509, 3518, 3528, 3531, 3549, 3564, 3572, 3553, 3134, 0, + 3192, 3207, 3239, 0, 3257, 0, 3365, 3349, 0, 3420, + 0, 3437, 0, 0, 0, 3461, 0, 3460, 3520, 0, + 0, 0, 0, 0, 3527, 3543, 0, 0, 3552, 3565, + 0, 3556, 3577, 3559, 0, 3583, 3584, 3569, 0, 0, - 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, + 0, 3578, 0, 3593, 3597, 3596, 3582, 0, 0, 0, + 0, 3588, 3595, 3603, 3605, 3613, 3607, 3617, 3615, 3636, + 3618, 3641, 3657, 3626, 3651, 3647, 3681, 3669, 3680, 3682, + 3685, 3690, 3711, 3703, 3695, 3713, 3714, 3719, 3724, 3735, + 3736, 3749, 3752, 3757, 3774, 3753, 3778, 3765, 3768, 3786, + 3789, 3810, 3818, 3802, 3807, 3819, 3824, 3823, 3852, 3860, + 3842, 3861, 3864, 3873, 3874, 3877, 3882, 3878, 0, 0, + 0, 0, 0, 3663, 0, 3754, 3775, 0, 0, 0, + 0, 3828, 0, 3815, 3841, 0, 0, 3848, 3880, 0, + 0, 3879, 3888, 3891, 3910, 0, 0, 3914, 3915, 3916, - 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 + 3918, 3926, 3931, 3928, 3930, 3932, 3940, 3944, 3949, 3966, + 3970, 3972, 3981, 3980, 3982, 3983, 4005, 4006, 3984, 4014, + 4022, 4016, 4040, 4018, 4037, 4046, 3973, 0, 0, 4008, + 0, 4031, 0, 0, 4028, 4043, 4052, 0, 4059, 4058, + 4068, 4076, 4070, 4089, 4072, 4080, 4094, 4111, 4108, 4110, + 4077, 0, 4084, 0, 0, 4103, 4124, 4126, 4134, 4132, + 4142, 4150, 0, 0, 4111, 4145, 4156, 4182, 0, 4166, + 4278, 4247, 4252, 135, 4257, 4262, 4267, 4272 } ; -static const flex_int16_t yy_def[1033] = +static const flex_int16_t yy_def[1079] = { 0, - 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, + 1071, 1, 1072, 1072, 1071, 5, 1071, 1071, 1071, 1071, + 1071, 1073, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1071, 1075, 1071, 1076, 1076, 1071, + 1076, 1077, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, + 1078, 1078, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1030, 1025, 1025, 1027, 1025, 1025, - 1025, 1025, 1025, 1025, 1025, 1025, 1028, 1028, 1028, 1028, + 62, 62, 62, 62, 1076, 1071, 1071, 1073, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1074, 1074, 1074, 1074, - 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, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1071, 1075, 1071, 1076, 1076, + 1076, 1077, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -890,20 +899,20 @@ static const flex_int16_t yy_def[1033] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 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, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 1076, + 1071, 1071, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, - 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, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1076, 1076, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -914,19 +923,19 @@ static const flex_int16_t yy_def[1033] = 62, 62, 62, 62, 62, 62, 62, 62, 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, 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, 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, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -936,49 +945,53 @@ static const flex_int16_t yy_def[1033] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 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, 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, - 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, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 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, 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, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 62, 62, 62, 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, 62, 62, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - - 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 + 1074, 1074, 1074, 1074, 1074, 1074, 62, 62, 62, 62, + 62, 62, 1074, 1074, 1074, 62, 62, 62, 1074, 62, + 0, 1071, 1071, 1071, 1071, 1071, 1071, 1071 } ; -static const flex_int16_t yy_nxt[4128] = +static const flex_int16_t yy_nxt[4346] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, @@ -995,448 +1008,472 @@ static const flex_int16_t yy_nxt[4128] = 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, 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, + 90, 92, 90, 93, 94, 98, 104, 99, 110, 383, + 106, 135, 111, 100, 272, 101, 112, 107, 136, 102, + 103, 175, 113, 273, 108, 114, 105, 109, 183, 115, + 184, 116, 98, 104, 99, 110, 117, 106, 135, 111, + 100, 118, 101, 112, 107, 136, 102, 103, 175, 113, + 273, 108, 114, 105, 109, 125, 115, 127, 116, 383, - 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, + 137, 126, 185, 117, 138, 128, 130, 171, 118, 119, + 139, 129, 131, 132, 133, 172, 382, 120, 272, 134, + 121, 91, 125, 122, 127, 271, 123, 137, 126, 124, + 270, 138, 128, 130, 171, 190, 119, 139, 129, 131, + 132, 133, 172, 143, 120, 140, 134, 121, 151, 141, + 122, 173, 174, 123, 147, 142, 124, 144, 189, 152, + 180, 86, 148, 145, 146, 153, 149, 154, 185, 150, + 143, 155, 140, 86, 86, 151, 141, 156, 173, 174, + 179, 147, 142, 168, 144, 169, 152, 181, 170, 148, + 145, 146, 153, 149, 154, 157, 150, 158, 155, 274, - 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, + 159, 186, 184, 178, 156, 187, 188, 160, 161, 176, + 168, 96, 169, 86, 86, 170, 92, 90, 191, 191, + 275, 230, 157, 95, 158, 219, 274, 159, 276, 229, + 277, 220, 279, 278, 160, 161, 162, 280, 191, 191, + 163, 191, 284, 164, 165, 191, 191, 275, 230, 285, + 166, 286, 219, 167, 91, 276, 229, 277, 220, 279, + 278, 180, 86, 162, 280, 191, 191, 163, 191, 284, + 164, 165, 186, 184, 301, 191, 285, 166, 286, 87, + 167, 179, 179, 269, 179, 179, 179, 179, 179, 179, + 221, 179, 179, 179, 191, 191, 231, 192, 222, 193, - 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, + 232, 301, 191, 191, 223, 194, 233, 195, 291, 1071, + 269, 196, 197, 302, 191, 303, 191, 221, 292, 304, + 47, 191, 191, 231, 192, 222, 193, 232, 47, 1071, + 191, 223, 194, 233, 195, 291, 299, 300, 196, 197, + 302, 191, 303, 191, 1071, 292, 304, 179, 179, 179, + 1071, 179, 179, 179, 179, 179, 179, 234, 179, 179, + 179, 235, 245, 299, 300, 198, 191, 236, 281, 282, + 248, 293, 305, 246, 249, 311, 294, 191, 312, 247, + 250, 313, 283, 314, 234, 199, 191, 1071, 235, 245, + 191, 315, 198, 191, 236, 281, 282, 248, 293, 305, - 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, + 246, 249, 311, 294, 191, 312, 247, 250, 313, 283, + 314, 316, 199, 191, 179, 200, 191, 191, 315, 191, + 317, 318, 201, 319, 321, 262, 320, 263, 322, 202, + 264, 323, 203, 324, 1071, 329, 191, 265, 316, 191, + 1071, 191, 200, 191, 1071, 266, 191, 317, 318, 201, + 319, 321, 262, 320, 263, 322, 202, 264, 323, 203, + 324, 191, 329, 191, 265, 330, 191, 204, 191, 331, + 191, 205, 266, 267, 268, 206, 287, 288, 289, 332, + 290, 207, 1071, 333, 208, 334, 338, 1071, 191, 339, + 191, 191, 330, 1071, 204, 340, 331, 191, 205, 1071, - 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, + 267, 268, 206, 287, 288, 289, 332, 290, 207, 295, + 333, 208, 334, 338, 296, 341, 339, 191, 191, 191, + 297, 335, 340, 336, 342, 343, 209, 298, 210, 1071, + 344, 1071, 345, 211, 337, 1071, 295, 346, 212, 191, + 1071, 296, 341, 347, 1071, 348, 191, 297, 335, 349, + 336, 342, 343, 209, 298, 210, 306, 344, 307, 345, + 211, 337, 308, 352, 346, 212, 191, 213, 353, 309, + 347, 191, 348, 310, 354, 214, 349, 355, 215, 356, + 1071, 216, 350, 306, 217, 307, 351, 218, 1071, 308, + 352, 191, 1071, 1071, 213, 353, 309, 1071, 191, 1071, - 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, + 310, 354, 214, 360, 355, 215, 356, 325, 216, 350, + 361, 217, 1071, 351, 218, 357, 362, 326, 191, 191, + 224, 363, 327, 328, 358, 364, 225, 226, 227, 366, + 360, 367, 359, 228, 325, 368, 365, 361, 1071, 191, + 1071, 373, 357, 362, 326, 369, 191, 224, 363, 327, + 328, 358, 364, 225, 226, 227, 366, 374, 367, 359, + 228, 1071, 368, 365, 1071, 370, 191, 237, 373, 375, + 371, 191, 369, 372, 379, 376, 377, 380, 381, 191, + 1071, 238, 1071, 1071, 374, 493, 494, 239, 240, 378, + 495, 191, 370, 1071, 237, 1071, 375, 371, 191, 191, - 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, + 372, 379, 376, 377, 380, 381, 191, 191, 238, 384, + 191, 191, 493, 494, 239, 240, 378, 495, 191, 191, + 241, 1071, 385, 191, 390, 496, 191, 191, 242, 1071, + 191, 191, 243, 1071, 191, 244, 384, 191, 191, 191, + 1071, 191, 1071, 191, 1071, 1071, 191, 241, 386, 385, + 191, 390, 496, 1071, 191, 242, 387, 191, 191, 243, + 388, 191, 244, 389, 191, 497, 191, 251, 191, 252, + 191, 391, 253, 191, 498, 386, 499, 500, 503, 254, + 255, 1071, 1071, 387, 191, 1071, 1071, 388, 191, 191, + 389, 191, 497, 191, 251, 1071, 252, 1071, 391, 253, - 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, + 191, 498, 504, 499, 500, 503, 254, 255, 191, 392, + 393, 191, 191, 191, 1071, 1071, 191, 256, 397, 395, + 191, 257, 191, 394, 258, 259, 396, 414, 191, 504, + 1071, 260, 191, 191, 261, 191, 392, 393, 505, 191, + 191, 191, 191, 1071, 256, 397, 395, 402, 257, 191, + 394, 258, 259, 396, 414, 191, 191, 403, 260, 191, + 191, 261, 1071, 1071, 506, 505, 1071, 191, 191, 191, + 191, 404, 191, 191, 402, 507, 405, 398, 399, 400, + 501, 401, 502, 191, 403, 410, 411, 508, 509, 412, + 191, 506, 191, 191, 191, 1071, 1071, 191, 404, 191, - 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, + 191, 191, 507, 405, 398, 399, 400, 501, 401, 502, + 191, 413, 410, 411, 508, 509, 412, 191, 406, 191, + 191, 191, 191, 407, 191, 415, 191, 1071, 191, 408, + 191, 422, 416, 1071, 191, 510, 409, 191, 413, 1071, + 191, 511, 191, 1071, 191, 406, 191, 423, 191, 191, + 407, 191, 415, 191, 191, 1071, 408, 191, 422, 416, + 191, 191, 510, 409, 512, 191, 191, 191, 511, 191, + 191, 191, 1071, 191, 423, 424, 191, 1071, 515, 425, + 426, 191, 417, 427, 418, 191, 191, 191, 419, 1071, + 191, 512, 191, 191, 516, 420, 191, 191, 191, 421, - 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, + 191, 1071, 424, 191, 191, 515, 425, 426, 428, 417, + 427, 418, 191, 191, 191, 419, 191, 191, 191, 191, + 442, 516, 420, 191, 429, 191, 421, 191, 432, 191, + 430, 191, 191, 431, 191, 428, 191, 1071, 191, 191, + 435, 191, 434, 191, 191, 191, 191, 442, 433, 191, + 191, 429, 191, 440, 441, 432, 191, 430, 191, 191, + 431, 191, 1071, 191, 191, 191, 191, 435, 191, 434, + 191, 191, 191, 443, 1071, 433, 191, 191, 513, 191, + 440, 441, 1071, 1071, 517, 191, 436, 191, 191, 191, + 456, 191, 191, 514, 1071, 191, 437, 191, 191, 191, - 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, + 443, 438, 439, 518, 444, 513, 445, 191, 446, 191, + 447, 517, 191, 436, 191, 191, 191, 456, 191, 191, + 514, 448, 519, 437, 1071, 191, 1071, 191, 438, 439, + 518, 444, 191, 445, 191, 446, 191, 447, 191, 191, + 449, 191, 191, 1071, 1071, 191, 520, 191, 448, 519, + 450, 451, 521, 452, 191, 191, 191, 1071, 191, 191, + 455, 191, 191, 454, 191, 191, 191, 449, 191, 191, + 453, 457, 191, 520, 191, 191, 191, 450, 451, 521, + 452, 458, 191, 191, 191, 191, 191, 455, 191, 191, + 454, 191, 191, 191, 191, 522, 460, 453, 457, 191, - 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, + 191, 1071, 191, 191, 1071, 461, 1071, 459, 458, 462, + 191, 191, 465, 191, 191, 191, 523, 524, 525, 191, + 191, 191, 522, 460, 463, 191, 191, 191, 191, 464, + 191, 467, 461, 466, 459, 191, 462, 191, 1071, 465, + 1071, 191, 191, 523, 524, 525, 191, 191, 191, 1071, + 191, 463, 191, 191, 1071, 191, 464, 191, 467, 468, + 466, 191, 191, 472, 191, 473, 1071, 477, 469, 191, + 191, 526, 1071, 191, 471, 191, 470, 191, 1071, 474, + 1071, 191, 191, 1071, 191, 191, 468, 191, 191, 191, + 472, 191, 473, 475, 477, 469, 191, 191, 526, 191, - 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, + 527, 471, 191, 470, 476, 191, 474, 478, 191, 191, + 191, 191, 191, 1071, 191, 1071, 191, 1071, 480, 191, + 475, 479, 191, 484, 191, 528, 191, 527, 1071, 191, + 191, 476, 191, 490, 478, 191, 191, 191, 481, 485, + 482, 1071, 191, 483, 191, 480, 191, 1071, 479, 191, + 484, 191, 528, 191, 1071, 191, 191, 191, 191, 488, + 490, 191, 191, 191, 1071, 481, 485, 482, 486, 191, + 483, 191, 489, 491, 487, 529, 530, 531, 191, 191, + 191, 191, 191, 191, 1071, 191, 488, 492, 191, 532, + 533, 191, 534, 535, 536, 486, 537, 538, 539, 489, - 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, + 491, 487, 529, 530, 531, 191, 191, 540, 191, 541, + 542, 191, 543, 546, 492, 547, 532, 533, 191, 534, + 535, 536, 544, 537, 538, 539, 548, 549, 550, 551, + 552, 553, 545, 554, 540, 555, 541, 542, 191, 543, + 546, 556, 547, 557, 558, 559, 560, 561, 562, 544, + 563, 564, 565, 548, 549, 550, 551, 552, 553, 545, + 554, 566, 555, 567, 568, 569, 570, 571, 556, 572, + 557, 558, 559, 560, 561, 562, 573, 563, 564, 565, + 574, 575, 576, 577, 578, 579, 580, 581, 566, 582, + 567, 568, 569, 570, 571, 583, 572, 585, 587, 586, - 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, + 588, 589, 590, 573, 584, 591, 592, 574, 575, 576, + 577, 578, 579, 580, 581, 593, 582, 594, 596, 597, + 191, 595, 583, 598, 585, 587, 586, 588, 589, 590, + 1071, 584, 591, 592, 191, 599, 1071, 191, 191, 703, + 191, 1071, 593, 191, 594, 596, 597, 191, 595, 191, + 598, 704, 1071, 191, 191, 191, 600, 191, 191, 191, + 1071, 191, 599, 602, 191, 191, 703, 191, 601, 191, + 191, 191, 191, 191, 1071, 603, 191, 604, 704, 191, + 191, 191, 191, 600, 191, 191, 191, 191, 705, 191, + 602, 191, 191, 191, 605, 601, 191, 191, 191, 191, - 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, + 191, 606, 603, 607, 604, 609, 191, 191, 611, 191, + 608, 191, 1071, 191, 191, 705, 191, 191, 191, 191, + 191, 605, 613, 191, 191, 191, 191, 191, 606, 1071, + 607, 612, 609, 610, 191, 611, 191, 608, 191, 615, + 191, 614, 191, 706, 191, 191, 191, 191, 1071, 613, + 191, 617, 191, 191, 191, 191, 191, 1071, 612, 191, + 610, 621, 191, 616, 618, 620, 615, 191, 614, 191, + 706, 1071, 191, 191, 191, 191, 191, 625, 617, 619, + 191, 191, 191, 191, 191, 191, 191, 191, 621, 191, + 616, 618, 620, 623, 191, 622, 191, 191, 191, 627, - 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, + 191, 1071, 191, 191, 625, 191, 619, 191, 191, 624, + 1071, 191, 191, 626, 191, 191, 191, 191, 191, 191, + 623, 191, 622, 191, 191, 191, 627, 191, 628, 629, + 191, 191, 191, 191, 631, 191, 624, 191, 630, 633, + 626, 191, 191, 191, 191, 191, 191, 632, 191, 1071, + 191, 191, 1071, 191, 1071, 628, 629, 191, 191, 191, + 191, 631, 191, 634, 191, 630, 633, 191, 191, 191, + 707, 191, 638, 191, 632, 191, 637, 191, 191, 635, + 191, 636, 1071, 1071, 708, 191, 191, 191, 1071, 191, + 634, 191, 709, 191, 191, 191, 191, 707, 191, 638, - 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, + 191, 639, 191, 637, 191, 191, 635, 640, 636, 191, + 191, 708, 191, 641, 191, 191, 191, 710, 191, 709, + 191, 644, 191, 191, 191, 642, 191, 646, 639, 191, + 191, 191, 191, 645, 640, 191, 191, 191, 647, 643, + 641, 648, 191, 191, 710, 1071, 191, 191, 644, 649, + 191, 191, 642, 191, 646, 191, 191, 191, 191, 650, + 645, 191, 191, 191, 191, 647, 643, 654, 648, 191, + 191, 651, 652, 191, 191, 191, 649, 191, 1071, 656, + 191, 711, 191, 191, 191, 191, 650, 191, 191, 191, + 191, 191, 653, 655, 654, 712, 191, 191, 651, 652, - 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, + 191, 657, 191, 713, 191, 191, 656, 191, 711, 191, + 191, 191, 714, 191, 191, 658, 191, 1071, 191, 653, + 655, 191, 712, 659, 191, 191, 191, 191, 657, 191, + 713, 191, 191, 191, 660, 1071, 191, 715, 191, 714, + 191, 191, 658, 1071, 661, 191, 191, 662, 191, 191, + 659, 191, 191, 191, 1071, 191, 191, 191, 191, 1071, + 191, 660, 663, 666, 715, 191, 191, 667, 191, 716, + 664, 661, 1071, 191, 662, 191, 191, 191, 191, 191, + 665, 668, 191, 191, 191, 191, 191, 191, 669, 663, + 666, 1071, 1071, 191, 667, 1071, 716, 664, 191, 191, - 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, + 717, 718, 191, 191, 191, 191, 191, 665, 668, 670, + 191, 671, 191, 191, 191, 669, 672, 676, 191, 191, + 191, 191, 191, 191, 674, 191, 191, 717, 718, 675, + 191, 719, 191, 678, 673, 1071, 670, 191, 671, 191, + 191, 191, 191, 672, 676, 191, 191, 191, 191, 191, + 191, 674, 191, 191, 191, 191, 675, 1071, 719, 1071, + 678, 673, 677, 191, 191, 191, 191, 191, 191, 191, + 1071, 191, 191, 679, 191, 191, 683, 191, 680, 191, + 191, 191, 191, 191, 682, 191, 681, 1071, 1071, 677, + 191, 191, 191, 1071, 191, 720, 686, 191, 191, 191, - 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, + 679, 191, 191, 683, 191, 680, 191, 191, 191, 684, + 191, 682, 191, 681, 191, 685, 191, 687, 191, 721, + 688, 191, 720, 686, 191, 1071, 191, 191, 191, 689, + 1071, 1071, 1071, 191, 191, 191, 684, 722, 191, 191, + 191, 191, 685, 191, 687, 1071, 721, 688, 690, 692, + 691, 191, 191, 191, 191, 191, 689, 693, 191, 191, + 694, 191, 1071, 723, 722, 191, 191, 191, 695, 1071, + 724, 191, 191, 191, 191, 690, 692, 691, 191, 191, + 696, 191, 191, 191, 693, 191, 191, 694, 191, 698, + 723, 697, 699, 191, 191, 695, 700, 724, 191, 191, - 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, + 191, 191, 191, 191, 1071, 1071, 725, 696, 191, 191, + 191, 191, 191, 726, 701, 727, 698, 728, 697, 699, + 191, 191, 729, 700, 730, 702, 731, 732, 733, 191, + 191, 191, 191, 725, 734, 735, 736, 737, 191, 191, + 726, 701, 727, 738, 728, 739, 740, 743, 744, 729, + 745, 730, 702, 731, 732, 733, 741, 746, 191, 191, + 749, 734, 735, 736, 737, 747, 748, 742, 750, 751, + 738, 752, 739, 740, 743, 744, 753, 745, 754, 755, + 756, 757, 758, 741, 746, 759, 760, 749, 761, 762, + 763, 764, 747, 748, 742, 750, 751, 765, 752, 766, - 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, + 767, 768, 769, 753, 770, 754, 755, 756, 757, 758, + 771, 772, 759, 760, 773, 761, 762, 763, 764, 774, + 775, 776, 777, 778, 765, 779, 766, 767, 768, 769, + 780, 770, 1071, 1071, 191, 1071, 191, 771, 772, 859, + 191, 773, 191, 1071, 787, 191, 774, 775, 776, 777, + 778, 1071, 779, 781, 783, 782, 784, 780, 785, 191, + 191, 191, 191, 191, 191, 191, 859, 191, 786, 191, + 191, 787, 191, 191, 788, 1071, 191, 1071, 191, 191, + 781, 783, 782, 784, 191, 785, 191, 191, 790, 191, + 191, 191, 191, 191, 191, 786, 191, 191, 191, 191, - 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, + 191, 788, 789, 191, 191, 191, 191, 191, 860, 1071, + 191, 191, 791, 191, 191, 790, 191, 191, 1071, 191, + 191, 191, 1071, 191, 793, 191, 191, 191, 792, 789, + 191, 191, 191, 191, 191, 860, 191, 191, 191, 791, + 191, 191, 861, 191, 862, 794, 191, 191, 795, 797, + 1071, 793, 191, 191, 191, 792, 1071, 191, 191, 191, + 191, 1071, 796, 191, 191, 191, 799, 191, 191, 861, + 863, 862, 794, 191, 191, 795, 797, 798, 191, 191, + 191, 191, 800, 191, 191, 191, 191, 864, 191, 796, + 801, 191, 1071, 799, 191, 191, 191, 863, 191, 865, - 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, + 191, 191, 1071, 191, 798, 191, 191, 802, 191, 800, + 191, 191, 1071, 191, 864, 191, 191, 801, 191, 191, + 806, 191, 1071, 191, 191, 191, 865, 1071, 191, 803, + 191, 1071, 808, 191, 802, 804, 805, 191, 191, 191, + 191, 191, 1071, 191, 191, 191, 191, 806, 191, 807, + 810, 191, 191, 191, 191, 809, 803, 191, 191, 808, + 191, 1071, 804, 805, 191, 191, 191, 191, 191, 191, + 866, 191, 1071, 191, 191, 191, 807, 810, 191, 191, + 191, 191, 809, 1071, 191, 191, 811, 191, 191, 191, + 191, 191, 191, 1071, 191, 191, 191, 866, 867, 812, - 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, + 191, 191, 191, 813, 814, 191, 1071, 191, 191, 191, + 191, 191, 191, 811, 191, 191, 191, 191, 191, 191, + 815, 191, 191, 1071, 191, 867, 812, 191, 816, 191, + 813, 814, 191, 191, 191, 191, 191, 191, 191, 191, + 1071, 191, 191, 191, 191, 817, 818, 815, 191, 1071, + 819, 191, 191, 191, 191, 816, 191, 868, 191, 191, + 191, 820, 191, 191, 191, 821, 191, 191, 191, 191, + 191, 191, 817, 818, 1071, 191, 191, 819, 191, 191, + 191, 191, 822, 1071, 868, 191, 191, 191, 820, 191, + 191, 191, 821, 191, 191, 191, 191, 191, 824, 1071, - 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, + 1071, 191, 191, 191, 823, 191, 191, 191, 191, 822, + 827, 1071, 191, 191, 191, 828, 869, 191, 191, 1071, + 825, 826, 191, 191, 191, 824, 191, 191, 191, 191, + 830, 823, 191, 191, 191, 870, 829, 827, 191, 191, + 871, 1071, 828, 869, 191, 191, 191, 825, 826, 191, + 191, 191, 191, 191, 191, 191, 1071, 830, 191, 191, + 833, 191, 870, 829, 831, 191, 191, 871, 832, 836, + 834, 191, 191, 191, 191, 191, 835, 191, 191, 191, + 191, 191, 191, 839, 872, 191, 191, 833, 191, 191, + 1071, 831, 191, 191, 191, 832, 836, 834, 191, 191, - 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, + 191, 191, 191, 835, 838, 837, 191, 191, 191, 191, + 839, 872, 191, 191, 191, 191, 191, 191, 842, 191, + 191, 191, 840, 843, 841, 1071, 191, 191, 845, 1071, + 844, 838, 837, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 842, 191, 191, 191, 840, + 843, 841, 191, 191, 191, 845, 191, 844, 191, 1071, + 191, 191, 191, 1071, 191, 191, 846, 191, 847, 191, + 191, 1071, 191, 191, 191, 191, 191, 191, 850, 191, + 191, 191, 191, 191, 849, 191, 191, 191, 852, 191, + 855, 848, 191, 846, 191, 847, 191, 191, 851, 191, - 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, + 873, 191, 191, 191, 191, 850, 191, 191, 191, 191, + 191, 849, 191, 191, 191, 852, 191, 855, 848, 191, + 191, 191, 854, 853, 191, 851, 191, 873, 191, 191, + 874, 191, 191, 191, 856, 191, 858, 191, 1071, 191, + 191, 191, 857, 875, 191, 191, 191, 191, 876, 854, + 853, 191, 191, 191, 877, 191, 191, 874, 191, 191, + 878, 856, 879, 858, 191, 191, 880, 191, 881, 857, + 875, 191, 191, 191, 882, 876, 883, 884, 191, 191, + 885, 877, 886, 191, 887, 888, 889, 878, 890, 879, + 891, 191, 191, 880, 892, 881, 893, 894, 895, 896, - 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, + 897, 882, 898, 883, 884, 899, 900, 885, 901, 886, + 902, 887, 888, 889, 903, 890, 904, 891, 905, 906, + 907, 892, 908, 893, 894, 895, 896, 897, 909, 898, + 910, 911, 899, 900, 912, 901, 913, 902, 1071, 191, + 191, 903, 191, 904, 191, 905, 906, 907, 915, 908, + 191, 969, 916, 917, 191, 909, 1071, 910, 911, 191, + 191, 912, 191, 913, 191, 914, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 915, 1071, 191, 969, 916, + 917, 191, 918, 191, 191, 921, 191, 191, 191, 191, + 1071, 191, 914, 191, 920, 191, 191, 191, 919, 191, - 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, + 191, 191, 924, 191, 191, 191, 922, 191, 191, 918, + 191, 191, 921, 1071, 923, 191, 191, 191, 970, 191, + 191, 920, 191, 191, 971, 919, 1071, 191, 927, 924, + 191, 191, 191, 922, 191, 191, 191, 191, 191, 191, + 925, 923, 928, 191, 191, 970, 191, 1071, 929, 191, + 1071, 971, 1071, 926, 191, 927, 191, 191, 191, 191, + 1071, 1071, 191, 191, 191, 191, 191, 925, 191, 928, + 972, 1071, 930, 191, 931, 929, 191, 191, 191, 191, + 926, 973, 933, 191, 191, 191, 191, 932, 934, 191, + 191, 191, 191, 191, 1071, 191, 191, 972, 191, 930, - 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, + 191, 931, 191, 191, 191, 191, 191, 935, 973, 933, + 191, 191, 191, 191, 932, 934, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 937, 191, 936, 191, + 191, 938, 940, 191, 935, 1071, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 1071, 191, 191, 191, 191, + 191, 191, 191, 937, 191, 936, 941, 191, 938, 940, + 191, 939, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 942, 191, 191, 191, 943, 191, 191, 191, + 974, 975, 944, 941, 191, 191, 191, 191, 939, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 942, - 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, + 191, 191, 191, 943, 945, 191, 191, 974, 975, 944, + 191, 191, 191, 191, 191, 946, 191, 191, 947, 191, + 191, 191, 191, 191, 950, 191, 1071, 191, 191, 191, + 191, 945, 948, 191, 976, 1071, 191, 191, 191, 191, + 191, 1071, 946, 191, 191, 947, 191, 191, 191, 191, + 191, 950, 977, 949, 951, 1071, 191, 191, 952, 948, + 191, 976, 191, 191, 953, 191, 191, 191, 191, 1071, + 191, 191, 954, 191, 1071, 1071, 191, 191, 978, 977, + 949, 951, 191, 191, 1071, 952, 979, 191, 191, 191, + 957, 953, 191, 191, 191, 191, 191, 191, 955, 954, - 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, + 191, 956, 191, 191, 1071, 978, 958, 1071, 1071, 191, + 191, 191, 191, 979, 191, 191, 191, 957, 1071, 191, + 191, 191, 191, 191, 959, 955, 963, 191, 956, 191, + 191, 191, 961, 958, 964, 191, 191, 1071, 191, 191, + 962, 191, 960, 191, 191, 965, 191, 191, 191, 191, + 1071, 959, 980, 963, 191, 191, 191, 981, 191, 961, + 982, 964, 191, 191, 191, 191, 191, 962, 191, 960, + 191, 191, 965, 191, 191, 191, 983, 967, 984, 980, + 966, 191, 191, 191, 981, 968, 191, 982, 985, 191, + 191, 191, 191, 191, 986, 191, 987, 191, 988, 989, - 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, + 990, 191, 991, 983, 967, 984, 992, 966, 191, 191, + 993, 994, 968, 191, 995, 985, 191, 191, 996, 997, + 998, 986, 191, 987, 1000, 988, 989, 990, 191, 991, + 191, 1071, 191, 992, 191, 191, 191, 993, 994, 999, + 191, 995, 191, 191, 191, 996, 997, 998, 1001, 191, + 191, 1000, 191, 191, 191, 191, 1003, 191, 191, 191, + 1002, 191, 191, 191, 191, 1005, 999, 191, 191, 191, + 191, 191, 1071, 191, 191, 1001, 1027, 191, 191, 191, + 191, 191, 191, 1003, 191, 191, 191, 1002, 191, 1004, + 191, 191, 1005, 1071, 191, 191, 1006, 191, 191, 191, - 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, + 191, 191, 1007, 1027, 1071, 191, 191, 191, 1071, 1071, + 1071, 191, 191, 191, 1071, 191, 1004, 191, 191, 191, + 191, 191, 191, 1006, 191, 191, 191, 191, 191, 1007, + 191, 191, 191, 191, 191, 1009, 191, 1008, 1071, 191, + 191, 191, 1071, 1071, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 1011, 191, 191, 191, 191, 191, 191, + 1071, 191, 1009, 191, 1008, 1010, 191, 191, 191, 191, + 191, 1028, 191, 191, 191, 191, 1071, 191, 191, 191, + 1011, 1012, 1015, 191, 1071, 191, 191, 1013, 191, 191, + 191, 191, 1010, 191, 191, 191, 191, 191, 1028, 191, - 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, + 191, 191, 191, 191, 1017, 1016, 191, 1029, 1012, 1015, + 1014, 191, 191, 191, 1013, 191, 191, 191, 191, 191, + 1071, 191, 191, 191, 191, 1018, 191, 191, 1071, 191, + 191, 1017, 1016, 191, 1029, 191, 191, 1014, 191, 191, + 191, 191, 191, 1030, 191, 1031, 191, 191, 1020, 1019, + 191, 191, 1018, 191, 191, 191, 191, 1023, 1032, 191, + 191, 191, 191, 191, 1071, 1021, 191, 191, 191, 191, + 1030, 191, 1031, 1022, 191, 1020, 1019, 191, 191, 191, + 1033, 191, 191, 191, 1023, 1032, 191, 191, 191, 191, + 191, 191, 1021, 1024, 191, 191, 191, 191, 191, 191, - 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, + 1022, 191, 1026, 1034, 191, 191, 191, 1033, 191, 1035, + 191, 191, 1025, 1036, 191, 191, 191, 191, 191, 191, + 1024, 191, 191, 1037, 191, 191, 191, 1038, 191, 1026, + 1034, 191, 191, 191, 1071, 191, 1035, 191, 191, 1025, + 1036, 191, 191, 191, 1039, 191, 191, 1040, 191, 191, + 1037, 191, 191, 191, 1038, 191, 1071, 191, 191, 191, + 191, 191, 191, 191, 1041, 191, 191, 191, 191, 191, + 191, 1039, 191, 1071, 1040, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 1042, 191, 191, 191, 191, + 191, 1041, 191, 191, 191, 191, 191, 1044, 191, 191, - 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, + 191, 191, 1071, 191, 191, 1051, 1071, 191, 191, 191, + 191, 1043, 1042, 191, 191, 1071, 191, 191, 191, 191, + 191, 191, 191, 191, 1044, 191, 191, 191, 191, 1046, + 191, 191, 1051, 191, 191, 1050, 191, 1045, 1043, 191, + 1052, 1048, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 1047, 191, 191, 191, 1046, 191, 191, 191, + 191, 1053, 1050, 191, 1045, 1054, 191, 1052, 1048, 191, + 191, 1055, 1049, 1056, 191, 191, 191, 191, 191, 1047, + 191, 191, 191, 191, 191, 191, 191, 191, 1053, 191, + 191, 1057, 1054, 191, 1063, 191, 191, 191, 1055, 1049, - 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 + 1056, 191, 191, 191, 191, 191, 191, 191, 1058, 191, + 191, 191, 191, 191, 191, 1064, 191, 191, 1057, 1059, + 191, 1063, 191, 191, 191, 191, 191, 191, 191, 1062, + 1065, 1060, 191, 191, 191, 1058, 191, 1069, 191, 1061, + 191, 1066, 1064, 191, 191, 191, 1059, 191, 191, 191, + 1071, 191, 191, 191, 191, 191, 1062, 1065, 1060, 191, + 1071, 191, 191, 191, 1069, 1067, 1061, 191, 1066, 191, + 191, 191, 191, 191, 191, 191, 191, 1068, 191, 191, + 1071, 1071, 191, 191, 1071, 1071, 191, 191, 191, 191, + 191, 1071, 1067, 191, 191, 1071, 191, 1071, 191, 191, + + 191, 1071, 1071, 191, 1068, 1071, 191, 1071, 1070, 191, + 191, 1071, 1071, 1071, 191, 1071, 1071, 1071, 1071, 191, + 191, 1071, 1071, 1071, 1071, 1071, 191, 1071, 1071, 1071, + 191, 1071, 1071, 1071, 1071, 1070, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 191, 46, 46, 46, + 46, 46, 88, 1071, 1071, 88, 88, 177, 177, 177, + 1071, 177, 179, 1071, 179, 179, 179, 182, 1071, 182, + 182, 182, 191, 1071, 191, 191, 191, 7, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071 } ; -static const flex_int16_t yy_chk[4128] = +static const flex_int16_t yy_chk[4346] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1452,446 +1489,470 @@ static const flex_int16_t yy_chk[4128] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 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, 1028, - 15, 17, 17, 18, 18, 21, 22, 21, 24, 377, - 23, 30, 24, 21, 270, 21, 24, 23, 31, 21, + 5, 5, 5, 5, 9, 9, 10, 10, 15, 1074, + 15, 17, 17, 18, 18, 21, 22, 21, 24, 383, + 23, 30, 24, 21, 272, 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, 27, 25, 28, 25, 185, + 98, 23, 24, 22, 23, 27, 25, 28, 25, 186, - 32, 27, 184, 25, 32, 28, 29, 42, 25, 26, - 32, 28, 29, 29, 29, 42, 181, 26, 92, 29, + 32, 27, 185, 25, 32, 28, 29, 42, 25, 26, + 32, 28, 29, 29, 29, 42, 182, 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, 38, 33, 50, 50, 36, 33, 38, 43, 43, + 52, 35, 33, 41, 34, 41, 36, 51, 41, 35, 34, 34, 36, 35, 38, 39, 35, 39, 38, 99, - 39, 57, 57, 58, 58, 86, 86, 39, 39, 45, - 41, 20, 41, 90, 90, 41, 179, 179, 67, 70, + 39, 57, 57, 47, 38, 58, 58, 39, 39, 45, + 41, 20, 41, 86, 86, 41, 90, 90, 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, + 101, 180, 180, 40, 103, 67, 70, 40, 71, 106, + 40, 40, 184, 184, 113, 77, 106, 40, 107, 11, 40, 61, 61, 84, 61, 61, 61, 61, 61, 61, 68, 61, 61, 61, 68, 77, 72, 61, 68, 61, - 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, + 72, 113, 77, 84, 68, 61, 72, 61, 109, 7, + 84, 61, 61, 114, 68, 115, 72, 68, 109, 116, + 4, 68, 77, 72, 61, 68, 61, 72, 3, 0, + 84, 68, 61, 72, 61, 109, 112, 112, 61, 61, + 114, 68, 115, 72, 0, 109, 116, 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, + 62, 73, 76, 112, 112, 62, 76, 73, 104, 104, + 78, 110, 117, 76, 78, 119, 110, 73, 120, 76, + 78, 121, 104, 122, 73, 62, 76, 0, 73, 76, + 78, 123, 62, 76, 73, 104, 104, 78, 110, 117, - 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, + 76, 78, 119, 110, 73, 120, 76, 78, 121, 104, + 122, 124, 62, 76, 62, 63, 81, 78, 123, 63, + 125, 126, 63, 127, 128, 81, 127, 81, 129, 63, + 81, 131, 63, 132, 0, 134, 81, 82, 124, 63, + 0, 82, 63, 81, 0, 82, 63, 125, 126, 63, + 127, 128, 81, 127, 81, 129, 63, 81, 131, 63, + 132, 82, 134, 81, 82, 135, 63, 64, 82, 136, + 83, 64, 82, 83, 83, 64, 108, 108, 108, 137, + 108, 64, 0, 138, 64, 138, 140, 0, 82, 141, + 83, 64, 135, 0, 64, 142, 136, 83, 64, 0, - 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, + 83, 83, 64, 108, 108, 108, 137, 108, 64, 111, + 138, 64, 138, 140, 111, 143, 141, 83, 64, 65, + 111, 139, 142, 139, 144, 145, 65, 111, 65, 0, + 146, 0, 147, 65, 139, 0, 111, 149, 65, 65, + 0, 111, 143, 150, 0, 151, 65, 111, 139, 152, + 139, 144, 145, 65, 111, 65, 118, 146, 118, 147, + 65, 139, 118, 154, 149, 65, 65, 66, 154, 118, + 150, 66, 151, 118, 155, 66, 152, 156, 66, 157, + 0, 66, 153, 118, 66, 118, 153, 66, 0, 118, + 154, 66, 0, 0, 66, 154, 118, 0, 66, 0, - 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, + 118, 155, 66, 159, 156, 66, 157, 133, 66, 153, + 160, 66, 0, 153, 66, 158, 161, 133, 66, 69, + 69, 162, 133, 133, 158, 163, 69, 69, 69, 164, + 159, 165, 158, 69, 133, 166, 163, 160, 0, 69, + 0, 169, 158, 161, 133, 167, 69, 69, 162, 133, + 133, 158, 163, 69, 69, 69, 164, 170, 165, 158, + 69, 0, 166, 163, 0, 167, 69, 74, 169, 171, + 168, 74, 167, 168, 173, 171, 172, 174, 175, 191, + 0, 74, 0, 0, 170, 274, 276, 74, 74, 172, + 277, 74, 167, 0, 74, 0, 171, 168, 74, 191, - 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, + 168, 173, 171, 172, 174, 175, 191, 193, 74, 192, + 192, 196, 274, 276, 74, 74, 172, 277, 74, 75, + 75, 0, 193, 199, 196, 279, 191, 193, 75, 0, + 192, 196, 75, 0, 193, 75, 192, 192, 196, 75, + 0, 194, 0, 199, 0, 0, 75, 75, 194, 193, + 199, 196, 279, 0, 193, 75, 194, 192, 196, 75, + 195, 194, 75, 195, 195, 281, 75, 79, 194, 79, + 199, 197, 79, 197, 282, 194, 283, 284, 286, 79, + 79, 0, 0, 194, 195, 0, 0, 195, 194, 79, + 195, 195, 281, 197, 79, 0, 79, 0, 197, 79, - 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, + 197, 282, 287, 283, 284, 286, 79, 79, 198, 198, + 198, 195, 200, 209, 0, 0, 79, 80, 201, 200, + 197, 80, 201, 198, 80, 80, 200, 209, 198, 287, + 0, 80, 200, 209, 80, 198, 198, 198, 288, 200, + 209, 80, 201, 0, 80, 201, 200, 203, 80, 201, + 198, 80, 80, 200, 209, 198, 204, 203, 80, 200, + 209, 80, 0, 0, 289, 288, 0, 203, 80, 201, + 202, 204, 206, 207, 203, 290, 204, 202, 202, 202, + 285, 202, 285, 204, 203, 206, 206, 291, 292, 207, + 202, 289, 206, 207, 203, 0, 0, 202, 204, 206, - 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, + 207, 208, 290, 204, 202, 202, 202, 285, 202, 285, + 224, 208, 206, 206, 291, 292, 207, 202, 205, 206, + 207, 208, 205, 205, 213, 210, 210, 0, 208, 205, + 224, 213, 211, 0, 211, 293, 205, 224, 208, 0, + 214, 295, 205, 0, 213, 205, 210, 214, 208, 205, + 205, 213, 210, 210, 211, 0, 205, 224, 213, 211, + 214, 211, 293, 205, 296, 215, 216, 214, 295, 205, + 217, 213, 0, 210, 214, 215, 218, 0, 298, 216, + 217, 211, 212, 218, 212, 215, 216, 214, 212, 0, + 217, 296, 215, 216, 299, 212, 218, 217, 219, 212, - 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, + 230, 0, 215, 218, 212, 298, 216, 217, 219, 212, + 218, 212, 215, 216, 220, 212, 221, 217, 219, 222, + 230, 299, 212, 218, 220, 219, 212, 230, 222, 226, + 221, 212, 223, 221, 220, 219, 221, 0, 225, 222, + 226, 220, 225, 221, 228, 219, 222, 230, 223, 226, + 229, 220, 223, 228, 229, 222, 226, 221, 225, 223, + 221, 220, 0, 221, 228, 225, 222, 226, 242, 225, + 229, 228, 231, 231, 0, 223, 226, 229, 297, 223, + 228, 229, 0, 0, 300, 225, 227, 227, 242, 241, + 241, 228, 231, 297, 0, 242, 227, 229, 232, 231, - 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, + 231, 227, 227, 301, 232, 297, 232, 227, 233, 241, + 233, 300, 233, 227, 227, 242, 241, 241, 232, 231, + 297, 233, 302, 227, 0, 232, 0, 234, 227, 227, + 301, 232, 233, 232, 227, 233, 241, 233, 237, 233, + 234, 235, 236, 0, 0, 232, 303, 234, 233, 302, + 235, 236, 305, 237, 234, 238, 239, 0, 237, 233, + 240, 235, 236, 239, 240, 237, 244, 234, 235, 236, + 238, 243, 243, 303, 234, 238, 239, 235, 236, 305, + 237, 244, 238, 239, 240, 237, 244, 240, 235, 236, + 239, 240, 243, 244, 245, 306, 246, 238, 243, 243, - 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, + 246, 0, 238, 239, 0, 247, 0, 245, 244, 247, + 249, 240, 249, 244, 245, 248, 307, 308, 309, 243, + 246, 245, 306, 246, 248, 247, 250, 246, 251, 248, + 249, 251, 247, 250, 245, 248, 247, 249, 0, 249, + 0, 245, 248, 307, 308, 309, 250, 246, 251, 0, + 254, 248, 247, 250, 0, 251, 248, 249, 251, 252, + 250, 252, 248, 254, 253, 255, 0, 258, 252, 255, + 254, 310, 0, 250, 253, 251, 252, 254, 0, 256, + 0, 252, 256, 0, 253, 257, 252, 258, 252, 255, + 254, 253, 255, 257, 258, 252, 255, 254, 310, 259, - 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, + 311, 253, 256, 252, 257, 257, 256, 259, 252, 256, + 260, 253, 257, 0, 258, 0, 255, 0, 261, 259, + 257, 260, 261, 263, 263, 312, 259, 311, 0, 256, + 260, 257, 257, 267, 259, 264, 262, 260, 261, 264, + 262, 0, 261, 262, 263, 261, 259, 0, 260, 261, + 263, 263, 312, 267, 0, 264, 262, 260, 268, 266, + 267, 265, 264, 262, 0, 261, 264, 262, 265, 261, + 262, 263, 266, 268, 265, 313, 314, 315, 268, 266, + 267, 265, 264, 262, 0, 268, 266, 269, 265, 316, + 317, 269, 318, 319, 320, 265, 321, 322, 323, 266, - 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, + 268, 265, 313, 314, 315, 268, 266, 324, 265, 325, + 326, 269, 327, 329, 269, 330, 316, 317, 269, 318, + 319, 320, 328, 321, 322, 323, 332, 333, 334, 335, + 336, 337, 328, 338, 324, 339, 325, 326, 269, 327, + 329, 340, 330, 341, 343, 344, 345, 346, 347, 328, + 348, 349, 350, 332, 333, 334, 335, 336, 337, 328, + 338, 351, 339, 352, 353, 354, 355, 356, 340, 357, + 341, 343, 344, 345, 346, 347, 358, 348, 349, 350, + 360, 361, 362, 363, 364, 365, 366, 367, 351, 369, + 352, 353, 354, 355, 356, 370, 357, 371, 372, 371, - 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, + 373, 374, 375, 358, 370, 376, 377, 360, 361, 362, + 363, 364, 365, 366, 367, 378, 369, 379, 380, 381, + 384, 379, 370, 385, 371, 372, 371, 373, 374, 375, + 0, 370, 376, 377, 386, 387, 0, 389, 391, 493, + 384, 0, 378, 385, 379, 380, 381, 384, 379, 388, + 385, 494, 0, 392, 386, 387, 388, 389, 391, 394, + 0, 386, 387, 392, 389, 391, 493, 384, 390, 388, + 385, 393, 390, 392, 0, 393, 388, 394, 494, 394, + 392, 386, 387, 388, 389, 391, 394, 395, 495, 398, + 392, 393, 390, 400, 395, 390, 388, 397, 393, 390, - 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, + 392, 396, 393, 396, 394, 398, 394, 395, 400, 398, + 397, 401, 0, 400, 395, 495, 398, 397, 393, 390, + 400, 395, 402, 396, 397, 399, 402, 403, 396, 0, + 396, 401, 398, 399, 395, 400, 398, 397, 401, 404, + 400, 403, 405, 496, 397, 399, 402, 403, 0, 402, + 396, 407, 399, 402, 403, 407, 406, 0, 401, 404, + 399, 410, 405, 406, 408, 409, 404, 409, 403, 405, + 496, 0, 399, 402, 403, 407, 406, 414, 407, 408, + 411, 410, 407, 406, 408, 415, 404, 409, 410, 405, + 406, 408, 409, 412, 409, 411, 412, 414, 413, 417, - 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, + 411, 0, 407, 406, 414, 415, 408, 411, 410, 413, + 0, 408, 415, 416, 409, 419, 412, 416, 413, 417, + 412, 421, 411, 412, 414, 413, 417, 411, 418, 419, + 418, 420, 415, 422, 421, 419, 413, 416, 420, 423, + 416, 421, 419, 412, 416, 413, 417, 422, 421, 0, + 418, 420, 0, 422, 0, 418, 419, 418, 420, 423, + 422, 421, 419, 424, 416, 420, 423, 424, 421, 427, + 497, 425, 428, 426, 422, 428, 427, 418, 420, 425, + 422, 426, 0, 0, 498, 429, 423, 424, 0, 427, + 424, 425, 499, 426, 424, 428, 427, 497, 425, 428, - 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, + 426, 429, 428, 427, 430, 429, 425, 430, 426, 431, + 432, 498, 429, 431, 424, 434, 427, 501, 425, 499, + 426, 434, 428, 435, 430, 432, 433, 436, 429, 431, + 432, 430, 429, 435, 430, 434, 431, 432, 437, 433, + 431, 438, 434, 435, 501, 0, 433, 436, 434, 439, + 435, 430, 432, 433, 436, 440, 431, 432, 437, 439, + 435, 438, 434, 441, 442, 437, 433, 444, 438, 439, + 435, 440, 441, 433, 436, 440, 439, 443, 0, 446, + 446, 504, 440, 441, 442, 437, 439, 444, 438, 445, + 441, 442, 443, 445, 444, 505, 439, 443, 440, 441, - 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, + 446, 447, 440, 506, 443, 447, 446, 446, 504, 445, + 441, 442, 508, 448, 444, 448, 445, 0, 450, 443, + 445, 449, 505, 449, 443, 447, 453, 446, 447, 451, + 506, 452, 447, 448, 450, 0, 445, 509, 450, 508, + 448, 449, 448, 0, 451, 450, 453, 452, 449, 451, + 449, 452, 447, 453, 0, 454, 451, 455, 452, 0, + 448, 450, 454, 457, 509, 450, 456, 458, 449, 511, + 455, 451, 0, 453, 452, 454, 451, 455, 452, 460, + 456, 459, 454, 457, 455, 459, 456, 458, 460, 454, + 457, 0, 0, 456, 458, 0, 511, 455, 461, 460, - 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, + 512, 513, 454, 462, 455, 459, 460, 456, 459, 461, + 457, 462, 459, 456, 458, 460, 463, 467, 461, 464, + 463, 465, 466, 462, 465, 461, 460, 512, 513, 466, + 462, 514, 459, 469, 464, 0, 461, 467, 462, 464, + 463, 465, 466, 463, 467, 461, 464, 463, 465, 466, + 462, 465, 468, 469, 470, 471, 466, 0, 514, 0, + 469, 464, 468, 472, 467, 475, 464, 463, 465, 466, + 0, 473, 468, 471, 470, 471, 475, 474, 472, 468, + 469, 470, 471, 472, 474, 475, 473, 0, 0, 468, + 472, 473, 475, 0, 476, 515, 478, 474, 473, 468, - 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, + 471, 470, 471, 475, 474, 472, 477, 479, 480, 476, + 472, 474, 475, 473, 476, 477, 478, 480, 473, 516, + 481, 476, 515, 478, 474, 0, 477, 479, 480, 481, + 0, 0, 0, 477, 479, 480, 476, 517, 482, 483, + 481, 476, 477, 478, 480, 0, 516, 481, 482, 483, + 482, 485, 486, 477, 479, 480, 481, 484, 482, 483, + 485, 484, 0, 518, 517, 482, 483, 481, 486, 0, + 521, 485, 486, 488, 489, 482, 483, 482, 485, 486, + 487, 484, 487, 490, 484, 482, 483, 485, 484, 489, + 518, 488, 490, 488, 489, 486, 490, 521, 485, 486, - 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, + 488, 489, 487, 490, 0, 0, 522, 487, 484, 487, + 490, 491, 492, 523, 491, 524, 489, 525, 488, 490, + 488, 489, 526, 490, 527, 492, 529, 530, 533, 487, + 490, 491, 492, 522, 534, 536, 539, 540, 491, 492, + 523, 491, 524, 541, 525, 542, 543, 546, 550, 526, + 552, 527, 492, 529, 530, 533, 544, 554, 491, 492, + 556, 534, 536, 539, 540, 555, 555, 544, 557, 559, + 541, 560, 542, 543, 546, 550, 561, 552, 562, 563, + 565, 566, 567, 544, 554, 568, 569, 556, 570, 571, + 572, 573, 555, 555, 544, 557, 559, 575, 560, 576, - 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, + 577, 578, 581, 561, 582, 562, 563, 565, 566, 567, + 584, 585, 568, 569, 586, 570, 571, 572, 573, 587, + 588, 589, 590, 591, 575, 593, 576, 577, 578, 581, + 595, 582, 0, 0, 600, 0, 601, 584, 585, 705, + 598, 586, 599, 0, 604, 602, 587, 588, 589, 590, + 591, 0, 593, 598, 600, 599, 601, 595, 602, 603, + 598, 600, 599, 601, 604, 602, 705, 598, 603, 599, + 605, 604, 602, 607, 606, 0, 608, 0, 606, 603, + 598, 600, 599, 601, 610, 602, 603, 598, 610, 599, + 605, 604, 602, 607, 609, 603, 608, 605, 606, 611, - 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, + 607, 606, 609, 608, 610, 606, 603, 612, 707, 0, + 614, 610, 611, 613, 609, 610, 615, 605, 0, 611, + 607, 609, 0, 608, 614, 606, 611, 612, 613, 609, + 614, 610, 617, 613, 612, 707, 615, 614, 616, 611, + 613, 609, 709, 615, 710, 616, 611, 618, 617, 619, + 0, 614, 617, 619, 612, 613, 0, 614, 616, 617, + 613, 0, 618, 615, 620, 616, 621, 618, 621, 709, + 711, 710, 616, 619, 618, 617, 619, 620, 622, 617, + 619, 624, 622, 623, 620, 616, 625, 712, 621, 618, + 623, 620, 0, 621, 618, 621, 626, 711, 622, 713, - 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, + 619, 624, 0, 623, 620, 622, 625, 626, 624, 622, + 623, 620, 0, 625, 712, 621, 626, 623, 627, 628, + 630, 629, 0, 626, 630, 622, 713, 0, 624, 627, + 623, 0, 632, 625, 626, 628, 629, 633, 627, 628, + 634, 629, 0, 626, 630, 627, 628, 630, 629, 631, + 635, 630, 632, 631, 635, 634, 627, 633, 636, 632, + 634, 0, 628, 629, 633, 627, 628, 634, 629, 637, + 714, 630, 0, 631, 635, 640, 631, 635, 636, 632, + 631, 635, 634, 0, 633, 636, 638, 634, 639, 637, + 638, 642, 643, 0, 641, 640, 637, 714, 716, 639, - 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, + 631, 635, 640, 641, 644, 636, 0, 645, 639, 646, + 638, 642, 643, 638, 641, 639, 637, 638, 642, 643, + 645, 641, 640, 0, 644, 716, 639, 645, 646, 646, + 641, 644, 647, 648, 645, 639, 646, 638, 642, 643, + 0, 641, 650, 652, 653, 647, 648, 645, 649, 0, + 649, 644, 647, 648, 645, 646, 646, 717, 651, 647, + 648, 649, 650, 652, 653, 651, 654, 655, 649, 650, + 652, 653, 647, 648, 0, 649, 656, 649, 651, 647, + 648, 658, 655, 0, 717, 651, 654, 655, 649, 650, + 652, 653, 651, 654, 655, 649, 656, 657, 659, 0, - 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, + 0, 658, 662, 656, 657, 651, 660, 661, 658, 655, + 661, 0, 663, 654, 655, 662, 718, 657, 659, 0, + 660, 660, 662, 656, 657, 659, 660, 661, 658, 662, + 665, 657, 663, 660, 661, 720, 664, 661, 664, 663, + 721, 0, 662, 718, 657, 659, 669, 660, 660, 662, + 665, 666, 668, 660, 661, 667, 0, 665, 664, 663, + 668, 672, 720, 664, 666, 664, 669, 721, 667, 672, + 670, 666, 668, 669, 670, 667, 671, 665, 666, 668, + 671, 672, 667, 675, 722, 664, 675, 668, 672, 674, + 0, 666, 673, 669, 670, 667, 672, 670, 666, 668, - 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, + 671, 670, 667, 671, 674, 673, 675, 671, 672, 674, + 675, 722, 673, 675, 676, 677, 674, 679, 678, 673, + 678, 670, 676, 680, 677, 0, 681, 671, 682, 0, + 681, 674, 673, 675, 676, 677, 674, 679, 684, 673, + 678, 676, 677, 680, 679, 678, 681, 678, 682, 676, + 680, 677, 685, 681, 686, 682, 683, 681, 684, 0, + 688, 676, 677, 0, 679, 684, 683, 678, 686, 690, + 680, 0, 685, 681, 686, 682, 683, 687, 690, 685, + 688, 686, 691, 683, 689, 684, 689, 688, 692, 690, + 695, 687, 692, 683, 697, 686, 690, 687, 691, 685, - 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, + 723, 686, 691, 683, 687, 690, 689, 688, 693, 691, + 695, 689, 692, 689, 697, 692, 690, 695, 687, 692, + 694, 697, 694, 693, 687, 691, 698, 723, 693, 691, + 724, 696, 699, 689, 696, 693, 700, 695, 0, 692, + 694, 697, 698, 725, 701, 702, 698, 694, 726, 694, + 693, 696, 699, 698, 727, 693, 700, 724, 696, 699, + 728, 696, 729, 700, 701, 702, 732, 694, 733, 698, + 725, 701, 702, 698, 735, 726, 737, 740, 696, 699, + 741, 727, 742, 700, 743, 748, 750, 728, 751, 729, + 752, 701, 702, 732, 755, 733, 756, 757, 758, 759, - 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, + 761, 735, 762, 737, 740, 763, 764, 741, 765, 742, + 766, 743, 748, 750, 767, 751, 768, 752, 769, 770, + 771, 755, 773, 756, 757, 758, 759, 761, 774, 762, + 775, 777, 763, 764, 778, 765, 779, 766, 0, 781, + 782, 767, 784, 768, 783, 769, 770, 771, 785, 773, + 786, 859, 787, 788, 788, 774, 0, 775, 777, 781, + 782, 778, 784, 779, 783, 783, 781, 782, 785, 784, + 786, 783, 787, 789, 788, 785, 0, 786, 859, 787, + 788, 788, 789, 790, 791, 792, 781, 782, 793, 784, + 0, 783, 783, 789, 791, 785, 794, 786, 790, 787, - 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, + 789, 788, 796, 790, 791, 792, 794, 795, 793, 789, + 790, 791, 792, 0, 795, 793, 794, 797, 861, 800, + 789, 791, 796, 794, 862, 790, 0, 795, 800, 796, + 790, 791, 792, 794, 795, 793, 798, 797, 799, 800, + 798, 795, 801, 794, 797, 861, 800, 0, 802, 796, + 0, 862, 0, 799, 795, 800, 798, 803, 799, 804, + 0, 0, 801, 798, 797, 799, 800, 798, 802, 801, + 863, 0, 803, 805, 804, 802, 808, 803, 806, 804, + 799, 865, 806, 798, 803, 799, 804, 805, 807, 801, + 807, 809, 810, 805, 0, 802, 808, 863, 806, 803, - 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, + 805, 804, 812, 808, 803, 806, 804, 810, 865, 806, + 807, 809, 810, 814, 805, 807, 815, 807, 809, 810, + 805, 811, 812, 808, 813, 806, 813, 816, 811, 812, + 817, 815, 819, 814, 810, 0, 815, 807, 809, 810, + 814, 811, 820, 815, 813, 0, 818, 816, 811, 812, + 817, 813, 819, 813, 816, 811, 820, 817, 815, 819, + 814, 818, 820, 815, 822, 821, 818, 823, 811, 820, + 824, 813, 821, 818, 816, 825, 826, 817, 827, 819, + 867, 868, 828, 820, 822, 821, 828, 823, 818, 820, + 824, 822, 821, 818, 823, 825, 826, 824, 827, 821, - 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, + 830, 829, 825, 826, 829, 827, 828, 867, 868, 828, + 831, 822, 821, 828, 823, 830, 832, 824, 833, 834, + 830, 829, 825, 826, 836, 827, 0, 830, 829, 838, + 831, 829, 834, 828, 870, 0, 832, 831, 833, 834, + 835, 0, 830, 832, 836, 833, 834, 830, 829, 838, + 837, 836, 872, 835, 837, 0, 838, 831, 839, 834, + 835, 870, 839, 832, 840, 833, 834, 835, 840, 0, + 837, 836, 841, 841, 0, 0, 838, 837, 876, 872, + 835, 837, 839, 842, 0, 839, 878, 835, 840, 839, + 844, 840, 845, 841, 844, 840, 850, 837, 842, 841, - 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, + 841, 843, 843, 842, 0, 876, 845, 0, 0, 839, + 842, 846, 845, 878, 844, 840, 850, 844, 0, 845, + 841, 844, 843, 850, 846, 842, 851, 847, 843, 843, + 842, 846, 848, 845, 852, 852, 848, 0, 846, 845, + 849, 844, 847, 850, 849, 853, 851, 847, 854, 843, + 0, 846, 879, 851, 847, 852, 848, 885, 846, 848, + 886, 852, 852, 848, 849, 853, 855, 849, 854, 847, + 858, 849, 853, 851, 847, 854, 889, 856, 890, 879, + 855, 856, 852, 848, 885, 857, 855, 886, 892, 857, + 858, 849, 853, 855, 893, 854, 894, 858, 896, 897, - 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, + 898, 856, 902, 889, 856, 890, 904, 855, 856, 857, + 905, 906, 857, 855, 907, 892, 857, 858, 912, 913, + 914, 893, 915, 894, 917, 896, 897, 898, 856, 902, + 916, 0, 919, 904, 918, 921, 857, 905, 906, 916, + 914, 907, 915, 924, 917, 912, 913, 914, 918, 915, + 916, 917, 919, 920, 918, 921, 922, 916, 922, 919, + 920, 918, 921, 924, 926, 925, 916, 914, 925, 915, + 924, 917, 0, 920, 923, 918, 974, 916, 922, 919, + 920, 918, 921, 922, 926, 922, 928, 920, 925, 923, + 924, 926, 925, 0, 923, 925, 927, 929, 927, 930, - 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, + 920, 923, 931, 974, 0, 922, 928, 932, 0, 0, + 0, 926, 935, 928, 0, 925, 923, 929, 927, 930, + 934, 923, 931, 927, 929, 927, 930, 932, 933, 931, + 936, 937, 935, 928, 932, 934, 938, 933, 0, 935, + 934, 939, 0, 0, 929, 927, 930, 934, 933, 931, + 936, 937, 940, 941, 932, 933, 938, 936, 937, 935, + 0, 939, 934, 938, 933, 940, 942, 934, 939, 943, + 946, 976, 940, 941, 944, 933, 0, 936, 937, 940, + 941, 944, 948, 938, 0, 949, 942, 945, 939, 943, + 946, 945, 940, 942, 944, 947, 943, 946, 976, 940, - 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, + 941, 944, 948, 950, 951, 949, 951, 977, 944, 948, + 947, 945, 949, 942, 945, 947, 943, 946, 945, 954, + 0, 944, 947, 950, 955, 952, 951, 952, 0, 948, + 950, 951, 949, 951, 977, 953, 956, 947, 945, 954, + 958, 957, 947, 982, 955, 984, 954, 952, 957, 953, + 950, 955, 952, 951, 952, 953, 956, 961, 985, 961, + 958, 957, 953, 956, 0, 959, 954, 958, 957, 959, + 982, 955, 984, 960, 952, 957, 953, 960, 962, 961, + 988, 963, 953, 956, 961, 985, 961, 958, 957, 959, + 964, 965, 959, 962, 966, 968, 959, 960, 962, 967, - 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, + 960, 963, 968, 989, 960, 962, 961, 988, 963, 992, + 964, 965, 967, 993, 966, 968, 959, 964, 965, 967, + 962, 966, 968, 994, 960, 962, 967, 995, 963, 968, + 989, 998, 999, 1000, 0, 1001, 992, 964, 965, 967, + 993, 966, 968, 1002, 1003, 1004, 967, 1005, 1003, 1006, + 994, 998, 999, 1000, 995, 1001, 0, 1007, 998, 999, + 1000, 1008, 1001, 1002, 1006, 1004, 1009, 1005, 1003, 1006, + 1002, 1003, 1004, 0, 1005, 1003, 1006, 1007, 998, 999, + 1000, 1008, 1001, 1010, 1007, 1011, 1009, 1011, 1008, 1012, + 1002, 1006, 1004, 1009, 1005, 1003, 1006, 1014, 1013, 1015, - 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, + 1016, 1019, 0, 1010, 1007, 1027, 0, 1011, 1008, 1012, + 1010, 1013, 1011, 1009, 1011, 0, 1012, 1014, 1013, 1015, + 1016, 1019, 1017, 1018, 1014, 1013, 1015, 1016, 1019, 1018, + 1010, 1020, 1027, 1022, 1011, 1024, 1012, 1017, 1013, 1021, + 1030, 1022, 1017, 1018, 1014, 1013, 1015, 1016, 1019, 1017, + 1018, 1020, 1021, 1022, 1025, 1024, 1018, 1023, 1020, 1021, + 1022, 1032, 1024, 1026, 1017, 1035, 1021, 1030, 1022, 1017, + 1018, 1036, 1023, 1037, 1025, 1040, 1039, 1023, 1020, 1021, + 1022, 1025, 1024, 1026, 1023, 1041, 1021, 1043, 1032, 1045, + 1026, 1039, 1035, 1042, 1051, 1040, 1039, 1046, 1036, 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 + 1037, 1025, 1040, 1039, 1023, 1041, 1044, 1043, 1042, 1045, + 1026, 1047, 1041, 1042, 1043, 1053, 1045, 1046, 1039, 1044, + 1042, 1051, 1040, 1039, 1046, 1049, 1044, 1050, 1048, 1049, + 1056, 1047, 1041, 1044, 1043, 1042, 1045, 1065, 1047, 1048, + 1042, 1057, 1053, 1058, 1046, 1049, 1044, 1050, 1048, 1060, + 0, 1059, 1049, 1044, 1050, 1048, 1049, 1056, 1047, 1061, + 0, 1057, 1066, 1058, 1065, 1059, 1048, 1062, 1057, 1060, + 1058, 1059, 1049, 1067, 1050, 1048, 1060, 1062, 1059, 1061, + 0, 0, 1066, 1070, 0, 0, 1061, 1062, 1057, 1066, + 1058, 0, 1059, 1067, 1062, 0, 1060, 0, 1059, 1068, + + 1067, 0, 0, 1070, 1062, 0, 1061, 0, 1068, 1066, + 1070, 0, 0, 0, 1062, 0, 0, 0, 0, 1068, + 1067, 0, 0, 0, 0, 0, 1068, 0, 0, 0, + 1070, 0, 0, 0, 0, 1068, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1068, 1072, 1072, 1072, + 1072, 1072, 1073, 0, 0, 1073, 1073, 1075, 1075, 1075, + 0, 1075, 1076, 0, 1076, 1076, 1076, 1077, 0, 1077, + 1077, 1077, 1078, 0, 1078, 1078, 1078, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071 } ; /* The intent behind this definition is that it'll catch @@ -1921,7 +1982,7 @@ static const flex_int16_t yy_chk[4128] = static thread_local std::stringstream strbuf; -#line 1925 "flex_lexer.cpp" +#line 1986 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -1935,7 +1996,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 1939 "flex_lexer.cpp" +#line 2000 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -2222,7 +2283,7 @@ YY_DECL #line 56 "flex_lexer.l" -#line 2226 "flex_lexer.cpp" +#line 2287 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2249,13 +2310,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 >= 1026 ) + if ( yy_current_state >= 1072 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1025 ); + while ( yy_current_state != 1071 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2947,113 +3008,133 @@ YY_RULE_SETUP #line 193 "flex_lexer.l" TOKEN(FALSE) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 135: YY_RULE_SETUP -#line 196 "flex_lexer.l" -TOKEN(EQUALS) +#line 194 "flex_lexer.l" +TOKEN(TRANSACTION) YY_BREAK case 136: YY_RULE_SETUP -#line 197 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 195 "flex_lexer.l" +TOKEN(BEGIN) YY_BREAK case 137: YY_RULE_SETUP -#line 198 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 196 "flex_lexer.l" +TOKEN(ROLLBACK) YY_BREAK case 138: YY_RULE_SETUP -#line 199 "flex_lexer.l" -TOKEN(LESSEQ) +#line 197 "flex_lexer.l" +TOKEN(COMMIT) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 139: YY_RULE_SETUP #line 200 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(EQUALS) YY_BREAK case 140: YY_RULE_SETUP #line 201 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(NOTEQUALS) YY_BREAK case 141: YY_RULE_SETUP -#line 203 "flex_lexer.l" -{ return yytext[0]; } +#line 202 "flex_lexer.l" +TOKEN(NOTEQUALS) YY_BREAK case 142: -#line 206 "flex_lexer.l" +YY_RULE_SETUP +#line 203 "flex_lexer.l" +TOKEN(LESSEQ) + YY_BREAK case 143: YY_RULE_SETUP -#line 206 "flex_lexer.l" +#line 204 "flex_lexer.l" +TOKEN(GREATEREQ) + YY_BREAK +case 144: +YY_RULE_SETUP +#line 205 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK +case 145: +YY_RULE_SETUP +#line 207 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 146: +#line 210 "flex_lexer.l" +case 147: +YY_RULE_SETUP +#line 210 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK -case 144: +case 148: YY_RULE_SETUP -#line 211 "flex_lexer.l" +#line 215 "flex_lexer.l" { yylval->ival = atol(yytext); return SQL_INTVAL; } YY_BREAK -case 145: +case 149: YY_RULE_SETUP -#line 216 "flex_lexer.l" +#line 220 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_IDENTIFIER; } YY_BREAK -case 146: +case 150: YY_RULE_SETUP -#line 222 "flex_lexer.l" +#line 226 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 147: -YY_RULE_SETUP -#line 227 "flex_lexer.l" -{ BEGIN singlequotedstring; strbuf = std::stringstream{}; } - YY_BREAK -case 148: -YY_RULE_SETUP -#line 228 "flex_lexer.l" -{ strbuf << '\''; } - YY_BREAK -case 149: -/* rule 149 can match eol */ -YY_RULE_SETUP -#line 229 "flex_lexer.l" -{ strbuf << yytext; } - YY_BREAK -case 150: -YY_RULE_SETUP -#line 230 "flex_lexer.l" -{ BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } - YY_BREAK -case YY_STATE_EOF(singlequotedstring): -#line 231 "flex_lexer.l" -{ fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } - YY_BREAK case 151: YY_RULE_SETUP -#line 233 "flex_lexer.l" -{ fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } +#line 231 "flex_lexer.l" +{ BEGIN singlequotedstring; strbuf = std::stringstream{}; } YY_BREAK case 152: YY_RULE_SETUP -#line 236 "flex_lexer.l" +#line 232 "flex_lexer.l" +{ strbuf << '\''; } + YY_BREAK +case 153: +/* rule 153 can match eol */ +YY_RULE_SETUP +#line 233 "flex_lexer.l" +{ strbuf << yytext; } + YY_BREAK +case 154: +YY_RULE_SETUP +#line 234 "flex_lexer.l" +{ BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } + YY_BREAK +case YY_STATE_EOF(singlequotedstring): +#line 235 "flex_lexer.l" +{ fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } + YY_BREAK +case 155: +YY_RULE_SETUP +#line 237 "flex_lexer.l" +{ fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 240 "flex_lexer.l" ECHO; YY_BREAK -#line 3057 "flex_lexer.cpp" +#line 3138 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3354,7 +3435,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 >= 1026 ) + if ( yy_current_state >= 1072 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3383,11 +3464,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 >= 1026 ) + if ( yy_current_state >= 1072 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1025); + yy_is_jam = (yy_current_state == 1071); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -4210,7 +4291,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 236 "flex_lexer.l" +#line 240 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 8e8e96c..41bb487 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -730,7 +730,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 236 "flex_lexer.l" +#line 240 "flex_lexer.l" #line 737 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 6a86a75..cc338d6 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -191,6 +191,10 @@ MONTH TOKEN(MONTH) YEAR TOKEN(YEAR) TRUE TOKEN(TRUE) FALSE TOKEN(FALSE) +TRANSACTION TOKEN(TRANSACTION) +BEGIN TOKEN(BEGIN) +ROLLBACK TOKEN(ROLLBACK) +COMMIT TOKEN(COMMIT) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ "==" TOKEN(EQUALS) diff --git a/src/sql/SQLStatement.h b/src/sql/SQLStatement.h index 1c25107..19bfa40 100644 --- a/src/sql/SQLStatement.h +++ b/src/sql/SQLStatement.h @@ -20,7 +20,8 @@ namespace hsql { kStmtExport, kStmtRename, kStmtAlter, - kStmtShow + kStmtShow, + kStmtTransaction }; // Base struct for every SQL statement diff --git a/src/sql/TransactionStatement.h b/src/sql/TransactionStatement.h new file mode 100644 index 0000000..25831f2 --- /dev/null +++ b/src/sql/TransactionStatement.h @@ -0,0 +1,25 @@ +#ifndef HYRISE_TRANSACTIONSTATEMENT_H +#define HYRISE_TRANSACTIONSTATEMENT_H + +#include "SQLStatement.h" + +namespace hsql { + + // Represents SQL Transaction statements. + // Example: BEGIN TRANSACTION; + enum TransactionCommand { + kBeginTransaction, + kCommitTransaction, + kRollbackTransaction + }; + + struct TransactionStatement : SQLStatement { + TransactionStatement(TransactionCommand command); + virtual ~TransactionStatement(); + + TransactionCommand command; + }; + +} // namsepace hsql + +#endif diff --git a/src/sql/statements.cpp b/src/sql/statements.cpp index 18ad92e..2dff34c 100755 --- a/src/sql/statements.cpp +++ b/src/sql/statements.cpp @@ -105,7 +105,7 @@ namespace hsql { delete expr; } - // DropStatament + // DropStatement DropStatement::DropStatement(DropType type) : SQLStatement(kStmtDrop), type(type), @@ -117,6 +117,14 @@ namespace hsql { free(name); } + // TransactionStatement + TransactionStatement::TransactionStatement(TransactionCommand command) : + SQLStatement(kStmtTransaction), + command(command) {} + + TransactionStatement::~TransactionStatement() {} + + // ExecuteStatement ExecuteStatement::ExecuteStatement() : SQLStatement(kStmtExecute), diff --git a/src/sql/statements.h b/src/sql/statements.h index 7090768..f5edf21 100644 --- a/src/sql/statements.h +++ b/src/sql/statements.h @@ -12,5 +12,6 @@ #include "ExecuteStatement.h" #include "ShowStatement.h" #include "ExportStatement.h" +#include "TransactionStatement.h" #endif // SQLPARSER_STATEMENTS_H diff --git a/src/util/sqlhelper.cpp b/src/util/sqlhelper.cpp index 87772c0..bb9dad4 100755 --- a/src/util/sqlhelper.cpp +++ b/src/util/sqlhelper.cpp @@ -261,6 +261,21 @@ namespace hsql { } } + void printTransactionStatementInfo(const TransactionStatement* stmt, uintmax_t numIndent) { + inprint("TransactionStatement", numIndent); + switch (stmt->command){ + case kBeginTransaction: + inprint("BEGIN", numIndent + 1); + break; + case kCommitTransaction: + inprint("COMMIT", numIndent + 1); + break; + case kRollbackTransaction: + inprint("ROLLBACK", numIndent + 1); + break; + } + } + void printStatementInfo(const SQLStatement* stmt) { switch (stmt->type()) { case kStmtSelect: @@ -278,6 +293,9 @@ namespace hsql { case kStmtExport: printExportStatementInfo((const ExportStatement*) stmt, 0); break; + case kStmtTransaction: + printTransactionStatementInfo((const TransactionStatement*) stmt, 0); + break; default: break; } diff --git a/src/util/sqlhelper.h b/src/util/sqlhelper.h index cd3416a..df557da 100644 --- a/src/util/sqlhelper.h +++ b/src/util/sqlhelper.h @@ -23,6 +23,9 @@ namespace hsql { // Prints a summary of the given CreateStatement with the given indentation. void printCreateStatementInfo(const CreateStatement* stmt, uintmax_t num_indent); + // Prints a summary of the given TransactionStatement with the given indentation. + void printTransactionStatementInfo(const TransactionStatement* stmt, uintmax_t numIndent); + // Prints a summary of the given Expression with the given indentation. void printExpression(Expr* expr, uintmax_t num_indent); diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index ed33213..34311f3 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -19,3 +19,4 @@ !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 +!BEGIN TRANSACTION transName; # Transaction naming is currently not supported diff --git a/test/sql_tests.cpp b/test/sql_tests.cpp index 71980cf..4a0a564 100644 --- a/test/sql_tests.cpp +++ b/test/sql_tests.cpp @@ -301,4 +301,50 @@ TEST(StringLengthTest) { ASSERT_EQ(result.getStatement(2)->stringLength, 21); } +TEST(BeginTransactionTest) { + { + TEST_PARSE_SINGLE_SQL( + "BEGIN TRANSACTION;", + kStmtTransaction, + TransactionStatement, + transaction_result, + transaction_stmt); + + ASSERT_EQ(transaction_stmt->command, kBeginTransaction); + } + + { + TEST_PARSE_SINGLE_SQL( + "BEGIN;", + kStmtTransaction, + TransactionStatement, + transaction_result, + transaction_stmt); + + ASSERT_EQ(transaction_stmt->command, kBeginTransaction); + } +} + +TEST(RollbackTransactionTest) { + TEST_PARSE_SINGLE_SQL( + "ROLLBACK TRANSACTION;", + kStmtTransaction, + TransactionStatement, + transaction_result, + transaction_stmt); + + ASSERT_EQ(transaction_stmt->command, kRollbackTransaction); +} + +TEST(CommitTransactionTest) { + TEST_PARSE_SINGLE_SQL( + "COMMIT TRANSACTION;", + kStmtTransaction, + TransactionStatement, + transaction_result, + transaction_stmt); + + ASSERT_EQ(transaction_stmt->command, kCommitTransaction); +} + TEST_MAIN();