From d522de70db1ee8662f9a2ea39fb7fd8c77f24a1a Mon Sep 17 00:00:00 2001 From: Martin Kleusberg Date: Mon, 3 Feb 2020 17:31:27 +0100 Subject: [PATCH] parser: Add support for parsing GENERATED ALWAYS AS columns This adds support for parsing, storing, and generating GENERATED ALWAYS AS columns as added in SQLite 3.31.0. See issue #2107. --- src/SqlUiLexer.cpp | 6 +- src/sql/parser/sqlite3_lexer.cpp | 1524 ++++----- src/sql/parser/sqlite3_lexer.h | 2 +- src/sql/parser/sqlite3_lexer.ll | 3 + src/sql/parser/sqlite3_location.h | 78 +- src/sql/parser/sqlite3_parser.cpp | 5040 +++++++++++++++-------------- src/sql/parser/sqlite3_parser.hpp | 1602 ++++----- src/sql/parser/sqlite3_parser.yy | 44 + src/sql/sqlitetypes.cpp | 12 + src/sql/sqlitetypes.h | 30 + 10 files changed, 4450 insertions(+), 3891 deletions(-) diff --git a/src/SqlUiLexer.cpp b/src/SqlUiLexer.cpp index 5d6555be..5475047f 100644 --- a/src/SqlUiLexer.cpp +++ b/src/SqlUiLexer.cpp @@ -24,7 +24,7 @@ void SqlUiLexer::setupAutoCompletion() keywordPatterns // Keywords << "ABORT" << "ACTION" << "ADD" << "AFTER" << "ALL" - << "ALTER" << "ANALYZE" << "AND" << "AS" << "ASC" + << "ALTER" << "ALWAYS" << "ANALYZE" << "AND" << "AS" << "ASC" << "ATTACH" << "AUTOINCREMENT" << "BEFORE" << "BEGIN" << "BETWEEN" << "BY" << "CASCADE" << "CASE" << "CAST" << "CHECK" << "COLLATE" << "COLUMN" << "COMMIT" << "CONFLICT" << "CONSTRAINT" @@ -33,7 +33,7 @@ void SqlUiLexer::setupAutoCompletion() << "DESC" << "DETACH" << "DISTINCT" << "DO" << "DROP" << "EACH" << "ELSE" << "END" << "ESCAPE" << "EXCEPT" << "EXCLUSIVE" << "EXISTS" << "EXPLAIN" << "FAIL" << "FILTER" << "FOLLOWING" << "FOR" << "FOREIGN" - << "FROM" << "FULL" << "GLOB" << "GROUP" << "HAVING" + << "FROM" << "FULL" << "GENERATED" << "GLOB" << "GROUP" << "HAVING" << "IF" << "IGNORE" << "IMMEDIATE" << "IN" << "INDEX" << "INDEXED" << "INITIALLY" << "INNER" << "INSERT" << "INSTEAD" << "INTERSECT" << "INTO" << "IS" << "ISNULL" << "JOIN" @@ -43,7 +43,7 @@ void SqlUiLexer::setupAutoCompletion() << "OUTER" << "OVER" << "PARTITION" << "PLAN" << "PRAGMA" << "PRECEDING" << "PRIMARY" << "QUERY" << "RAISE" << "RANGE" << "RECURSIVE" << "REFERENCES" << "REGEXP" << "REINDEX" << "RELEASE" << "RENAME" << "REPLACE" << "RESTRICT" << "RIGHT" << "ROLLBACK" - << "ROWID" << "ROW" << "ROWS" << "SAVEPOINT" << "SELECT" << "SET" << "TABLE" + << "ROWID" << "ROW" << "ROWS" << "SAVEPOINT" << "SELECT" << "SET" << "STORED" << "TABLE" << "TEMP" << "TEMPORARY" << "THEN" << "TO" << "TRANSACTION" << "TRIGGER" << "UNBOUNDED" << "UNION" << "UNIQUE" << "UPDATE" << "USING" << "VACUUM" << "VALUES" << "VIEW" << "VIRTUAL" << "WHEN" diff --git a/src/sql/parser/sqlite3_lexer.cpp b/src/sql/parser/sqlite3_lexer.cpp index 009b49ff..5ff6e45e 100644 --- a/src/sql/parser/sqlite3_lexer.cpp +++ b/src/sql/parser/sqlite3_lexer.cpp @@ -420,8 +420,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ yyg->yy_c_buf_p = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 120 -#define YY_END_OF_BUFFER 121 +#define YY_NUM_RULES 123 +#define YY_END_OF_BUFFER 124 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -429,57 +429,59 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[449] = +static const flex_int16_t yy_accept[467] = { 0, - 0, 0, 0, 0, 121, 119, 1, 2, 2, 119, - 119, 106, 105, 119, 95, 96, 102, 100, 98, 101, - 97, 103, 91, 91, 119, 99, 113, 109, 111, 93, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 119, 119, 107, 104, 119, 119, 119, 86, - 1, 2, 115, 0, 89, 0, 90, 3, 91, 4, - 91, 91, 0, 0, 94, 117, 114, 116, 110, 112, - 118, 93, 86, 86, 86, 86, 10, 86, 0, 0, - 0, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 0, 0, 0, 0, 124, 122, 1, 2, 2, 122, + 122, 109, 108, 122, 98, 99, 105, 103, 101, 104, + 100, 106, 94, 94, 122, 102, 116, 112, 114, 96, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 122, 122, 110, 107, 122, 122, 122, 89, + 1, 2, 118, 0, 92, 0, 93, 3, 94, 4, + 94, 94, 0, 0, 97, 120, 117, 119, 113, 115, + 121, 96, 89, 89, 89, 89, 89, 11, 89, 0, + 0, 0, 89, 89, 89, 89, 89, 89, 89, 89, - 86, 86, 86, 86, 86, 86, 86, 40, 86, 86, - 43, 47, 86, 86, 86, 52, 86, 56, 57, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 0, 0, 88, 0, - 87, 108, 86, 0, 0, 86, 91, 0, 91, 91, - 93, 86, 86, 6, 11, 86, 0, 0, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 31, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 49, 86, 86, 53, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 42, + 89, 89, 45, 49, 89, 89, 89, 54, 89, 58, + 59, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 0, + 0, 91, 0, 90, 111, 89, 0, 0, 89, 94, + 0, 94, 94, 96, 89, 89, 89, 6, 12, 89, + 0, 0, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 32, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 51, 89, 89, 55, 89, 89, 89, 89, 89, 89, - 86, 86, 86, 72, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 92, 0, 0, 5, 86, - 86, 86, 0, 86, 86, 14, 15, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 28, 86, 30, 86, - 86, 34, 86, 86, 86, 86, 39, 86, 86, 86, - 86, 86, 86, 50, 86, 86, 55, 58, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 70, - 86, 86, 74, 76, 77, 86, 86, 86, 86, 86, - 83, 86, 86, 8, 86, 86, 86, 86, 16, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 89, 89, 89, 89, 89, 89, 89, 89, 74, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 95, 0, 0, 5, 89, 89, 89, 89, 0, + 89, 89, 15, 16, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 29, 89, 31, 89, 89, 35, 89, + 89, 89, 89, 89, 41, 89, 89, 89, 89, 89, + 89, 52, 89, 89, 57, 60, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 72, 89, 89, + 89, 77, 79, 80, 89, 89, 89, 89, 89, 86, + 89, 89, 8, 89, 89, 89, 89, 89, 17, 89, - 35, 86, 86, 86, 86, 86, 44, 86, 86, 86, - 51, 86, 86, 86, 86, 62, 63, 86, 86, 86, - 86, 86, 69, 86, 73, 86, 86, 86, 86, 81, - 86, 84, 86, 9, 86, 86, 86, 86, 86, 86, - 20, 86, 86, 86, 27, 86, 32, 33, 36, 86, - 86, 41, 86, 86, 46, 48, 86, 86, 86, 86, - 86, 65, 86, 86, 86, 71, 86, 86, 79, 80, - 86, 86, 86, 7, 13, 17, 86, 86, 86, 24, - 86, 86, 86, 86, 38, 86, 86, 54, 86, 86, - 61, 86, 66, 86, 86, 86, 86, 82, 85, 86, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 36, 89, 89, 89, 89, 89, 89, 46, 89, 89, + 89, 53, 89, 89, 89, 89, 64, 65, 89, 89, + 89, 89, 89, 71, 89, 89, 76, 89, 89, 89, + 89, 84, 89, 87, 89, 9, 10, 89, 89, 89, + 89, 89, 89, 21, 89, 89, 89, 28, 89, 33, + 34, 37, 89, 89, 89, 43, 89, 89, 48, 50, + 89, 89, 89, 89, 89, 67, 89, 89, 89, 73, + 75, 89, 89, 82, 83, 89, 89, 89, 7, 14, + 18, 89, 89, 89, 25, 89, 89, 89, 89, 39, - 18, 86, 86, 86, 26, 29, 86, 86, 86, 86, - 86, 86, 67, 68, 86, 86, 86, 86, 86, 86, - 86, 37, 42, 45, 59, 60, 86, 75, 78, 86, - 19, 86, 86, 25, 64, 86, 86, 86, 86, 21, - 22, 12, 86, 86, 86, 86, 23, 0 + 89, 89, 89, 56, 89, 89, 63, 89, 68, 89, + 89, 89, 89, 85, 88, 89, 19, 89, 89, 89, + 27, 30, 89, 89, 89, 89, 89, 89, 89, 69, + 70, 89, 89, 89, 89, 89, 89, 89, 38, 40, + 44, 47, 61, 62, 89, 78, 81, 89, 20, 89, + 89, 26, 66, 89, 89, 89, 89, 22, 23, 13, + 89, 89, 89, 89, 24, 0 } ; static const YY_CHAR yy_ec[256] = @@ -527,115 +529,119 @@ static const YY_CHAR yy_meta[85] = 1, 7, 7, 7 } ; -static const flex_int16_t yy_base[457] = +static const flex_int16_t yy_base[475] = { 0, - 0, 0, 59, 60, 362, 2265, 343, 84, 86, 316, - 315, 2265, 2265, 311, 2265, 2265, 2265, 2265, 2265, 299, - 73, 300, 77, 81, 0, 2265, 79, 274, 81, 277, - 128, 64, 187, 76, 124, 82, 87, 35, 241, 98, - 115, 161, 182, 192, 234, 164, 227, 289, 259, 142, - 296, 170, 239, 236, 202, 2265, 197, 181, 170, 354, - 239, 109, 2265, 228, 223, 212, 209, 2265, 274, 2265, - 276, 331, 112, 0, 0, 2265, 2265, 2265, 2265, 2265, - 2265, 102, 50, 200, 254, 305, 312, 301, 128, 122, - 105, 319, 332, 340, 368, 347, 374, 381, 388, 395, + 0, 0, 59, 60, 283, 2424, 279, 84, 86, 255, + 260, 2424, 2424, 256, 2424, 2424, 2424, 2424, 2424, 244, + 73, 242, 77, 81, 0, 2424, 79, 229, 81, 229, + 128, 64, 187, 76, 124, 94, 157, 34, 241, 68, + 135, 98, 163, 221, 251, 227, 267, 311, 276, 141, + 294, 247, 192, 189, 159, 2424, 155, 153, 151, 369, + 227, 105, 2424, 222, 220, 212, 196, 2424, 111, 2424, + 232, 345, 366, 0, 0, 2424, 2424, 2424, 2424, 2424, + 2424, 94, 49, 306, 327, 338, 369, 355, 346, 118, + 116, 111, 372, 387, 402, 410, 405, 192, 435, 419, - 391, 412, 154, 425, 417, 446, 436, 59, 454, 449, - 505, 458, 472, 462, 478, 498, 510, 270, 273, 527, - 524, 539, 551, 584, 564, 554, 576, 588, 619, 605, - 628, 623, 631, 614, 634, 647, 174, 125, 2265, 121, - 108, 2265, 283, 72, 70, 651, 425, 174, 196, 0, - 269, 656, 641, 430, 482, 660, 63, 57, 671, 718, - 704, 559, 721, 696, 713, 759, 739, 742, 676, 752, - 684, 764, 748, 772, 768, 784, 779, 815, 822, 818, - 829, 834, 808, 849, 690, 724, 855, 837, 843, 858, - 864, 870, 894, 890, 885, 898, 904, 920, 924, 910, + 432, 415, 439, 399, 471, 474, 494, 485, 480, 60, + 499, 504, 517, 535, 529, 508, 548, 551, 557, 216, + 285, 567, 571, 593, 581, 626, 623, 601, 629, 634, + 653, 642, 646, 687, 664, 446, 680, 672, 693, 181, + 136, 2424, 132, 129, 2424, 319, 98, 90, 675, 586, + 103, 119, 0, 196, 696, 710, 706, 443, 526, 700, + 85, 83, 724, 757, 753, 760, 773, 765, 779, 769, + 799, 803, 793, 829, 596, 838, 823, 789, 826, 844, + 832, 860, 864, 847, 856, 874, 895, 887, 904, 890, + 729, 907, 923, 914, 918, 932, 937, 956, 961, 950, - 933, 951, 954, 787, 959, 970, 962, 967, 979, 948, - 973, 1001, 1013, 1021, 938, 2265, 120, 28, 793, 1025, - 1031, 1038, 17, 1035, 1047, 882, 992, 1042, 1055, 1063, - 1067, 1071, 1052, 1086, 1090, 1098, 1007, 1093, 1075, 1121, - 1118, 1082, 1137, 1148, 1143, 1151, 1104, 1165, 1155, 1140, - 1178, 1172, 1181, 1110, 1195, 1198, 1115, 1168, 1206, 1212, - 1203, 1215, 1243, 1232, 1227, 1257, 1248, 1265, 1271, 1184, - 1277, 1254, 1282, 1224, 1260, 1289, 1300, 1306, 1320, 1311, - 1285, 1328, 1337, 1314, 1341, 1347, 1369, 1333, 1350, 1362, - 1375, 1379, 1383, 1387, 1390, 1393, 1409, 1417, 1430, 1434, + 976, 965, 982, 986, 973, 989, 1018, 1023, 796, 992, + 1013, 1039, 1044, 1054, 1047, 1050, 1059, 1073, 1079, 1105, + 1083, 2424, 136, 44, 817, 1101, 1109, 1097, 1076, 38, + 1123, 1142, 946, 1035, 1134, 1145, 1149, 1128, 1157, 1160, + 1163, 1152, 1175, 1167, 1204, 1170, 1214, 1211, 1178, 1233, + 1240, 1236, 1243, 1229, 1182, 1258, 1249, 1226, 1271, 1278, + 1291, 1197, 1281, 1284, 1207, 1253, 1313, 1318, 1324, 1321, + 1327, 1301, 1310, 1343, 1346, 1363, 1383, 1331, 1392, 1340, + 1401, 1395, 1350, 1354, 1370, 1412, 1398, 1407, 1418, 1373, + 1429, 1447, 1415, 1454, 1460, 1466, 1476, 1481, 1425, 1472, - 1365, 1437, 1446, 1449, 1452, 1461, 1403, 1470, 1464, 1486, - 1420, 1490, 1493, 1513, 1496, 1474, 1477, 1532, 1523, 1537, - 1547, 1556, 1501, 1544, 1504, 1561, 1551, 1578, 1582, 1516, - 1567, 1519, 1596, 1541, 1618, 1609, 1622, 1625, 1628, 1631, - 1585, 1614, 1643, 1664, 1589, 1646, 1638, 1649, 1652, 1655, - 1678, 1658, 1669, 1706, 1672, 1675, 1712, 1716, 1729, 1719, - 1726, 1684, 1745, 1748, 1757, 1690, 1752, 1762, 1698, 1733, - 1782, 1776, 1779, 1741, 1769, 1772, 1797, 1804, 1790, 1793, - 1841, 1849, 1812, 1832, 1800, 1844, 1853, 1809, 1861, 1867, - 1820, 1881, 1828, 1874, 1877, 1896, 1910, 1838, 1870, 1916, + 1484, 1491, 1494, 1502, 1514, 1509, 1531, 1542, 1552, 1545, + 1443, 1559, 1523, 1555, 1568, 1573, 1538, 1562, 1578, 1586, + 1582, 1589, 1611, 1604, 1624, 1620, 1596, 1601, 1637, 1640, + 1661, 1664, 1671, 1617, 1667, 1676, 1631, 1685, 1690, 1680, + 1702, 1653, 1715, 1693, 1706, 1699, 1709, 1737, 1740, 1757, + 1766, 1772, 1775, 1720, 1760, 1763, 1805, 1727, 1809, 1730, + 1744, 1769, 1798, 1795, 1822, 1786, 1839, 1834, 1790, 1801, + 1849, 1856, 1862, 1825, 1859, 1818, 1890, 1896, 1899, 1828, + 1846, 1908, 1918, 1853, 1868, 1921, 1912, 1926, 1877, 1882, + 1905, 1939, 1936, 1945, 1931, 1950, 1978, 1966, 1985, 1958, - 1888, 1923, 1937, 1931, 1901, 1904, 1941, 1944, 1951, 1965, - 1957, 1978, 1960, 1968, 1981, 1987, 1992, 2008, 2012, 2020, - 2025, 1995, 2003, 2015, 2028, 2031, 2044, 2035, 2038, 2070, - 2041, 2060, 2092, 2052, 2055, 2101, 2111, 2118, 2105, 2063, - 2125, 2073, 2137, 2141, 2133, 2121, 2077, 2265, 2225, 2232, - 2235, 2238, 2245, 2252, 2256, 2259 + 1995, 1990, 2000, 1961, 2007, 2014, 1973, 2023, 2003, 2019, + 2030, 2033, 2040, 2026, 2036, 2070, 2043, 2054, 2099, 2093, + 2049, 2057, 2102, 2106, 2112, 2096, 2120, 2130, 2138, 2065, + 2083, 2123, 2141, 2160, 2155, 2185, 2182, 2188, 2126, 2147, + 2150, 2166, 2169, 2172, 2191, 2175, 2178, 2246, 2195, 2235, + 2243, 2200, 2203, 2249, 2261, 2264, 2267, 2213, 2270, 2216, + 2289, 2281, 2255, 2300, 2219, 2424, 2384, 2391, 2394, 2397, + 2404, 2411, 2415, 2418 } ; -static const flex_int16_t yy_def[457] = +static const flex_int16_t yy_def[475] = { 0, - 448, 1, 1, 1, 448, 448, 448, 448, 448, 448, - 449, 448, 448, 450, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 451, 448, 448, 448, 448, 448, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 453, 454, 448, 448, 448, 448, 448, 452, - 448, 448, 448, 449, 448, 450, 448, 448, 448, 448, - 448, 448, 448, 455, 451, 448, 448, 448, 448, 448, - 448, 448, 452, 452, 452, 452, 452, 452, 448, 448, - 448, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 466, 1, 1, 1, 466, 466, 466, 466, 466, 466, + 467, 466, 466, 468, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 469, 466, 466, 466, 466, 466, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 471, 472, 466, 466, 466, 466, 466, 35, + 466, 466, 466, 467, 466, 468, 466, 466, 466, 466, + 466, 466, 466, 473, 469, 466, 466, 466, 466, 466, + 466, 466, 470, 470, 470, 470, 470, 470, 470, 466, + 466, 466, 470, 470, 470, 470, 470, 470, 470, 470, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 456, 453, 448, 454, - 448, 448, 452, 448, 448, 452, 448, 448, 448, 455, - 448, 452, 452, 452, 452, 452, 448, 448, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 474, + 471, 466, 472, 466, 466, 470, 466, 466, 470, 466, + 466, 466, 473, 466, 470, 470, 470, 470, 470, 470, + 466, 466, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 448, 456, 448, 452, 452, - 452, 452, 448, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 466, 474, 466, 470, 470, 470, 470, 470, 466, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 0, 448, 448, - 448, 448, 448, 448, 448, 448 + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 470, 470, 470, 470, 0, 466, 466, 466, 466, + 466, 466, 466, 466 } ; -static const flex_int16_t yy_nxt[2350] = +static const flex_int16_t yy_nxt[2509] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -646,258 +652,276 @@ static const flex_int16_t yy_nxt[2350] = 37, 38, 39, 40, 41, 42, 43, 44, 45, 38, 46, 47, 48, 49, 50, 51, 52, 38, 55, 56, 6, 57, 58, 59, 60, 60, 62, 62, 62, 62, - 69, 69, 71, 92, 72, 72, 71, 83, 72, 72, + 69, 69, 71, 93, 72, 72, 71, 115, 72, 72, - 76, 77, 78, 80, 81, 98, 73, 104, 143, 99, - 73, 62, 62, 60, 60, 105, 89, 90, 91, 151, - 151, 106, 92, 107, 148, 74, 148, 113, 216, 149, - 149, 89, 90, 91, 98, 73, 104, 223, 99, 73, - 89, 90, 91, 83, 105, 89, 90, 91, 114, 106, - 218, 107, 143, 74, 84, 85, 113, 89, 90, 91, - 100, 140, 101, 89, 90, 91, 86, 102, 89, 90, - 91, 87, 103, 88, 141, 134, 139, 114, 137, 89, - 90, 91, 216, 84, 85, 158, 115, 173, 100, 123, - 101, 149, 149, 124, 86, 102, 89, 90, 91, 87, + 76, 77, 78, 80, 81, 99, 73, 62, 62, 100, + 73, 154, 154, 60, 60, 90, 91, 92, 83, 105, + 152, 152, 93, 117, 146, 74, 115, 106, 69, 69, + 90, 91, 92, 107, 99, 73, 152, 152, 100, 73, + 73, 90, 91, 92, 222, 90, 91, 92, 105, 90, + 91, 92, 117, 74, 84, 85, 106, 90, 91, 92, + 101, 107, 102, 230, 86, 83, 87, 103, 116, 73, + 224, 88, 104, 89, 137, 90, 91, 92, 146, 90, + 91, 92, 143, 84, 85, 144, 108, 142, 101, 222, + 102, 162, 86, 109, 87, 103, 161, 116, 83, 88, - 103, 88, 157, 125, 134, 89, 90, 91, 83, 89, - 90, 91, 93, 149, 149, 115, 173, 66, 123, 94, - 67, 116, 124, 89, 90, 91, 95, 117, 64, 96, - 118, 125, 97, 65, 119, 89, 90, 91, 120, 152, - 61, 93, 89, 90, 91, 89, 90, 91, 94, 116, - 145, 89, 90, 91, 95, 117, 126, 96, 118, 121, - 97, 144, 119, 89, 90, 91, 120, 152, 89, 90, - 91, 108, 109, 89, 90, 91, 122, 143, 110, 111, - 142, 89, 90, 91, 112, 126, 151, 151, 121, 141, - 139, 69, 69, 147, 147, 82, 79, 131, 153, 132, + 104, 89, 118, 137, 66, 90, 91, 92, 119, 90, + 91, 92, 94, 154, 154, 108, 90, 91, 92, 95, + 67, 109, 90, 91, 92, 64, 96, 65, 61, 97, + 118, 148, 98, 147, 169, 146, 119, 145, 90, 91, + 92, 94, 144, 142, 90, 91, 92, 82, 95, 150, + 150, 79, 125, 70, 96, 140, 126, 97, 68, 120, + 98, 73, 169, 121, 67, 65, 127, 122, 90, 91, + 92, 110, 111, 90, 91, 92, 123, 63, 112, 113, + 61, 125, 466, 466, 114, 126, 466, 120, 466, 466, + 73, 121, 466, 124, 127, 122, 128, 90, 91, 92, - 108, 109, 133, 73, 122, 73, 110, 111, 89, 90, - 91, 70, 112, 68, 127, 89, 90, 91, 128, 67, - 65, 129, 89, 90, 91, 131, 153, 132, 135, 136, - 133, 130, 73, 154, 73, 89, 90, 91, 63, 155, - 89, 90, 91, 127, 61, 156, 71, 128, 72, 72, - 129, 89, 90, 91, 89, 90, 91, 135, 136, 130, - 73, 448, 154, 159, 89, 90, 91, 448, 155, 161, - 89, 90, 91, 156, 448, 160, 164, 89, 90, 91, - 84, 85, 89, 90, 91, 448, 89, 90, 91, 73, - 448, 159, 146, 89, 90, 91, 448, 87, 161, 88, + 110, 111, 90, 91, 92, 123, 112, 113, 90, 91, + 92, 129, 114, 466, 134, 466, 135, 466, 466, 136, + 466, 124, 90, 91, 92, 128, 138, 139, 90, 91, + 92, 466, 90, 91, 92, 466, 130, 466, 466, 129, + 131, 466, 134, 132, 135, 155, 466, 136, 90, 91, + 92, 466, 466, 133, 466, 138, 139, 90, 91, 92, + 71, 466, 72, 72, 466, 130, 90, 91, 92, 131, + 466, 156, 132, 155, 73, 90, 91, 92, 151, 466, + 151, 133, 159, 152, 152, 157, 466, 90, 91, 92, + 160, 466, 90, 91, 92, 84, 85, 158, 466, 156, - 89, 90, 91, 160, 162, 164, 163, 448, 448, 84, - 85, 166, 448, 89, 90, 91, 165, 167, 448, 171, - 146, 89, 90, 91, 168, 87, 448, 88, 89, 90, - 91, 169, 162, 448, 163, 89, 90, 91, 170, 172, - 166, 448, 147, 147, 165, 167, 448, 448, 171, 89, - 90, 91, 168, 176, 73, 89, 90, 91, 174, 169, - 448, 175, 89, 90, 91, 448, 170, 448, 172, 89, - 90, 91, 89, 90, 91, 179, 89, 90, 91, 448, - 448, 176, 177, 73, 448, 448, 181, 174, 178, 175, - 448, 448, 180, 89, 90, 91, 185, 187, 89, 90, + 90, 91, 92, 73, 466, 86, 466, 149, 90, 91, + 92, 159, 88, 157, 89, 466, 163, 83, 160, 90, + 91, 92, 466, 466, 84, 85, 158, 90, 91, 92, + 164, 165, 177, 86, 168, 149, 90, 91, 92, 466, + 88, 466, 89, 175, 163, 83, 166, 466, 167, 466, + 90, 91, 92, 90, 91, 92, 466, 466, 164, 466, + 165, 177, 173, 168, 466, 170, 176, 466, 90, 91, + 92, 171, 175, 466, 166, 174, 167, 466, 172, 218, + 90, 91, 92, 90, 91, 92, 90, 91, 92, 466, + 173, 90, 91, 92, 170, 176, 90, 91, 92, 171, - 91, 448, 448, 179, 448, 448, 89, 90, 91, 448, - 177, 89, 90, 91, 181, 448, 178, 89, 90, 91, - 180, 186, 188, 448, 185, 187, 448, 89, 90, 91, - 89, 90, 91, 182, 448, 89, 90, 91, 183, 89, - 90, 91, 189, 89, 90, 91, 190, 448, 184, 186, - 188, 448, 448, 89, 90, 91, 191, 448, 448, 89, - 90, 91, 182, 89, 90, 91, 192, 183, 193, 448, - 189, 448, 194, 448, 190, 448, 184, 448, 448, 89, - 90, 91, 448, 448, 195, 191, 89, 90, 91, 196, - 203, 89, 90, 91, 192, 229, 448, 193, 204, 448, + 90, 91, 92, 174, 178, 466, 172, 179, 218, 466, + 180, 466, 466, 90, 91, 92, 90, 91, 92, 184, + 90, 91, 92, 183, 90, 91, 92, 90, 91, 92, + 181, 466, 466, 178, 466, 179, 182, 185, 180, 466, + 466, 186, 466, 192, 466, 187, 466, 184, 466, 466, + 188, 183, 90, 91, 92, 90, 91, 92, 181, 466, + 189, 90, 91, 92, 182, 185, 90, 91, 92, 186, + 466, 192, 466, 190, 187, 90, 91, 92, 191, 188, + 90, 91, 92, 466, 466, 90, 91, 92, 189, 90, + 91, 92, 193, 195, 466, 194, 196, 466, 90, 91, - 201, 194, 205, 448, 448, 89, 90, 91, 89, 90, - 91, 202, 448, 195, 197, 198, 448, 196, 203, 448, - 89, 90, 91, 229, 199, 206, 204, 200, 201, 448, - 448, 205, 89, 90, 91, 89, 90, 91, 448, 202, - 89, 90, 91, 197, 198, 89, 90, 91, 207, 448, - 208, 211, 199, 206, 209, 200, 213, 89, 90, 91, - 448, 210, 448, 214, 212, 89, 90, 91, 448, 89, - 90, 91, 448, 448, 221, 448, 448, 207, 208, 219, - 211, 448, 448, 209, 213, 448, 89, 90, 91, 448, - 210, 215, 214, 212, 448, 89, 90, 91, 220, 222, + 92, 190, 466, 150, 150, 466, 191, 90, 91, 92, + 90, 91, 92, 197, 200, 73, 90, 91, 92, 201, + 193, 195, 198, 194, 466, 196, 199, 466, 466, 90, + 91, 92, 90, 91, 92, 466, 466, 208, 90, 91, + 92, 197, 466, 200, 73, 209, 466, 201, 90, 91, + 92, 198, 90, 91, 92, 199, 202, 203, 466, 206, + 211, 466, 90, 91, 92, 208, 204, 466, 210, 205, + 207, 213, 466, 209, 90, 91, 92, 90, 91, 92, + 466, 466, 90, 91, 92, 202, 203, 206, 466, 211, + 212, 214, 217, 466, 204, 466, 210, 205, 207, 466, - 89, 90, 91, 221, 89, 90, 91, 448, 219, 89, - 90, 91, 89, 90, 91, 89, 90, 91, 224, 215, - 238, 232, 89, 90, 91, 448, 220, 222, 89, 90, - 91, 228, 89, 90, 91, 253, 448, 89, 90, 91, - 448, 89, 90, 91, 448, 225, 224, 226, 238, 448, - 232, 230, 89, 90, 91, 233, 448, 89, 90, 91, - 228, 448, 227, 253, 231, 89, 90, 91, 236, 237, - 448, 89, 90, 91, 225, 448, 226, 89, 90, 91, - 230, 239, 448, 233, 234, 89, 90, 91, 235, 240, - 227, 241, 231, 448, 89, 90, 91, 236, 237, 89, + 213, 220, 466, 225, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 215, 466, 90, 91, 92, 212, 214, + 216, 217, 219, 90, 91, 92, 466, 90, 91, 92, + 220, 228, 225, 466, 90, 91, 92, 221, 226, 229, + 466, 466, 215, 227, 466, 90, 91, 92, 466, 216, + 219, 466, 466, 90, 91, 92, 90, 91, 92, 466, + 228, 90, 91, 92, 466, 221, 226, 229, 90, 91, + 92, 231, 227, 466, 90, 91, 92, 90, 91, 92, + 235, 90, 91, 92, 232, 466, 233, 90, 91, 92, + 239, 90, 91, 92, 241, 466, 236, 466, 242, 231, - 90, 91, 89, 90, 91, 89, 90, 91, 242, 448, - 239, 243, 448, 234, 448, 245, 448, 235, 240, 241, - 89, 90, 91, 89, 90, 91, 448, 448, 244, 89, - 90, 91, 448, 89, 90, 91, 242, 448, 448, 243, - 89, 90, 91, 245, 246, 89, 90, 91, 247, 89, - 90, 91, 251, 89, 90, 91, 244, 248, 249, 448, - 89, 90, 91, 250, 255, 89, 90, 91, 89, 90, - 91, 448, 448, 246, 89, 90, 91, 247, 252, 448, - 251, 256, 448, 448, 254, 248, 448, 249, 448, 89, - 90, 91, 250, 255, 257, 448, 89, 90, 91, 89, + 466, 234, 466, 237, 466, 90, 91, 92, 466, 235, + 90, 91, 92, 232, 466, 233, 238, 466, 466, 239, + 466, 240, 466, 241, 236, 249, 466, 242, 243, 234, + 244, 466, 237, 466, 90, 91, 92, 245, 90, 91, + 92, 90, 91, 92, 238, 466, 90, 91, 92, 240, + 90, 91, 92, 249, 90, 91, 92, 243, 246, 244, + 90, 91, 92, 247, 466, 245, 248, 466, 252, 250, + 90, 91, 92, 255, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 466, 90, 91, 92, 246, 251, 253, + 466, 466, 247, 254, 248, 256, 252, 250, 90, 91, - 90, 91, 448, 89, 90, 91, 258, 252, 448, 256, - 89, 90, 91, 254, 259, 89, 90, 91, 89, 90, - 91, 260, 257, 448, 89, 90, 91, 261, 262, 263, - 89, 90, 91, 264, 258, 448, 89, 90, 91, 89, - 90, 91, 259, 448, 448, 89, 90, 91, 448, 265, - 260, 89, 90, 91, 267, 261, 262, 448, 263, 448, - 266, 448, 264, 89, 90, 91, 89, 90, 91, 268, - 283, 89, 90, 91, 448, 89, 90, 91, 265, 89, - 90, 91, 267, 271, 269, 89, 90, 91, 266, 277, - 448, 89, 90, 91, 270, 272, 275, 268, 278, 283, + 92, 466, 255, 257, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 251, 466, 253, 90, + 91, 92, 254, 256, 258, 90, 91, 92, 90, 91, + 92, 259, 257, 260, 466, 261, 262, 90, 91, 92, + 466, 90, 91, 92, 466, 90, 91, 92, 466, 466, + 263, 466, 264, 258, 265, 90, 91, 92, 466, 259, + 466, 466, 260, 261, 466, 262, 466, 466, 90, 91, + 92, 90, 91, 92, 266, 466, 90, 91, 92, 263, + 264, 267, 265, 268, 466, 90, 91, 92, 90, 91, + 92, 466, 466, 270, 272, 90, 91, 92, 269, 90, - 274, 89, 90, 91, 448, 89, 90, 91, 448, 448, - 273, 448, 271, 269, 89, 90, 91, 277, 276, 89, - 90, 91, 270, 272, 448, 275, 448, 278, 274, 89, - 90, 91, 89, 90, 91, 89, 90, 91, 273, 279, - 89, 90, 91, 89, 90, 91, 276, 448, 89, 90, - 91, 89, 90, 91, 89, 90, 91, 280, 448, 281, - 89, 90, 91, 282, 287, 448, 448, 279, 448, 284, - 285, 286, 288, 89, 90, 91, 448, 289, 448, 448, - 290, 294, 89, 90, 91, 280, 448, 281, 89, 90, - 91, 282, 448, 287, 89, 90, 91, 284, 285, 291, + 91, 92, 266, 466, 90, 91, 92, 271, 466, 267, + 466, 273, 268, 90, 91, 92, 466, 275, 90, 91, + 92, 270, 274, 272, 466, 276, 269, 90, 91, 92, + 466, 90, 91, 92, 280, 466, 271, 90, 91, 92, + 273, 466, 90, 91, 92, 275, 90, 91, 92, 281, + 274, 277, 279, 276, 90, 91, 92, 90, 91, 92, + 466, 278, 280, 90, 91, 92, 466, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 466, 281, 466, 282, + 277, 279, 283, 284, 287, 466, 285, 466, 466, 278, + 466, 286, 466, 466, 90, 91, 92, 466, 466, 90, - 286, 288, 89, 90, 91, 289, 89, 90, 91, 290, - 294, 292, 89, 90, 91, 293, 89, 90, 91, 89, - 90, 91, 448, 89, 90, 91, 298, 291, 89, 90, - 91, 295, 296, 89, 90, 91, 89, 90, 91, 292, - 448, 448, 297, 293, 89, 90, 91, 448, 89, 90, - 91, 448, 89, 90, 91, 298, 89, 90, 91, 295, - 296, 299, 300, 89, 90, 91, 301, 89, 90, 91, - 297, 89, 90, 91, 89, 90, 91, 302, 448, 89, - 90, 91, 303, 306, 304, 89, 90, 91, 307, 299, - 300, 89, 90, 91, 448, 301, 89, 90, 91, 89, + 91, 92, 466, 466, 90, 91, 92, 282, 466, 296, + 283, 288, 284, 287, 285, 292, 90, 91, 92, 286, + 90, 91, 92, 289, 466, 90, 91, 92, 90, 91, + 92, 90, 91, 92, 466, 90, 91, 92, 296, 288, + 90, 91, 92, 290, 292, 293, 295, 291, 294, 466, + 466, 289, 297, 466, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 466, 90, 91, 92, 298, 466, 299, + 300, 290, 302, 293, 295, 291, 294, 466, 90, 91, + 92, 297, 90, 91, 92, 301, 90, 91, 92, 304, + 90, 91, 92, 466, 306, 466, 298, 299, 466, 300, - 90, 91, 89, 90, 91, 448, 302, 305, 448, 448, - 303, 308, 306, 304, 309, 448, 307, 310, 89, 90, - 91, 89, 90, 91, 89, 90, 91, 311, 315, 89, - 90, 91, 89, 90, 91, 305, 89, 90, 91, 313, - 308, 314, 309, 312, 316, 310, 89, 90, 91, 89, - 90, 91, 448, 89, 90, 91, 311, 315, 448, 89, - 90, 91, 89, 90, 91, 89, 90, 91, 313, 448, - 314, 312, 317, 316, 318, 319, 89, 90, 91, 89, - 90, 91, 320, 325, 89, 90, 91, 89, 90, 91, - 321, 322, 448, 89, 90, 91, 89, 90, 91, 323, + 302, 303, 466, 466, 90, 91, 92, 466, 305, 90, + 91, 92, 466, 301, 466, 90, 91, 92, 304, 307, + 466, 466, 306, 90, 91, 92, 90, 91, 92, 303, + 90, 91, 92, 90, 91, 92, 305, 308, 90, 91, + 92, 90, 91, 92, 90, 91, 92, 307, 90, 91, + 92, 90, 91, 92, 309, 310, 90, 91, 92, 90, + 91, 92, 311, 90, 91, 92, 308, 466, 466, 312, + 466, 315, 466, 466, 318, 313, 314, 317, 90, 91, + 92, 466, 309, 310, 466, 90, 91, 92, 90, 91, + 92, 311, 90, 91, 92, 90, 91, 92, 312, 315, - 448, 317, 318, 319, 324, 89, 90, 91, 89, 90, - 91, 320, 325, 89, 90, 91, 448, 448, 321, 448, - 322, 326, 448, 448, 89, 90, 91, 448, 323, 89, - 90, 91, 448, 324, 327, 89, 90, 91, 89, 90, - 91, 89, 90, 91, 448, 328, 89, 90, 91, 326, - 329, 330, 89, 90, 91, 448, 331, 332, 89, 90, - 91, 337, 327, 89, 90, 91, 89, 90, 91, 448, - 89, 90, 91, 328, 448, 448, 333, 448, 329, 334, - 330, 89, 90, 91, 331, 335, 332, 89, 90, 91, - 337, 448, 89, 90, 91, 89, 90, 91, 336, 448, + 316, 466, 318, 313, 319, 314, 317, 90, 91, 92, + 90, 91, 92, 322, 90, 91, 92, 90, 91, 92, + 320, 90, 91, 92, 90, 91, 92, 321, 316, 323, + 90, 91, 92, 319, 90, 91, 92, 466, 466, 90, + 91, 92, 322, 329, 466, 466, 324, 325, 320, 326, + 327, 466, 90, 91, 92, 321, 328, 323, 330, 90, + 91, 92, 90, 91, 92, 90, 91, 92, 331, 336, + 466, 329, 90, 91, 92, 324, 325, 466, 326, 327, + 466, 466, 90, 91, 92, 328, 330, 466, 332, 333, + 466, 90, 91, 92, 90, 91, 92, 331, 336, 90, - 448, 89, 90, 91, 333, 448, 338, 334, 339, 89, - 90, 91, 341, 335, 89, 90, 91, 448, 89, 90, - 91, 340, 89, 90, 91, 342, 343, 336, 89, 90, - 91, 89, 90, 91, 338, 344, 448, 339, 345, 448, - 448, 341, 448, 89, 90, 91, 89, 90, 91, 340, - 89, 90, 91, 342, 343, 346, 89, 90, 91, 347, - 89, 90, 91, 344, 89, 90, 91, 345, 89, 90, - 91, 89, 90, 91, 89, 90, 91, 348, 448, 349, - 351, 352, 448, 346, 89, 90, 91, 448, 347, 448, - 89, 90, 91, 350, 353, 354, 448, 448, 89, 90, + 91, 92, 90, 91, 92, 90, 91, 92, 90, 91, + 92, 334, 90, 91, 92, 339, 332, 466, 333, 335, + 466, 90, 91, 92, 90, 91, 92, 90, 91, 92, + 337, 90, 91, 92, 338, 90, 91, 92, 342, 466, + 334, 466, 341, 339, 90, 91, 92, 466, 335, 466, + 466, 90, 91, 92, 90, 91, 92, 340, 344, 337, + 466, 466, 338, 343, 90, 91, 92, 342, 466, 466, + 341, 466, 466, 90, 91, 92, 90, 91, 92, 90, + 91, 92, 90, 91, 92, 340, 345, 344, 90, 91, + 92, 343, 346, 90, 91, 92, 90, 91, 92, 90, - 91, 89, 90, 91, 448, 348, 448, 349, 355, 351, - 352, 89, 90, 91, 448, 89, 90, 91, 89, 90, - 91, 350, 356, 353, 354, 448, 357, 89, 90, 91, - 89, 90, 91, 89, 90, 91, 355, 358, 360, 448, - 448, 359, 89, 90, 91, 89, 90, 91, 448, 448, - 356, 89, 90, 91, 357, 89, 90, 91, 89, 90, - 91, 361, 448, 362, 363, 358, 360, 89, 90, 91, - 359, 89, 90, 91, 89, 90, 91, 89, 90, 91, - 364, 365, 89, 90, 91, 89, 90, 91, 366, 368, - 361, 362, 371, 363, 89, 90, 91, 89, 90, 91, + 91, 92, 466, 347, 348, 349, 90, 91, 92, 350, + 90, 91, 92, 466, 345, 466, 351, 352, 466, 466, + 346, 466, 466, 354, 90, 91, 92, 466, 90, 91, + 92, 347, 348, 353, 349, 90, 91, 92, 350, 466, + 355, 90, 91, 92, 351, 466, 352, 90, 91, 92, + 356, 357, 354, 90, 91, 92, 466, 90, 91, 92, + 358, 353, 90, 91, 92, 90, 91, 92, 355, 466, + 363, 367, 90, 91, 92, 90, 91, 92, 356, 357, + 359, 360, 466, 90, 91, 92, 364, 466, 361, 358, + 90, 91, 92, 365, 466, 90, 91, 92, 363, 466, - 89, 90, 91, 367, 89, 90, 91, 369, 448, 364, - 365, 370, 448, 89, 90, 91, 366, 368, 89, 90, - 91, 371, 89, 90, 91, 89, 90, 91, 89, 90, - 91, 367, 89, 90, 91, 448, 369, 89, 90, 91, - 370, 372, 89, 90, 91, 373, 448, 374, 89, 90, - 91, 375, 448, 448, 376, 377, 378, 448, 379, 89, - 90, 91, 448, 89, 90, 91, 89, 90, 91, 372, - 89, 90, 91, 383, 373, 374, 448, 89, 90, 91, - 375, 448, 448, 376, 377, 378, 379, 380, 384, 381, - 89, 90, 91, 382, 386, 89, 90, 91, 448, 89, + 367, 362, 366, 368, 90, 91, 92, 466, 359, 466, + 360, 466, 90, 91, 92, 364, 361, 466, 370, 90, + 91, 92, 365, 90, 91, 92, 90, 91, 92, 362, + 369, 366, 368, 90, 91, 92, 90, 91, 92, 466, + 90, 91, 92, 90, 91, 92, 370, 371, 372, 90, + 91, 92, 373, 466, 90, 91, 92, 466, 369, 90, + 91, 92, 374, 90, 91, 92, 375, 90, 91, 92, + 90, 91, 92, 466, 466, 371, 372, 90, 91, 92, + 376, 373, 90, 91, 92, 90, 91, 92, 377, 466, + 374, 466, 90, 91, 92, 375, 379, 378, 90, 91, - 90, 91, 383, 89, 90, 91, 89, 90, 91, 89, - 90, 91, 89, 90, 91, 380, 385, 384, 381, 89, - 90, 91, 382, 386, 89, 90, 91, 89, 90, 91, - 89, 90, 91, 89, 90, 91, 89, 90, 91, 89, - 90, 91, 387, 448, 385, 89, 90, 91, 388, 389, - 89, 90, 91, 89, 90, 91, 89, 90, 91, 89, - 90, 91, 390, 448, 392, 89, 90, 91, 391, 448, - 387, 89, 90, 91, 393, 394, 388, 396, 389, 89, - 90, 91, 448, 448, 395, 448, 448, 89, 90, 91, - 397, 390, 392, 89, 90, 91, 391, 89, 90, 91, + 92, 90, 91, 92, 381, 90, 91, 92, 376, 384, + 466, 380, 90, 91, 92, 466, 466, 377, 90, 91, + 92, 90, 91, 92, 466, 379, 378, 382, 383, 466, + 466, 385, 466, 381, 90, 91, 92, 466, 384, 380, + 386, 466, 90, 91, 92, 90, 91, 92, 90, 91, + 92, 387, 90, 91, 92, 382, 383, 90, 91, 92, + 385, 90, 91, 92, 388, 466, 90, 91, 92, 386, + 466, 90, 91, 92, 90, 91, 92, 466, 389, 387, + 90, 91, 92, 90, 91, 92, 390, 90, 91, 92, + 90, 91, 92, 388, 466, 391, 90, 91, 92, 392, - 89, 90, 91, 393, 394, 448, 396, 89, 90, 91, - 89, 90, 91, 395, 89, 90, 91, 448, 398, 397, - 399, 400, 89, 90, 91, 448, 89, 90, 91, 89, - 90, 91, 448, 89, 90, 91, 448, 402, 89, 90, - 91, 401, 403, 89, 90, 91, 398, 448, 399, 400, - 89, 90, 91, 89, 90, 91, 406, 89, 90, 91, - 89, 90, 91, 89, 90, 91, 402, 404, 448, 401, - 407, 89, 90, 91, 89, 90, 91, 405, 89, 90, - 91, 89, 90, 91, 406, 89, 90, 91, 408, 409, - 89, 90, 91, 89, 90, 91, 404, 448, 407, 448, + 393, 90, 91, 92, 394, 466, 389, 395, 90, 91, + 92, 90, 91, 92, 466, 390, 466, 466, 90, 91, + 92, 90, 91, 92, 391, 90, 91, 92, 392, 393, + 396, 399, 394, 400, 397, 395, 398, 466, 90, 91, + 92, 90, 91, 92, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 90, 91, 92, 396, + 399, 400, 466, 397, 402, 398, 401, 90, 91, 92, + 403, 90, 91, 92, 407, 466, 90, 91, 92, 90, + 91, 92, 90, 91, 92, 404, 90, 91, 92, 405, + 90, 91, 92, 402, 401, 406, 466, 408, 403, 90, - 410, 89, 90, 91, 448, 411, 405, 448, 412, 89, - 90, 91, 414, 89, 90, 91, 408, 409, 413, 89, - 90, 91, 89, 90, 91, 89, 90, 91, 410, 448, - 89, 90, 91, 411, 89, 90, 91, 412, 415, 416, - 414, 448, 89, 90, 91, 417, 413, 448, 89, 90, - 91, 89, 90, 91, 448, 89, 90, 91, 89, 90, - 91, 418, 89, 90, 91, 419, 415, 421, 416, 89, - 90, 91, 422, 423, 417, 448, 448, 89, 90, 91, - 448, 420, 89, 90, 91, 89, 90, 91, 426, 418, - 448, 89, 90, 91, 419, 421, 448, 89, 90, 91, + 91, 92, 407, 90, 91, 92, 90, 91, 92, 90, + 91, 92, 466, 404, 466, 90, 91, 92, 405, 409, + 90, 91, 92, 410, 406, 408, 411, 90, 91, 92, + 90, 91, 92, 412, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 413, 466, 409, 90, + 91, 92, 410, 466, 466, 411, 415, 414, 90, 91, + 92, 466, 412, 90, 91, 92, 466, 466, 416, 418, + 466, 90, 91, 92, 466, 413, 420, 90, 91, 92, + 90, 91, 92, 417, 415, 414, 90, 91, 92, 90, + 91, 92, 466, 90, 91, 92, 416, 419, 418, 90, - 424, 422, 423, 425, 89, 90, 91, 427, 448, 420, - 448, 448, 89, 90, 91, 429, 448, 426, 89, 90, - 91, 448, 89, 90, 91, 89, 90, 91, 424, 430, - 428, 425, 89, 90, 91, 448, 427, 432, 89, 90, - 91, 89, 90, 91, 429, 448, 89, 90, 91, 89, - 90, 91, 431, 433, 434, 448, 448, 430, 428, 89, - 90, 91, 89, 90, 91, 448, 432, 448, 89, 90, - 91, 448, 448, 89, 90, 91, 89, 90, 91, 448, - 431, 448, 433, 434, 89, 90, 91, 435, 448, 89, - 90, 91, 448, 89, 90, 91, 89, 90, 91, 436, + 91, 92, 90, 91, 92, 420, 421, 90, 91, 92, + 422, 417, 90, 91, 92, 466, 466, 90, 91, 92, + 90, 91, 92, 423, 424, 466, 90, 91, 92, 466, + 466, 90, 91, 92, 425, 421, 426, 466, 422, 90, + 91, 92, 90, 91, 92, 466, 427, 90, 91, 92, + 429, 423, 428, 424, 90, 91, 92, 466, 466, 90, + 91, 92, 425, 430, 426, 431, 90, 91, 92, 433, + 466, 90, 91, 92, 427, 432, 90, 91, 92, 429, + 428, 90, 91, 92, 90, 91, 92, 466, 90, 91, + 92, 430, 435, 431, 466, 90, 91, 92, 433, 434, - 448, 89, 90, 91, 437, 448, 89, 90, 91, 89, - 90, 91, 89, 90, 91, 435, 89, 90, 91, 89, - 90, 91, 89, 90, 91, 89, 90, 91, 436, 438, - 448, 448, 437, 89, 90, 91, 89, 90, 91, 439, - 440, 89, 90, 91, 89, 90, 91, 441, 448, 442, - 448, 89, 90, 91, 89, 90, 91, 438, 89, 90, - 91, 447, 448, 448, 448, 448, 445, 439, 443, 440, - 446, 448, 448, 89, 90, 91, 441, 442, 448, 448, - 448, 444, 89, 90, 91, 448, 89, 90, 91, 447, - 448, 448, 89, 90, 91, 445, 443, 448, 446, 89, + 90, 91, 92, 432, 90, 91, 92, 90, 91, 92, + 466, 90, 91, 92, 90, 91, 92, 90, 91, 92, + 435, 90, 91, 92, 90, 91, 92, 436, 434, 438, + 90, 91, 92, 439, 440, 90, 91, 92, 90, 91, + 92, 441, 466, 437, 466, 442, 90, 91, 92, 466, + 466, 90, 91, 92, 466, 466, 436, 438, 443, 466, + 466, 444, 439, 440, 90, 91, 92, 445, 466, 447, + 441, 437, 446, 442, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 443, 90, 91, 92, + 444, 466, 466, 90, 91, 92, 445, 448, 447, 449, - 90, 91, 89, 90, 91, 448, 89, 90, 91, 444, - 448, 448, 448, 448, 89, 90, 91, 448, 89, 90, - 91, 448, 89, 90, 91, 64, 448, 64, 64, 64, - 64, 64, 66, 448, 66, 66, 66, 66, 66, 75, - 75, 83, 83, 83, 83, 138, 448, 138, 138, 138, - 138, 138, 140, 448, 140, 140, 140, 140, 140, 150, - 150, 217, 217, 217, 5, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 446, 90, 91, 92, 90, 91, 92, 90, 91, 92, + 450, 90, 91, 92, 466, 451, 466, 452, 466, 90, + 91, 92, 90, 91, 92, 448, 466, 449, 90, 91, + 92, 90, 91, 92, 453, 466, 90, 91, 92, 450, + 466, 90, 91, 92, 451, 466, 452, 90, 91, 92, + 90, 91, 92, 90, 91, 92, 90, 91, 92, 90, + 91, 92, 453, 90, 91, 92, 90, 91, 92, 90, + 91, 92, 90, 91, 92, 454, 90, 91, 92, 455, + 456, 90, 91, 92, 90, 91, 92, 457, 466, 466, + 458, 466, 464, 459, 90, 91, 92, 90, 91, 92, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448 + 90, 91, 92, 466, 454, 466, 463, 455, 456, 466, + 466, 460, 466, 461, 466, 457, 90, 91, 92, 458, + 464, 466, 459, 466, 90, 91, 92, 90, 91, 92, + 90, 91, 92, 462, 466, 463, 90, 91, 92, 460, + 465, 461, 90, 91, 92, 90, 91, 92, 90, 91, + 92, 90, 91, 92, 466, 466, 466, 466, 466, 466, + 466, 462, 90, 91, 92, 466, 466, 466, 465, 466, + 90, 91, 92, 466, 466, 466, 466, 466, 466, 466, + 466, 90, 91, 92, 64, 466, 64, 64, 64, 64, + 64, 66, 466, 66, 66, 66, 66, 66, 75, 75, + + 83, 83, 83, 83, 141, 466, 141, 141, 141, 141, + 141, 143, 466, 143, 143, 143, 143, 143, 153, 153, + 223, 223, 223, 5, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + + 466, 466, 466, 466, 466, 466, 466, 466 } ; -static const flex_int16_t yy_chk[2350] = +static const flex_int16_t yy_chk[2509] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -908,258 +932,276 @@ static const flex_int16_t yy_chk[2350] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 8, 8, 9, 9, - 21, 21, 23, 32, 23, 23, 24, 223, 24, 24, + 21, 21, 23, 32, 23, 23, 24, 40, 24, 24, - 27, 27, 27, 29, 29, 34, 23, 36, 218, 34, - 24, 62, 62, 3, 4, 36, 38, 38, 38, 82, - 82, 36, 32, 37, 73, 23, 73, 40, 217, 73, - 73, 83, 83, 83, 34, 23, 36, 158, 34, 24, - 108, 108, 108, 157, 36, 32, 32, 32, 41, 36, - 145, 37, 144, 23, 31, 31, 40, 34, 34, 34, - 35, 141, 35, 36, 36, 36, 31, 35, 37, 37, - 37, 31, 35, 31, 140, 50, 138, 41, 52, 40, - 40, 40, 137, 31, 31, 91, 42, 103, 35, 46, - 35, 148, 148, 46, 31, 35, 41, 41, 41, 31, + 27, 27, 27, 29, 29, 34, 23, 62, 62, 34, + 24, 82, 82, 3, 4, 38, 38, 38, 230, 36, + 151, 151, 32, 42, 224, 23, 40, 36, 69, 69, + 83, 83, 83, 36, 34, 23, 152, 152, 34, 24, + 69, 110, 110, 110, 223, 32, 32, 32, 36, 40, + 40, 40, 42, 23, 31, 31, 36, 34, 34, 34, + 35, 36, 35, 162, 31, 161, 31, 35, 41, 69, + 148, 31, 35, 31, 50, 36, 36, 36, 147, 42, + 42, 42, 144, 31, 31, 143, 37, 141, 35, 140, + 35, 92, 31, 37, 31, 35, 91, 41, 90, 31, - 35, 31, 90, 46, 50, 35, 35, 35, 89, 31, - 31, 31, 33, 149, 149, 42, 103, 67, 46, 33, - 66, 43, 46, 50, 50, 50, 33, 43, 65, 33, - 44, 46, 33, 64, 44, 103, 103, 103, 44, 84, - 61, 33, 42, 42, 42, 46, 46, 46, 33, 43, - 59, 52, 52, 52, 33, 43, 47, 33, 44, 45, - 33, 58, 44, 43, 43, 43, 44, 84, 33, 33, - 33, 39, 39, 44, 44, 44, 45, 57, 39, 39, - 55, 84, 84, 84, 39, 47, 151, 151, 45, 54, - 53, 69, 69, 71, 71, 30, 28, 49, 85, 49, + 35, 31, 43, 50, 67, 35, 35, 35, 43, 31, + 31, 31, 33, 154, 154, 37, 41, 41, 41, 33, + 66, 37, 50, 50, 50, 65, 33, 64, 61, 33, + 43, 59, 33, 58, 98, 57, 43, 55, 37, 37, + 37, 33, 54, 53, 43, 43, 43, 30, 33, 71, + 71, 28, 46, 22, 33, 52, 46, 33, 20, 44, + 33, 71, 98, 44, 14, 11, 46, 44, 33, 33, + 33, 39, 39, 98, 98, 98, 45, 10, 39, 39, + 7, 46, 5, 0, 39, 46, 0, 44, 0, 0, + 71, 44, 0, 45, 46, 44, 47, 120, 120, 120, - 39, 39, 49, 69, 45, 71, 39, 39, 47, 47, - 47, 22, 39, 20, 48, 45, 45, 45, 48, 14, - 11, 48, 39, 39, 39, 49, 85, 49, 51, 51, - 49, 48, 69, 86, 71, 85, 85, 85, 10, 87, - 49, 49, 49, 48, 7, 88, 72, 48, 72, 72, - 48, 118, 118, 118, 119, 119, 119, 51, 51, 48, - 72, 5, 86, 92, 143, 143, 143, 0, 87, 94, - 48, 48, 48, 88, 0, 93, 96, 51, 51, 51, - 60, 60, 88, 88, 88, 0, 86, 86, 86, 72, - 0, 92, 60, 87, 87, 87, 0, 60, 94, 60, + 39, 39, 44, 44, 44, 45, 39, 39, 46, 46, + 46, 47, 39, 0, 49, 0, 49, 0, 0, 49, + 0, 45, 39, 39, 39, 47, 51, 51, 52, 52, + 52, 0, 45, 45, 45, 0, 48, 0, 0, 47, + 48, 0, 49, 48, 49, 84, 0, 49, 47, 47, + 47, 0, 0, 48, 0, 51, 51, 49, 49, 49, + 72, 0, 72, 72, 0, 48, 121, 121, 121, 48, + 0, 85, 48, 84, 72, 51, 51, 51, 73, 0, + 73, 48, 88, 73, 73, 86, 0, 84, 84, 84, + 89, 0, 48, 48, 48, 60, 60, 87, 0, 85, - 92, 92, 92, 93, 95, 96, 95, 0, 0, 60, - 60, 98, 0, 93, 93, 93, 97, 98, 0, 101, - 60, 94, 94, 94, 98, 60, 0, 60, 96, 96, - 96, 99, 95, 0, 95, 60, 60, 60, 100, 102, - 98, 0, 147, 147, 97, 98, 0, 0, 101, 95, - 95, 95, 98, 105, 147, 97, 97, 97, 104, 99, - 0, 104, 98, 98, 98, 0, 100, 0, 102, 99, - 99, 99, 101, 101, 101, 107, 100, 100, 100, 0, - 0, 105, 106, 147, 0, 0, 110, 104, 106, 104, - 0, 0, 109, 102, 102, 102, 112, 114, 105, 105, + 146, 146, 146, 72, 0, 60, 0, 60, 85, 85, + 85, 88, 60, 86, 60, 0, 93, 60, 89, 86, + 86, 86, 0, 0, 60, 60, 87, 89, 89, 89, + 94, 95, 104, 60, 97, 60, 88, 88, 88, 0, + 60, 0, 60, 102, 93, 60, 96, 0, 96, 0, + 87, 87, 87, 93, 93, 93, 0, 0, 94, 0, + 95, 104, 100, 97, 0, 99, 103, 0, 94, 94, + 94, 99, 102, 0, 96, 101, 96, 0, 99, 136, + 104, 104, 104, 95, 95, 95, 97, 97, 97, 0, + 100, 96, 96, 96, 99, 103, 102, 102, 102, 99, - 105, 0, 0, 107, 0, 0, 104, 104, 104, 0, - 106, 154, 154, 154, 110, 0, 106, 107, 107, 107, - 109, 113, 115, 0, 112, 114, 0, 106, 106, 106, - 110, 110, 110, 111, 0, 109, 109, 109, 111, 112, - 112, 112, 116, 114, 114, 114, 117, 0, 111, 113, - 115, 0, 0, 113, 113, 113, 120, 0, 0, 115, - 115, 115, 111, 155, 155, 155, 121, 111, 122, 0, - 116, 0, 122, 0, 117, 0, 111, 0, 0, 116, - 116, 116, 0, 0, 123, 120, 111, 111, 111, 123, - 126, 117, 117, 117, 121, 162, 0, 122, 126, 0, + 100, 100, 100, 101, 105, 0, 99, 105, 136, 0, + 106, 0, 0, 101, 101, 101, 99, 99, 99, 109, + 103, 103, 103, 108, 158, 158, 158, 136, 136, 136, + 107, 0, 0, 105, 0, 105, 107, 111, 106, 0, + 0, 112, 0, 116, 0, 113, 0, 109, 0, 0, + 113, 108, 105, 105, 105, 106, 106, 106, 107, 0, + 113, 109, 109, 109, 107, 111, 108, 108, 108, 112, + 0, 116, 0, 114, 113, 107, 107, 107, 115, 113, + 111, 111, 111, 0, 0, 112, 112, 112, 113, 116, + 116, 116, 117, 119, 0, 118, 122, 0, 113, 113, - 125, 122, 127, 0, 0, 121, 121, 121, 120, 120, - 120, 125, 0, 123, 124, 124, 0, 123, 126, 0, - 122, 122, 122, 162, 124, 128, 126, 124, 125, 0, - 0, 127, 123, 123, 123, 126, 126, 126, 0, 125, - 162, 162, 162, 124, 124, 125, 125, 125, 129, 0, - 130, 132, 124, 128, 131, 124, 134, 127, 127, 127, - 0, 131, 0, 135, 133, 124, 124, 124, 0, 128, - 128, 128, 0, 0, 153, 0, 0, 129, 130, 146, - 132, 0, 0, 131, 134, 0, 130, 130, 130, 0, - 131, 136, 135, 133, 0, 134, 134, 134, 152, 156, + 113, 114, 0, 150, 150, 0, 115, 159, 159, 159, + 115, 115, 115, 123, 125, 150, 114, 114, 114, 125, + 117, 119, 124, 118, 0, 122, 124, 0, 0, 117, + 117, 117, 118, 118, 118, 0, 0, 128, 119, 119, + 119, 123, 0, 125, 150, 128, 0, 125, 122, 122, + 122, 124, 123, 123, 123, 124, 126, 126, 0, 127, + 130, 0, 125, 125, 125, 128, 126, 0, 129, 126, + 127, 132, 0, 128, 124, 124, 124, 175, 175, 175, + 0, 0, 128, 128, 128, 126, 126, 127, 0, 130, + 131, 133, 135, 0, 126, 0, 129, 126, 127, 0, - 129, 129, 129, 153, 132, 132, 132, 0, 146, 131, - 131, 131, 133, 133, 133, 135, 135, 135, 159, 136, - 169, 164, 153, 153, 153, 0, 152, 156, 136, 136, - 136, 161, 146, 146, 146, 185, 0, 152, 152, 152, - 0, 156, 156, 156, 0, 160, 159, 160, 169, 0, - 164, 163, 159, 159, 159, 165, 0, 169, 169, 169, - 161, 0, 160, 185, 163, 171, 171, 171, 167, 168, - 0, 185, 185, 185, 160, 0, 160, 164, 164, 164, - 163, 170, 0, 165, 166, 161, 161, 161, 166, 172, - 160, 173, 163, 0, 165, 165, 165, 167, 168, 160, + 132, 138, 0, 149, 127, 127, 127, 126, 126, 126, + 129, 129, 129, 134, 0, 130, 130, 130, 131, 133, + 134, 135, 137, 132, 132, 132, 0, 133, 133, 133, + 138, 157, 149, 0, 131, 131, 131, 139, 155, 160, + 0, 0, 134, 156, 0, 135, 135, 135, 0, 134, + 137, 0, 0, 138, 138, 138, 149, 149, 149, 0, + 157, 137, 137, 137, 0, 139, 155, 160, 134, 134, + 134, 163, 156, 0, 139, 139, 139, 155, 155, 155, + 165, 160, 160, 160, 164, 0, 164, 157, 157, 157, + 168, 156, 156, 156, 170, 0, 166, 0, 170, 163, - 160, 160, 163, 163, 163, 186, 186, 186, 174, 0, - 170, 175, 0, 166, 0, 177, 0, 166, 172, 173, - 167, 167, 167, 168, 168, 168, 0, 0, 176, 173, - 173, 173, 0, 170, 170, 170, 174, 0, 0, 175, - 166, 166, 166, 177, 178, 172, 172, 172, 179, 175, - 175, 175, 183, 174, 174, 174, 176, 180, 181, 0, - 177, 177, 177, 182, 188, 176, 176, 176, 204, 204, - 204, 0, 0, 178, 219, 219, 219, 179, 184, 0, - 183, 189, 0, 0, 187, 180, 0, 181, 0, 183, - 183, 183, 182, 188, 190, 0, 178, 178, 178, 180, + 0, 164, 0, 167, 0, 163, 163, 163, 0, 165, + 191, 191, 191, 164, 0, 164, 167, 0, 0, 168, + 0, 169, 0, 170, 166, 178, 0, 170, 171, 164, + 172, 0, 167, 0, 165, 165, 165, 173, 164, 164, + 164, 166, 166, 166, 167, 0, 168, 168, 168, 169, + 170, 170, 170, 178, 167, 167, 167, 171, 174, 172, + 169, 169, 169, 176, 0, 173, 177, 0, 181, 179, + 178, 178, 178, 184, 173, 173, 173, 209, 209, 209, + 171, 171, 171, 0, 172, 172, 172, 174, 180, 182, + 0, 0, 176, 183, 177, 185, 181, 179, 225, 225, - 180, 180, 0, 179, 179, 179, 191, 184, 0, 189, - 181, 181, 181, 187, 192, 182, 182, 182, 188, 188, - 188, 193, 190, 0, 189, 189, 189, 194, 195, 196, - 184, 184, 184, 197, 191, 0, 187, 187, 187, 190, - 190, 190, 192, 0, 0, 191, 191, 191, 0, 198, - 193, 192, 192, 192, 200, 194, 195, 0, 196, 0, - 199, 0, 197, 226, 226, 226, 195, 195, 195, 201, - 215, 194, 194, 194, 0, 193, 193, 193, 198, 196, - 196, 196, 200, 203, 202, 197, 197, 197, 199, 210, - 0, 200, 200, 200, 202, 205, 208, 201, 211, 215, + 225, 0, 184, 186, 177, 177, 177, 179, 179, 179, + 174, 174, 174, 181, 181, 181, 180, 0, 182, 176, + 176, 176, 183, 185, 187, 180, 180, 180, 184, 184, + 184, 188, 186, 189, 0, 190, 192, 185, 185, 185, + 0, 182, 182, 182, 0, 183, 183, 183, 0, 0, + 193, 0, 194, 187, 195, 186, 186, 186, 0, 188, + 0, 0, 189, 190, 0, 192, 0, 0, 188, 188, + 188, 190, 190, 190, 196, 0, 187, 187, 187, 193, + 194, 197, 195, 198, 0, 189, 189, 189, 192, 192, + 192, 0, 0, 200, 202, 194, 194, 194, 199, 195, - 207, 198, 198, 198, 0, 199, 199, 199, 0, 0, - 206, 0, 203, 202, 201, 201, 201, 210, 209, 215, - 215, 215, 202, 205, 0, 208, 0, 211, 207, 210, - 210, 210, 202, 202, 202, 203, 203, 203, 206, 212, - 205, 205, 205, 207, 207, 207, 209, 0, 208, 208, - 208, 206, 206, 206, 211, 211, 211, 213, 0, 214, - 209, 209, 209, 214, 224, 0, 0, 212, 0, 220, - 221, 222, 225, 227, 227, 227, 0, 228, 0, 0, - 229, 233, 212, 212, 212, 213, 0, 214, 237, 237, - 237, 214, 0, 224, 213, 213, 213, 220, 221, 230, + 195, 195, 196, 0, 193, 193, 193, 201, 0, 197, + 0, 203, 198, 196, 196, 196, 0, 205, 197, 197, + 197, 200, 204, 202, 0, 206, 199, 233, 233, 233, + 0, 200, 200, 200, 210, 0, 201, 198, 198, 198, + 203, 0, 199, 199, 199, 205, 202, 202, 202, 211, + 204, 207, 208, 206, 205, 205, 205, 201, 201, 201, + 0, 207, 210, 203, 203, 203, 0, 204, 204, 204, + 206, 206, 206, 210, 210, 210, 0, 211, 0, 212, + 207, 208, 213, 214, 217, 0, 215, 0, 0, 207, + 0, 216, 0, 0, 211, 211, 211, 0, 0, 207, - 222, 225, 214, 214, 214, 228, 220, 220, 220, 229, - 233, 231, 221, 221, 221, 232, 224, 224, 224, 222, - 222, 222, 0, 228, 228, 228, 238, 230, 225, 225, - 225, 234, 235, 233, 233, 233, 229, 229, 229, 231, - 0, 0, 236, 232, 230, 230, 230, 0, 231, 231, - 231, 0, 232, 232, 232, 238, 239, 239, 239, 234, - 235, 240, 241, 242, 242, 242, 243, 234, 234, 234, - 236, 235, 235, 235, 238, 238, 238, 244, 0, 236, - 236, 236, 245, 249, 246, 247, 247, 247, 250, 240, - 241, 254, 254, 254, 0, 243, 257, 257, 257, 241, + 207, 207, 0, 0, 208, 208, 208, 212, 0, 229, + 213, 218, 214, 217, 215, 221, 234, 234, 234, 216, + 212, 212, 212, 219, 0, 213, 213, 213, 215, 215, + 215, 216, 216, 216, 0, 214, 214, 214, 229, 218, + 217, 217, 217, 220, 221, 226, 228, 220, 227, 0, + 0, 219, 231, 0, 218, 218, 218, 229, 229, 229, + 219, 219, 219, 0, 221, 221, 221, 232, 0, 235, + 236, 220, 238, 226, 228, 220, 227, 0, 228, 228, + 228, 231, 226, 226, 226, 237, 220, 220, 220, 240, + 227, 227, 227, 0, 242, 0, 232, 235, 0, 236, - 241, 241, 240, 240, 240, 0, 244, 248, 0, 0, - 245, 251, 249, 246, 252, 0, 250, 253, 243, 243, - 243, 250, 250, 250, 245, 245, 245, 255, 261, 244, - 244, 244, 246, 246, 246, 248, 249, 249, 249, 259, - 251, 260, 252, 256, 262, 253, 248, 248, 248, 258, - 258, 258, 0, 252, 252, 252, 255, 261, 0, 251, - 251, 251, 253, 253, 253, 270, 270, 270, 259, 0, - 260, 256, 263, 262, 264, 265, 255, 255, 255, 256, - 256, 256, 266, 272, 261, 261, 261, 259, 259, 259, - 267, 268, 0, 260, 260, 260, 262, 262, 262, 269, + 238, 239, 0, 0, 231, 231, 231, 0, 241, 238, + 238, 238, 0, 237, 0, 235, 235, 235, 240, 243, + 0, 0, 242, 232, 232, 232, 236, 236, 236, 239, + 237, 237, 237, 242, 242, 242, 241, 245, 239, 239, + 239, 240, 240, 240, 241, 241, 241, 243, 244, 244, + 244, 246, 246, 246, 247, 248, 243, 243, 243, 249, + 249, 249, 250, 255, 255, 255, 245, 0, 0, 251, + 0, 254, 0, 0, 258, 252, 253, 257, 262, 262, + 262, 0, 247, 248, 0, 245, 245, 245, 265, 265, + 265, 250, 248, 248, 248, 247, 247, 247, 251, 254, - 0, 263, 264, 265, 271, 274, 274, 274, 265, 265, - 265, 266, 272, 264, 264, 264, 0, 0, 267, 0, - 268, 273, 0, 0, 263, 263, 263, 0, 269, 267, - 267, 267, 0, 271, 276, 272, 272, 272, 266, 266, - 266, 275, 275, 275, 0, 277, 268, 268, 268, 273, - 278, 279, 269, 269, 269, 0, 280, 282, 271, 271, - 271, 288, 276, 273, 273, 273, 281, 281, 281, 0, - 276, 276, 276, 277, 0, 0, 283, 0, 278, 285, - 279, 277, 277, 277, 280, 286, 282, 278, 278, 278, - 288, 0, 280, 280, 280, 284, 284, 284, 287, 0, + 256, 0, 258, 252, 259, 253, 257, 258, 258, 258, + 254, 254, 254, 263, 250, 250, 250, 252, 252, 252, + 260, 251, 251, 251, 253, 253, 253, 261, 256, 264, + 257, 257, 257, 259, 266, 266, 266, 0, 0, 256, + 256, 256, 263, 272, 0, 0, 267, 268, 260, 269, + 270, 0, 259, 259, 259, 261, 271, 264, 273, 260, + 260, 260, 263, 263, 263, 264, 264, 264, 274, 280, + 0, 272, 261, 261, 261, 267, 268, 0, 269, 270, + 0, 0, 272, 272, 272, 271, 273, 0, 275, 276, + 0, 273, 273, 273, 267, 267, 267, 274, 280, 268, - 0, 279, 279, 279, 283, 0, 290, 285, 291, 282, - 282, 282, 293, 286, 288, 288, 288, 0, 283, 283, - 283, 292, 285, 285, 285, 294, 295, 287, 286, 286, - 286, 289, 289, 289, 290, 296, 0, 291, 297, 0, - 0, 293, 0, 290, 290, 290, 301, 301, 301, 292, - 287, 287, 287, 294, 295, 298, 291, 291, 291, 299, - 292, 292, 292, 296, 293, 293, 293, 297, 294, 294, - 294, 295, 295, 295, 296, 296, 296, 300, 0, 302, - 304, 305, 0, 298, 307, 307, 307, 0, 299, 0, - 297, 297, 297, 303, 306, 308, 0, 0, 298, 298, + 268, 268, 270, 270, 270, 269, 269, 269, 271, 271, + 271, 277, 278, 278, 278, 285, 275, 0, 276, 279, + 0, 280, 280, 280, 274, 274, 274, 275, 275, 275, + 281, 283, 283, 283, 282, 284, 284, 284, 288, 0, + 277, 0, 287, 285, 276, 276, 276, 0, 279, 0, + 0, 285, 285, 285, 290, 290, 290, 286, 291, 281, + 0, 0, 282, 289, 277, 277, 277, 288, 0, 0, + 287, 0, 0, 279, 279, 279, 282, 282, 282, 287, + 287, 287, 281, 281, 281, 286, 292, 291, 288, 288, + 288, 289, 294, 286, 286, 286, 293, 293, 293, 289, - 298, 311, 311, 311, 0, 300, 0, 302, 309, 304, - 305, 299, 299, 299, 0, 300, 300, 300, 302, 302, - 302, 303, 310, 306, 308, 0, 312, 303, 303, 303, - 304, 304, 304, 305, 305, 305, 309, 313, 315, 0, - 0, 314, 306, 306, 306, 309, 309, 309, 0, 0, - 310, 308, 308, 308, 312, 316, 316, 316, 317, 317, - 317, 318, 0, 319, 320, 313, 315, 310, 310, 310, - 314, 312, 312, 312, 313, 313, 313, 315, 315, 315, - 321, 322, 323, 323, 323, 325, 325, 325, 324, 327, - 318, 319, 331, 320, 314, 314, 314, 330, 330, 330, + 289, 289, 0, 295, 296, 297, 299, 299, 299, 298, + 291, 291, 291, 0, 292, 0, 300, 301, 0, 0, + 294, 0, 0, 303, 311, 311, 311, 0, 292, 292, + 292, 295, 296, 302, 297, 294, 294, 294, 298, 0, + 304, 295, 295, 295, 300, 0, 301, 296, 296, 296, + 305, 306, 303, 300, 300, 300, 0, 297, 297, 297, + 307, 302, 298, 298, 298, 301, 301, 301, 304, 0, + 313, 317, 302, 302, 302, 303, 303, 303, 305, 306, + 308, 309, 0, 304, 304, 304, 314, 0, 310, 307, + 306, 306, 306, 315, 0, 305, 305, 305, 313, 0, - 332, 332, 332, 326, 319, 319, 319, 328, 0, 321, - 322, 329, 0, 318, 318, 318, 324, 327, 320, 320, - 320, 331, 334, 334, 334, 324, 324, 324, 321, 321, - 321, 326, 327, 327, 327, 0, 328, 322, 322, 322, - 329, 333, 326, 326, 326, 335, 0, 336, 331, 331, - 331, 337, 0, 0, 338, 339, 340, 0, 342, 328, - 328, 328, 0, 329, 329, 329, 341, 341, 341, 333, - 345, 345, 345, 346, 335, 336, 0, 333, 333, 333, - 337, 0, 0, 338, 339, 340, 342, 343, 350, 344, - 336, 336, 336, 344, 353, 342, 342, 342, 0, 335, + 317, 312, 316, 319, 313, 313, 313, 0, 308, 0, + 309, 0, 307, 307, 307, 314, 310, 0, 321, 317, + 317, 317, 315, 308, 308, 308, 310, 310, 310, 312, + 320, 316, 319, 309, 309, 309, 314, 314, 314, 0, + 312, 312, 312, 318, 318, 318, 321, 323, 324, 315, + 315, 315, 325, 0, 316, 316, 316, 0, 320, 319, + 319, 319, 326, 321, 321, 321, 329, 320, 320, 320, + 322, 322, 322, 0, 0, 323, 324, 327, 327, 327, + 330, 325, 328, 328, 328, 324, 324, 324, 331, 0, + 326, 0, 323, 323, 323, 329, 333, 332, 334, 334, - 335, 335, 346, 337, 337, 337, 338, 338, 338, 339, - 339, 339, 340, 340, 340, 343, 351, 350, 344, 347, - 347, 347, 344, 353, 343, 343, 343, 346, 346, 346, - 348, 348, 348, 349, 349, 349, 350, 350, 350, 352, - 352, 352, 354, 0, 351, 344, 344, 344, 357, 358, - 353, 353, 353, 355, 355, 355, 356, 356, 356, 351, - 351, 351, 359, 0, 361, 362, 362, 362, 360, 0, - 354, 366, 366, 366, 363, 364, 357, 367, 358, 369, - 369, 369, 0, 0, 365, 0, 0, 354, 354, 354, - 368, 359, 361, 357, 357, 357, 360, 358, 358, 358, + 334, 326, 326, 326, 336, 325, 325, 325, 330, 340, + 0, 335, 337, 337, 337, 0, 0, 331, 329, 329, + 329, 330, 330, 330, 0, 333, 332, 338, 339, 0, + 0, 341, 0, 336, 342, 342, 342, 0, 340, 335, + 343, 0, 331, 331, 331, 332, 332, 332, 335, 335, + 335, 345, 333, 333, 333, 338, 339, 336, 336, 336, + 341, 340, 340, 340, 348, 0, 338, 338, 338, 343, + 0, 339, 339, 339, 344, 344, 344, 0, 349, 345, + 346, 346, 346, 341, 341, 341, 350, 345, 345, 345, + 347, 347, 347, 348, 0, 351, 343, 343, 343, 352, - 360, 360, 360, 363, 364, 0, 367, 361, 361, 361, - 359, 359, 359, 365, 370, 370, 370, 0, 371, 368, - 372, 373, 374, 374, 374, 0, 363, 363, 363, 364, - 364, 364, 0, 367, 367, 367, 0, 378, 365, 365, - 365, 377, 379, 368, 368, 368, 371, 0, 372, 373, - 375, 375, 375, 376, 376, 376, 383, 372, 372, 372, - 373, 373, 373, 371, 371, 371, 378, 381, 0, 377, - 384, 379, 379, 379, 380, 380, 380, 382, 377, 377, - 377, 385, 385, 385, 383, 378, 378, 378, 386, 387, - 388, 388, 388, 383, 383, 383, 381, 0, 384, 0, + 353, 354, 354, 354, 355, 0, 349, 356, 358, 358, + 358, 360, 360, 360, 0, 350, 0, 0, 348, 348, + 348, 349, 349, 349, 351, 361, 361, 361, 352, 353, + 357, 363, 355, 364, 357, 356, 359, 0, 350, 350, + 350, 355, 355, 355, 356, 356, 356, 351, 351, 351, + 362, 362, 362, 352, 352, 352, 353, 353, 353, 357, + 363, 364, 0, 357, 367, 359, 365, 366, 366, 366, + 368, 369, 369, 369, 374, 0, 364, 364, 364, 363, + 363, 363, 370, 370, 370, 371, 357, 357, 357, 372, + 359, 359, 359, 367, 365, 373, 0, 375, 368, 376, - 389, 391, 391, 391, 0, 390, 382, 0, 392, 393, - 393, 393, 395, 384, 384, 384, 386, 387, 394, 398, - 398, 398, 381, 381, 381, 386, 386, 386, 389, 0, - 382, 382, 382, 390, 387, 387, 387, 392, 396, 397, - 395, 0, 389, 389, 389, 400, 394, 0, 390, 390, - 390, 399, 399, 399, 0, 394, 394, 394, 395, 395, - 395, 402, 392, 392, 392, 403, 396, 404, 397, 401, - 401, 401, 407, 408, 400, 0, 0, 396, 396, 396, - 0, 403, 405, 405, 405, 406, 406, 406, 411, 402, - 0, 397, 397, 397, 403, 404, 0, 400, 400, 400, + 376, 376, 374, 365, 365, 365, 374, 374, 374, 380, + 380, 380, 0, 371, 0, 368, 368, 368, 372, 377, + 367, 367, 367, 378, 373, 375, 379, 381, 381, 381, + 371, 371, 371, 382, 384, 384, 384, 372, 372, 372, + 375, 375, 375, 373, 373, 373, 383, 0, 377, 385, + 385, 385, 378, 0, 0, 379, 387, 386, 389, 389, + 389, 0, 382, 390, 390, 390, 0, 0, 388, 393, + 0, 377, 377, 377, 0, 383, 396, 378, 378, 378, + 379, 379, 379, 392, 387, 386, 391, 391, 391, 382, + 382, 382, 0, 387, 387, 387, 388, 394, 393, 383, - 409, 407, 408, 410, 402, 402, 402, 412, 0, 403, - 0, 0, 404, 404, 404, 416, 0, 411, 403, 403, - 403, 0, 407, 407, 407, 408, 408, 408, 409, 417, - 415, 410, 409, 409, 409, 0, 412, 419, 411, 411, - 411, 413, 413, 413, 416, 0, 410, 410, 410, 414, - 414, 414, 418, 420, 421, 0, 0, 417, 415, 412, - 412, 412, 415, 415, 415, 0, 419, 0, 416, 416, - 416, 0, 0, 417, 417, 417, 422, 422, 422, 0, - 418, 0, 420, 421, 423, 423, 423, 427, 0, 418, - 418, 418, 0, 419, 419, 419, 424, 424, 424, 430, + 383, 383, 386, 386, 386, 396, 397, 388, 388, 388, + 398, 392, 395, 395, 395, 0, 0, 393, 393, 393, + 392, 392, 392, 399, 401, 0, 394, 394, 394, 0, + 0, 396, 396, 396, 402, 397, 403, 0, 398, 400, + 400, 400, 404, 404, 404, 0, 405, 398, 398, 398, + 408, 399, 406, 401, 407, 407, 407, 0, 0, 397, + 397, 397, 402, 410, 403, 411, 399, 399, 399, 413, + 0, 402, 402, 402, 405, 412, 401, 401, 401, 408, + 406, 403, 403, 403, 409, 409, 409, 0, 405, 405, + 405, 410, 418, 411, 0, 406, 406, 406, 413, 416, - 0, 420, 420, 420, 432, 0, 421, 421, 421, 425, - 425, 425, 426, 426, 426, 427, 428, 428, 428, 429, - 429, 429, 431, 431, 431, 427, 427, 427, 430, 433, - 0, 0, 432, 434, 434, 434, 435, 435, 435, 436, - 437, 432, 432, 432, 440, 440, 440, 438, 0, 439, - 0, 430, 430, 430, 442, 442, 442, 433, 447, 447, - 447, 446, 0, 0, 0, 0, 444, 436, 441, 437, - 445, 0, 0, 433, 433, 433, 438, 439, 0, 0, - 0, 443, 436, 436, 436, 0, 439, 439, 439, 446, - 0, 0, 437, 437, 437, 444, 441, 0, 445, 438, + 410, 410, 410, 412, 408, 408, 408, 414, 414, 414, + 0, 411, 411, 411, 412, 412, 412, 415, 415, 415, + 418, 413, 413, 413, 417, 417, 417, 419, 416, 420, + 421, 421, 421, 423, 424, 418, 418, 418, 422, 422, + 422, 425, 0, 419, 0, 426, 430, 430, 430, 0, + 0, 416, 416, 416, 0, 0, 419, 420, 427, 0, + 0, 428, 423, 424, 431, 431, 431, 429, 0, 433, + 425, 419, 432, 426, 420, 420, 420, 426, 426, 426, + 419, 419, 419, 423, 423, 423, 427, 424, 424, 424, + 428, 0, 0, 425, 425, 425, 429, 434, 433, 435, - 438, 438, 446, 446, 446, 0, 441, 441, 441, 443, - 0, 0, 0, 0, 445, 445, 445, 0, 443, 443, - 443, 0, 444, 444, 444, 449, 0, 449, 449, 449, - 449, 449, 450, 0, 450, 450, 450, 450, 450, 451, - 451, 452, 452, 452, 452, 453, 0, 453, 453, 453, - 453, 453, 454, 0, 454, 454, 454, 454, 454, 455, - 455, 456, 456, 456, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 432, 427, 427, 427, 432, 432, 432, 439, 439, 439, + 436, 428, 428, 428, 0, 437, 0, 438, 0, 429, + 429, 429, 433, 433, 433, 434, 0, 435, 440, 440, + 440, 441, 441, 441, 445, 0, 435, 435, 435, 436, + 0, 434, 434, 434, 437, 0, 438, 442, 442, 442, + 443, 443, 443, 444, 444, 444, 446, 446, 446, 447, + 447, 447, 445, 437, 437, 437, 436, 436, 436, 438, + 438, 438, 445, 445, 445, 448, 449, 449, 449, 450, + 451, 452, 452, 452, 453, 453, 453, 454, 0, 0, + 455, 0, 463, 456, 458, 458, 458, 460, 460, 460, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448 + 465, 465, 465, 0, 448, 0, 462, 450, 451, 0, + 0, 457, 0, 459, 0, 454, 450, 450, 450, 455, + 463, 0, 456, 0, 451, 451, 451, 448, 448, 448, + 454, 454, 454, 461, 0, 462, 463, 463, 463, 457, + 464, 459, 455, 455, 455, 456, 456, 456, 457, 457, + 457, 459, 459, 459, 0, 0, 0, 0, 0, 0, + 0, 461, 462, 462, 462, 0, 0, 0, 464, 0, + 461, 461, 461, 0, 0, 0, 0, 0, 0, 0, + 0, 464, 464, 464, 467, 0, 467, 467, 467, 467, + 467, 468, 0, 468, 468, 468, 468, 468, 469, 469, + + 470, 470, 470, 470, 471, 0, 471, 471, 471, 471, + 471, 472, 0, 472, 472, 472, 472, 472, 473, 473, + 474, 474, 474, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + + 466, 466, 466, 466, 466, 466, 466, 466 } ; -static const flex_int16_t yy_rule_linenum[120] = +static const flex_int16_t yy_rule_linenum[123] = { 0, 80, 81, 83, 89, 113, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, @@ -1169,11 +1211,12 @@ static const flex_int16_t yy_rule_linenum[120] = 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 206, 207, 208, 209, 210, 211, + 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 231 + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 234 } ; /* The intent behind this definition is that it'll catch @@ -1188,7 +1231,7 @@ static const flex_int16_t yy_rule_linenum[120] = #include #include "ParserDriver.h" #include "sqlite3_parser.hpp" -#line 1192 "sqlite3_lexer.cpp" +#line 1235 "sqlite3_lexer.cpp" #define YY_NO_UNISTD_H 1 #line 12 "sqlite3_lexer.ll" #define TOKEN(n) sqlb::parser::parser::symbol_type(sqlb::parser::parser::token::TOK_##n, yytext, loc) @@ -1214,14 +1257,14 @@ static const flex_int16_t yy_rule_linenum[120] = return s; } -#line 1218 "sqlite3_lexer.cpp" +#line 1261 "sqlite3_lexer.cpp" #line 55 "sqlite3_lexer.ll" /* TODO Add $ bind parameters */ // Code run each time a pattern is matched. #define YY_USER_ACTION loc.columns(yyleng); -#line 1223 "sqlite3_lexer.cpp" +#line 1266 "sqlite3_lexer.cpp" -#line 1225 "sqlite3_lexer.cpp" +#line 1268 "sqlite3_lexer.cpp" #define INITIAL 0 #define BETWEEN_MODE 1 @@ -1559,7 +1602,7 @@ YY_DECL loc.step(); -#line 1563 "sqlite3_lexer.cpp" +#line 1606 "sqlite3_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1588,13 +1631,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 >= 449 ) + if ( yy_current_state >= 467 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 448 ); + while ( yy_current_state != 466 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -1613,13 +1656,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 120 ) + else if ( yy_act < 123 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 120 ) + else if ( yy_act == 123 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 121 ) + else if ( yy_act == 124 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -1710,564 +1753,579 @@ return TOKEN(ACTION); case 10: YY_RULE_SETUP #line 119 "sqlite3_lexer.ll" -return TOKEN(AS); +return TOKEN(ALWAYS); YY_BREAK case 11: YY_RULE_SETUP #line 120 "sqlite3_lexer.ll" -return TOKEN(ASC); +return TOKEN(AS); YY_BREAK case 12: YY_RULE_SETUP #line 121 "sqlite3_lexer.ll" -return TOKEN(AUTOINCREMENT); +return TOKEN(ASC); YY_BREAK case 13: YY_RULE_SETUP #line 122 "sqlite3_lexer.ll" -return TOKEN(CASCADE); +return TOKEN(AUTOINCREMENT); YY_BREAK case 14: YY_RULE_SETUP #line 123 "sqlite3_lexer.ll" -return TOKEN(CASE); +return TOKEN(CASCADE); YY_BREAK case 15: YY_RULE_SETUP #line 124 "sqlite3_lexer.ll" -return TOKEN(CAST); +return TOKEN(CASE); YY_BREAK case 16: YY_RULE_SETUP #line 125 "sqlite3_lexer.ll" -return TOKEN(CHECK); +return TOKEN(CAST); YY_BREAK case 17: YY_RULE_SETUP #line 126 "sqlite3_lexer.ll" -return TOKEN(COLLATE); +return TOKEN(CHECK); YY_BREAK case 18: YY_RULE_SETUP #line 127 "sqlite3_lexer.ll" -return TOKEN(CONFLICT); +return TOKEN(COLLATE); YY_BREAK case 19: YY_RULE_SETUP #line 128 "sqlite3_lexer.ll" -return TOKEN(CONSTRAINT); +return TOKEN(CONFLICT); YY_BREAK case 20: YY_RULE_SETUP #line 129 "sqlite3_lexer.ll" -return TOKEN(CREATE); +return TOKEN(CONSTRAINT); YY_BREAK case 21: YY_RULE_SETUP #line 130 "sqlite3_lexer.ll" -return TOKEN(CURRENT_DATE); +return TOKEN(CREATE); YY_BREAK case 22: YY_RULE_SETUP #line 131 "sqlite3_lexer.ll" -return TOKEN(CURRENT_TIME); +return TOKEN(CURRENT_DATE); YY_BREAK case 23: YY_RULE_SETUP #line 132 "sqlite3_lexer.ll" -return TOKEN(CURRENT_TIMESTAMP); +return TOKEN(CURRENT_TIME); YY_BREAK case 24: YY_RULE_SETUP #line 133 "sqlite3_lexer.ll" -return TOKEN(DEFAULT); +return TOKEN(CURRENT_TIMESTAMP); YY_BREAK case 25: YY_RULE_SETUP #line 134 "sqlite3_lexer.ll" -return TOKEN(DEFERRABLE); +return TOKEN(DEFAULT); YY_BREAK case 26: YY_RULE_SETUP #line 135 "sqlite3_lexer.ll" -return TOKEN(DEFERRED); +return TOKEN(DEFERRABLE); YY_BREAK case 27: YY_RULE_SETUP #line 136 "sqlite3_lexer.ll" -return TOKEN(DELETE); +return TOKEN(DEFERRED); YY_BREAK case 28: YY_RULE_SETUP #line 137 "sqlite3_lexer.ll" -return TOKEN(DESC); +return TOKEN(DELETE); YY_BREAK case 29: YY_RULE_SETUP #line 138 "sqlite3_lexer.ll" -return TOKEN(DISTINCT); +return TOKEN(DESC); YY_BREAK case 30: YY_RULE_SETUP #line 139 "sqlite3_lexer.ll" -return TOKEN(ELSE); +return TOKEN(DISTINCT); YY_BREAK case 31: YY_RULE_SETUP #line 140 "sqlite3_lexer.ll" -return TOKEN(END); +return TOKEN(ELSE); YY_BREAK case 32: YY_RULE_SETUP #line 141 "sqlite3_lexer.ll" -return TOKEN(ESCAPE); +return TOKEN(END); YY_BREAK case 33: YY_RULE_SETUP #line 142 "sqlite3_lexer.ll" -return TOKEN(EXISTS); +return TOKEN(ESCAPE); YY_BREAK case 34: YY_RULE_SETUP #line 143 "sqlite3_lexer.ll" -return TOKEN(FAIL); +return TOKEN(EXISTS); YY_BREAK case 35: YY_RULE_SETUP #line 144 "sqlite3_lexer.ll" -return TOKEN(FALSE); +return TOKEN(FAIL); YY_BREAK case 36: YY_RULE_SETUP #line 145 "sqlite3_lexer.ll" -return TOKEN(FILTER); +return TOKEN(FALSE); YY_BREAK case 37: YY_RULE_SETUP #line 146 "sqlite3_lexer.ll" -return TOKEN(FOLLOWING); +return TOKEN(FILTER); YY_BREAK case 38: YY_RULE_SETUP #line 147 "sqlite3_lexer.ll" -return TOKEN(FOREIGN); +return TOKEN(FOLLOWING); YY_BREAK case 39: YY_RULE_SETUP #line 148 "sqlite3_lexer.ll" -return TOKEN(GLOB); +return TOKEN(FOREIGN); YY_BREAK case 40: YY_RULE_SETUP #line 149 "sqlite3_lexer.ll" -return TOKEN(IF); +return TOKEN(GENERATED); YY_BREAK case 41: YY_RULE_SETUP #line 150 "sqlite3_lexer.ll" -return TOKEN(IGNORE); +return TOKEN(GLOB); YY_BREAK case 42: YY_RULE_SETUP #line 151 "sqlite3_lexer.ll" -return TOKEN(IMMEDIATE); +return TOKEN(IF); YY_BREAK case 43: YY_RULE_SETUP #line 152 "sqlite3_lexer.ll" -return TOKEN(IN); +return TOKEN(IGNORE); YY_BREAK case 44: YY_RULE_SETUP #line 153 "sqlite3_lexer.ll" -return TOKEN(INDEX); +return TOKEN(IMMEDIATE); YY_BREAK case 45: YY_RULE_SETUP #line 154 "sqlite3_lexer.ll" -return TOKEN(INITIALLY); +return TOKEN(IN); YY_BREAK case 46: YY_RULE_SETUP #line 155 "sqlite3_lexer.ll" -return TOKEN(INSERT); +return TOKEN(INDEX); YY_BREAK case 47: YY_RULE_SETUP #line 156 "sqlite3_lexer.ll" -return TOKEN(IS); +return TOKEN(INITIALLY); YY_BREAK case 48: YY_RULE_SETUP #line 157 "sqlite3_lexer.ll" -return TOKEN(ISNULL); +return TOKEN(INSERT); YY_BREAK case 49: YY_RULE_SETUP #line 158 "sqlite3_lexer.ll" -return TOKEN(KEY); +return TOKEN(IS); YY_BREAK case 50: YY_RULE_SETUP #line 159 "sqlite3_lexer.ll" -return TOKEN(LIKE); +return TOKEN(ISNULL); YY_BREAK case 51: YY_RULE_SETUP #line 160 "sqlite3_lexer.ll" -return TOKEN(MATCH); +return TOKEN(KEY); YY_BREAK case 52: YY_RULE_SETUP #line 161 "sqlite3_lexer.ll" -return TOKEN(NO); +return TOKEN(LIKE); YY_BREAK case 53: YY_RULE_SETUP #line 162 "sqlite3_lexer.ll" -return TOKEN(NOT); +return TOKEN(MATCH); YY_BREAK case 54: YY_RULE_SETUP #line 163 "sqlite3_lexer.ll" -return TOKEN(NOTNULL); +return TOKEN(NO); YY_BREAK case 55: YY_RULE_SETUP #line 164 "sqlite3_lexer.ll" -return TOKEN(NULL); +return TOKEN(NOT); YY_BREAK case 56: YY_RULE_SETUP #line 165 "sqlite3_lexer.ll" -return TOKEN(ON); +return TOKEN(NOTNULL); YY_BREAK case 57: YY_RULE_SETUP #line 166 "sqlite3_lexer.ll" -return TOKEN(OR); +return TOKEN(NULL); YY_BREAK case 58: YY_RULE_SETUP #line 167 "sqlite3_lexer.ll" -return TOKEN(OVER); +return TOKEN(ON); YY_BREAK case 59: YY_RULE_SETUP #line 168 "sqlite3_lexer.ll" -return TOKEN(PARTITION); +return TOKEN(OR); YY_BREAK case 60: YY_RULE_SETUP #line 169 "sqlite3_lexer.ll" -return TOKEN(PRECEDING); +return TOKEN(OVER); YY_BREAK case 61: YY_RULE_SETUP #line 170 "sqlite3_lexer.ll" -return TOKEN(PRIMARY); +return TOKEN(PARTITION); YY_BREAK case 62: YY_RULE_SETUP #line 171 "sqlite3_lexer.ll" -return TOKEN(RAISE); +return TOKEN(PRECEDING); YY_BREAK case 63: YY_RULE_SETUP #line 172 "sqlite3_lexer.ll" -return TOKEN(RANGE); +return TOKEN(PRIMARY); YY_BREAK case 64: YY_RULE_SETUP #line 173 "sqlite3_lexer.ll" -return TOKEN(REFERENCES); +return TOKEN(RAISE); YY_BREAK case 65: YY_RULE_SETUP #line 174 "sqlite3_lexer.ll" -return TOKEN(REGEXP); +return TOKEN(RANGE); YY_BREAK case 66: YY_RULE_SETUP #line 175 "sqlite3_lexer.ll" -return TOKEN(REPLACE); +return TOKEN(REFERENCES); YY_BREAK case 67: YY_RULE_SETUP #line 176 "sqlite3_lexer.ll" -return TOKEN(RESTRICT); +return TOKEN(REGEXP); YY_BREAK case 68: YY_RULE_SETUP #line 177 "sqlite3_lexer.ll" -return TOKEN(ROLLBACK); +return TOKEN(REPLACE); YY_BREAK case 69: YY_RULE_SETUP #line 178 "sqlite3_lexer.ll" -return TOKEN(ROWID); +return TOKEN(RESTRICT); YY_BREAK case 70: YY_RULE_SETUP #line 179 "sqlite3_lexer.ll" -return TOKEN(ROWS); +return TOKEN(ROLLBACK); YY_BREAK case 71: YY_RULE_SETUP #line 180 "sqlite3_lexer.ll" -return TOKEN(SELECT); +return TOKEN(ROWID); YY_BREAK case 72: YY_RULE_SETUP #line 181 "sqlite3_lexer.ll" -return TOKEN(SET); +return TOKEN(ROWS); YY_BREAK case 73: YY_RULE_SETUP #line 182 "sqlite3_lexer.ll" -return TOKEN(TABLE); +return TOKEN(SELECT); YY_BREAK case 74: YY_RULE_SETUP #line 183 "sqlite3_lexer.ll" -return TOKEN(TEMP); +return TOKEN(SET); YY_BREAK case 75: YY_RULE_SETUP #line 184 "sqlite3_lexer.ll" -return TOKEN(TEMPORARY); +return TOKEN(STORED); YY_BREAK case 76: YY_RULE_SETUP #line 185 "sqlite3_lexer.ll" -return TOKEN(THEN); +return TOKEN(TABLE); YY_BREAK case 77: YY_RULE_SETUP #line 186 "sqlite3_lexer.ll" -return TOKEN(TRUE); +return TOKEN(TEMP); YY_BREAK case 78: YY_RULE_SETUP #line 187 "sqlite3_lexer.ll" -return TOKEN(UNBOUNDED); +return TOKEN(TEMPORARY); YY_BREAK case 79: YY_RULE_SETUP #line 188 "sqlite3_lexer.ll" -return TOKEN(UNIQUE); +return TOKEN(THEN); YY_BREAK case 80: YY_RULE_SETUP #line 189 "sqlite3_lexer.ll" -return TOKEN(UPDATE); +return TOKEN(TRUE); YY_BREAK case 81: YY_RULE_SETUP #line 190 "sqlite3_lexer.ll" -return TOKEN(USING); +return TOKEN(UNBOUNDED); YY_BREAK case 82: YY_RULE_SETUP #line 191 "sqlite3_lexer.ll" -return TOKEN(VIRTUAL); +return TOKEN(UNIQUE); YY_BREAK case 83: YY_RULE_SETUP #line 192 "sqlite3_lexer.ll" -return TOKEN(WHEN); +return TOKEN(UPDATE); YY_BREAK case 84: YY_RULE_SETUP #line 193 "sqlite3_lexer.ll" -return TOKEN(WHERE); +return TOKEN(USING); YY_BREAK case 85: YY_RULE_SETUP #line 194 "sqlite3_lexer.ll" -return TOKEN(WITHOUT); +return TOKEN(VIRTUAL); YY_BREAK case 86: YY_RULE_SETUP -#line 196 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_IDENTIFIER(yytext, loc); +#line 195 "sqlite3_lexer.ll" +return TOKEN(WHEN); YY_BREAK case 87: YY_RULE_SETUP -#line 197 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_IDENTIFIER(unquote_string(yytext, '`'), loc); +#line 196 "sqlite3_lexer.ll" +return TOKEN(WHERE); YY_BREAK case 88: YY_RULE_SETUP -#line 198 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_IDENTIFIER(unquote_string(yytext, '['), loc); +#line 197 "sqlite3_lexer.ll" +return TOKEN(WITHOUT); YY_BREAK case 89: YY_RULE_SETUP #line 199 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_QUOTEDLITERAL(unquote_string(yytext, '"'), loc); +return sqlb::parser::parser::make_IDENTIFIER(yytext, loc); YY_BREAK case 90: YY_RULE_SETUP #line 200 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_STRINGLITERAL(yytext, loc); +return sqlb::parser::parser::make_IDENTIFIER(unquote_string(yytext, '`'), loc); YY_BREAK case 91: YY_RULE_SETUP #line 201 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_NUMERIC(yytext, loc); +return sqlb::parser::parser::make_IDENTIFIER(unquote_string(yytext, '['), loc); YY_BREAK case 92: YY_RULE_SETUP #line 202 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BLOBLITERAL(yytext, loc); +return sqlb::parser::parser::make_QUOTEDLITERAL(unquote_string(yytext, '"'), loc); YY_BREAK case 93: YY_RULE_SETUP #line 203 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BINDPARAMETER(yytext, loc); +return sqlb::parser::parser::make_STRINGLITERAL(yytext, loc); YY_BREAK case 94: YY_RULE_SETUP #line 204 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BINDPARAMETER(yytext, loc); +return sqlb::parser::parser::make_NUMERIC(yytext, loc); YY_BREAK case 95: YY_RULE_SETUP -#line 206 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_LPAREN(loc); +#line 205 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_BLOBLITERAL(yytext, loc); YY_BREAK case 96: YY_RULE_SETUP -#line 207 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_RPAREN(loc); +#line 206 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_BINDPARAMETER(yytext, loc); YY_BREAK case 97: YY_RULE_SETUP -#line 208 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_DOT(loc); +#line 207 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_BINDPARAMETER(yytext, loc); YY_BREAK case 98: YY_RULE_SETUP #line 209 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_COMMA(loc); +return sqlb::parser::parser::make_LPAREN(loc); YY_BREAK case 99: YY_RULE_SETUP #line 210 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_SEMI(loc); +return sqlb::parser::parser::make_RPAREN(loc); YY_BREAK case 100: YY_RULE_SETUP #line 211 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_PLUS(loc); +return sqlb::parser::parser::make_DOT(loc); YY_BREAK case 101: YY_RULE_SETUP #line 212 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_MINUS(loc); +return sqlb::parser::parser::make_COMMA(loc); YY_BREAK case 102: YY_RULE_SETUP #line 213 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_STAR(loc); +return sqlb::parser::parser::make_SEMI(loc); YY_BREAK case 103: YY_RULE_SETUP #line 214 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_SLASH(loc); +return sqlb::parser::parser::make_PLUS(loc); YY_BREAK case 104: YY_RULE_SETUP #line 215 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_TILDE(loc); +return sqlb::parser::parser::make_MINUS(loc); YY_BREAK case 105: YY_RULE_SETUP #line 216 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_AMPERSAND(loc); +return sqlb::parser::parser::make_STAR(loc); YY_BREAK case 106: YY_RULE_SETUP #line 217 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_PERCENT(loc); +return sqlb::parser::parser::make_SLASH(loc); YY_BREAK case 107: YY_RULE_SETUP #line 218 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BITOR(loc); +return sqlb::parser::parser::make_TILDE(loc); YY_BREAK case 108: YY_RULE_SETUP #line 219 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_OROP(loc); +return sqlb::parser::parser::make_AMPERSAND(loc); YY_BREAK case 109: YY_RULE_SETUP #line 220 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_EQUAL(loc); +return sqlb::parser::parser::make_PERCENT(loc); YY_BREAK case 110: YY_RULE_SETUP #line 221 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_EQUAL2(loc); +return sqlb::parser::parser::make_BITOR(loc); YY_BREAK case 111: YY_RULE_SETUP #line 222 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_GREATER(loc); +return sqlb::parser::parser::make_OROP(loc); YY_BREAK case 112: YY_RULE_SETUP #line 223 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_GREATEREQUAL(loc); +return sqlb::parser::parser::make_EQUAL(loc); YY_BREAK case 113: YY_RULE_SETUP #line 224 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_LOWER(loc); +return sqlb::parser::parser::make_EQUAL2(loc); YY_BREAK case 114: YY_RULE_SETUP #line 225 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_LOWEREQUAL(loc); +return sqlb::parser::parser::make_GREATER(loc); YY_BREAK case 115: YY_RULE_SETUP #line 226 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_UNEQUAL(loc); +return sqlb::parser::parser::make_GREATEREQUAL(loc); YY_BREAK case 116: YY_RULE_SETUP #line 227 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_UNEQUAL2(loc); +return sqlb::parser::parser::make_LOWER(loc); YY_BREAK case 117: YY_RULE_SETUP #line 228 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BITWISELEFT(loc); +return sqlb::parser::parser::make_LOWEREQUAL(loc); YY_BREAK case 118: YY_RULE_SETUP #line 229 "sqlite3_lexer.ll" -return sqlb::parser::parser::make_BITWISERIGHT(loc); +return sqlb::parser::parser::make_UNEQUAL(loc); YY_BREAK case 119: YY_RULE_SETUP +#line 230 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_UNEQUAL2(loc); + YY_BREAK +case 120: +YY_RULE_SETUP #line 231 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_BITWISELEFT(loc); + YY_BREAK +case 121: +YY_RULE_SETUP +#line 232 "sqlite3_lexer.ll" +return sqlb::parser::parser::make_BITWISERIGHT(loc); + YY_BREAK +case 122: +YY_RULE_SETUP +#line 234 "sqlite3_lexer.ll" throw sqlb::parser::parser::syntax_error(loc, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(BETWEEN_MODE): -#line 233 "sqlite3_lexer.ll" +#line 236 "sqlite3_lexer.ll" return sqlb::parser::parser::make_EOF(loc); YY_BREAK -case 120: +case 123: YY_RULE_SETUP -#line 235 "sqlite3_lexer.ll" +#line 238 "sqlite3_lexer.ll" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 2271 "sqlite3_lexer.cpp" +#line 2329 "sqlite3_lexer.cpp" case YY_END_OF_BUFFER: { @@ -2588,7 +2646,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 >= 449 ) + if ( yy_current_state >= 467 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2622,11 +2680,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 >= 449 ) + if ( yy_current_state >= 467 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 448); + yy_is_jam = (yy_current_state == 466); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -3538,7 +3596,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) /* %ok-for-header */ -#line 235 "sqlite3_lexer.ll" +#line 238 "sqlite3_lexer.ll" namespace sqlb diff --git a/src/sql/parser/sqlite3_lexer.h b/src/sql/parser/sqlite3_lexer.h index 3b337eac..88d59cf8 100644 --- a/src/sql/parser/sqlite3_lexer.h +++ b/src/sql/parser/sqlite3_lexer.h @@ -602,7 +602,7 @@ extern int yylex (yyscan_t yyscanner); #undef yyTABLES_NAME #endif -#line 235 "sqlite3_lexer.ll" +#line 238 "sqlite3_lexer.ll" #line 609 "sqlite3_lexer.h" diff --git a/src/sql/parser/sqlite3_lexer.ll b/src/sql/parser/sqlite3_lexer.ll index 974ab35f..6c524871 100644 --- a/src/sql/parser/sqlite3_lexer.ll +++ b/src/sql/parser/sqlite3_lexer.ll @@ -115,6 +115,7 @@ WS [ \t\f] "ABORT" return TOKEN(ABORT); "ACTION" return TOKEN(ACTION); +"ALWAYS" return TOKEN(ALWAYS); "AS" return TOKEN(AS); "ASC" return TOKEN(ASC); "AUTOINCREMENT" return TOKEN(AUTOINCREMENT); @@ -144,6 +145,7 @@ WS [ \t\f] "FILTER" return TOKEN(FILTER); "FOLLOWING" return TOKEN(FOLLOWING); "FOREIGN" return TOKEN(FOREIGN); +"GENERATED" return TOKEN(GENERATED); "GLOB" return TOKEN(GLOB); "IF" return TOKEN(IF); "IGNORE" return TOKEN(IGNORE); @@ -178,6 +180,7 @@ WS [ \t\f] "ROWS" return TOKEN(ROWS); "SELECT" return TOKEN(SELECT); "SET" return TOKEN(SET); +"STORED" return TOKEN(STORED); "TABLE" return TOKEN(TABLE); "TEMP" return TOKEN(TEMP); "TEMPORARY" return TOKEN(TEMPORARY); diff --git a/src/sql/parser/sqlite3_location.h b/src/sql/parser/sqlite3_location.h index bbb586b5..ecfeb72a 100644 --- a/src/sql/parser/sqlite3_location.h +++ b/src/sql/parser/sqlite3_location.h @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.5.1. // Locations for Bison parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -38,7 +38,6 @@ #ifndef YY_YY_SQLITE3_LOCATION_H_INCLUDED # define YY_YY_SQLITE3_LOCATION_H_INCLUDED -# include // std::max # include # include @@ -56,16 +55,19 @@ #line 10 "sqlite3_parser.yy" namespace sqlb { namespace parser { -#line 60 "sqlite3_location.h" +#line 59 "sqlite3_location.h" /// A point in a source file. class position { public: + /// Type for line and column numbers. + typedef int counter_type; + /// Construct a position. explicit position (std::string* f = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) + counter_type l = 1, + counter_type c = 1) : filename (f) , line (l) , column (c) @@ -74,8 +76,8 @@ namespace sqlb { namespace parser { /// Initialization. void initialize (std::string* fn = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) + counter_type l = 1, + counter_type c = 1) { filename = fn; line = l; @@ -85,17 +87,17 @@ namespace sqlb { namespace parser { /** \name Line and Column related manipulators ** \{ */ /// (line related) Advance to the COUNT next lines. - void lines (int count = 1) + void lines (counter_type count = 1) { if (count) { - column = 1u; + column = 1; line = add_ (line, count, 1); } } /// (column related) Advance to the COUNT next columns. - void columns (int count = 1) + void columns (counter_type count = 1) { column = add_ (column, count, 1); } @@ -104,22 +106,21 @@ namespace sqlb { namespace parser { /// File name to which this position refers. std::string* filename; /// Current line number. - unsigned line; + counter_type line; /// Current column number. - unsigned column; + counter_type column; private: /// Compute max (min, lhs+rhs). - static unsigned add_ (unsigned lhs, int rhs, int min) + static counter_type add_ (counter_type lhs, counter_type rhs, counter_type min) { - return static_cast (std::max (min, - static_cast (lhs) + rhs)); + return lhs + rhs < min ? min : lhs + rhs; } }; /// Add \a width columns, in place. inline position& - operator+= (position& res, int width) + operator+= (position& res, position::counter_type width) { res.columns (width); return res; @@ -127,21 +128,21 @@ namespace sqlb { namespace parser { /// Add \a width columns. inline position - operator+ (position res, int width) + operator+ (position res, position::counter_type width) { return res += width; } /// Subtract \a width columns, in place. inline position& - operator-= (position& res, int width) + operator-= (position& res, position::counter_type width) { return res += -width; } /// Subtract \a width columns. inline position - operator- (position res, int width) + operator- (position res, position::counter_type width) { return res -= width; } @@ -181,6 +182,8 @@ namespace sqlb { namespace parser { class location { public: + /// Type for line and column numbers. + typedef position::counter_type counter_type; /// Construct a location from \a b to \a e. location (const position& b, const position& e) @@ -196,8 +199,8 @@ namespace sqlb { namespace parser { /// Construct a 0-width location in \a f, \a l, \a c. explicit location (std::string* f, - unsigned l = 1u, - unsigned c = 1u) + counter_type l = 1, + counter_type c = 1) : begin (f, l, c) , end (f, l, c) {} @@ -205,8 +208,8 @@ namespace sqlb { namespace parser { /// Initialization. void initialize (std::string* f = YY_NULLPTR, - unsigned l = 1u, - unsigned c = 1u) + counter_type l = 1, + counter_type c = 1) { begin.initialize (f, l, c); end = begin; @@ -222,13 +225,13 @@ namespace sqlb { namespace parser { } /// Extend the current location to the COUNT next columns. - void columns (int count = 1) + void columns (counter_type count = 1) { end += count; } /// Extend the current location to the COUNT next lines. - void lines (int count = 1) + void lines (counter_type count = 1) { end.lines (count); } @@ -243,39 +246,45 @@ namespace sqlb { namespace parser { }; /// Join two locations, in place. - inline location& operator+= (location& res, const location& end) + inline location& + operator+= (location& res, const location& end) { res.end = end.end; return res; } /// Join two locations. - inline location operator+ (location res, const location& end) + inline location + operator+ (location res, const location& end) { return res += end; } /// Add \a width columns to the end position, in place. - inline location& operator+= (location& res, int width) + inline location& + operator+= (location& res, location::counter_type width) { res.columns (width); return res; } /// Add \a width columns to the end position. - inline location operator+ (location res, int width) + inline location + operator+ (location res, location::counter_type width) { return res += width; } /// Subtract \a width columns to the end position, in place. - inline location& operator-= (location& res, int width) + inline location& + operator-= (location& res, location::counter_type width) { return res += -width; } /// Subtract \a width columns to the end position. - inline location operator- (location res, int width) + inline location + operator- (location res, location::counter_type width) { return res -= width; } @@ -304,7 +313,8 @@ namespace sqlb { namespace parser { std::basic_ostream& operator<< (std::basic_ostream& ostr, const location& loc) { - unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0; + location::counter_type end_col + = 0 < loc.end.column ? loc.end.column - 1 : 0; ostr << loc.begin; if (loc.end.filename && (!loc.begin.filename @@ -319,6 +329,6 @@ namespace sqlb { namespace parser { #line 10 "sqlite3_parser.yy" } } // sqlb::parser -#line 323 "sqlite3_location.h" +#line 333 "sqlite3_location.h" #endif // !YY_YY_SQLITE3_LOCATION_H_INCLUDED diff --git a/src/sql/parser/sqlite3_parser.cpp b/src/sql/parser/sqlite3_parser.cpp index 3380fe96..f6d1328a 100644 --- a/src/sql/parser/sqlite3_parser.cpp +++ b/src/sql/parser/sqlite3_parser.cpp @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.5.1. // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -41,7 +41,7 @@ // Unqualified %code blocks. -#line 85 "sqlite3_parser.yy" +#line 88 "sqlite3_parser.yy" #include "ParserDriver.h" @@ -108,9 +108,6 @@ # endif -// Suppress unused-variable warnings by "using" E. -#define YYUSE(E) ((void) (E)) - // Enable debugging if requested. #if YYDEBUG @@ -158,7 +155,7 @@ #line 10 "sqlite3_parser.yy" namespace sqlb { namespace parser { -#line 162 "sqlite3_parser.cpp" +#line 159 "sqlite3_parser.cpp" /* Return YYSTR after stripping away unnecessary quotes and @@ -204,10 +201,11 @@ namespace sqlb { namespace parser { /// Build a parser object. parser::parser (yyscan_t yyscanner_yyarg, ParserDriver& drv_yyarg) - : #if YYDEBUG - yydebug_ (false), + : yydebug_ (false), yycdebug_ (&std::cerr), +#else + : #endif yyscanner (yyscanner_yyarg), drv (drv_yyarg) @@ -257,7 +255,7 @@ namespace sqlb { namespace parser { if (state == empty_state) return empty_symbol; else - return yystos_[state]; + return yystos_[+state]; } parser::stack_symbol_type::stack_symbol_type () @@ -268,179 +266,184 @@ namespace sqlb { namespace parser { { switch (that.type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.YY_MOVE_OR_COPY< ColumnConstraintInfo > (YY_MOVE (that.value)); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.YY_MOVE_OR_COPY< ColumnConstraintInfoVector > (YY_MOVE (that.value)); break; - case 155: // columndef + case 160: // columndef value.YY_MOVE_OR_COPY< ColumndefData > (YY_MOVE (that.value)); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value)); break; - case 163: // tableconstraint + case 168: // tableconstraint value.YY_MOVE_OR_COPY< sqlb::ConstraintPtr > (YY_MOVE (that.value)); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.YY_MOVE_OR_COPY< sqlb::ConstraintSet > (YY_MOVE (that.value)); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.YY_MOVE_OR_COPY< sqlb::IndexPtr > (YY_MOVE (that.value)); break; - case 144: // indexed_column + case 147: // indexed_column value.YY_MOVE_OR_COPY< sqlb::IndexedColumn > (YY_MOVE (that.value)); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.YY_MOVE_OR_COPY< sqlb::IndexedColumnVector > (YY_MOVE (that.value)); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.YY_MOVE_OR_COPY< sqlb::StringVector > (YY_MOVE (that.value)); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.YY_MOVE_OR_COPY< sqlb::TablePtr > (YY_MOVE (that.value)); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; - case 156: // columndef_list + case 161: // columndef_list value.YY_MOVE_OR_COPY< std::vector > (YY_MOVE (that.value)); break; @@ -459,179 +462,184 @@ namespace sqlb { namespace parser { { switch (that.type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.move< ColumnConstraintInfo > (YY_MOVE (that.value)); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.move< ColumnConstraintInfoVector > (YY_MOVE (that.value)); break; - case 155: // columndef + case 160: // columndef value.move< ColumndefData > (YY_MOVE (that.value)); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.move< bool > (YY_MOVE (that.value)); break; - case 163: // tableconstraint + case 168: // tableconstraint value.move< sqlb::ConstraintPtr > (YY_MOVE (that.value)); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.move< sqlb::ConstraintSet > (YY_MOVE (that.value)); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.move< sqlb::IndexPtr > (YY_MOVE (that.value)); break; - case 144: // indexed_column + case 147: // indexed_column value.move< sqlb::IndexedColumn > (YY_MOVE (that.value)); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.move< sqlb::IndexedColumnVector > (YY_MOVE (that.value)); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.move< sqlb::StringVector > (YY_MOVE (that.value)); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.move< sqlb::TablePtr > (YY_MOVE (that.value)); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.move< std::string > (YY_MOVE (that.value)); break; - case 156: // columndef_list + case 161: // columndef_list value.move< std::vector > (YY_MOVE (that.value)); break; @@ -644,185 +652,385 @@ namespace sqlb { namespace parser { } #if YY_CPLUSPLUS < 201103L + parser::stack_symbol_type& + parser::stack_symbol_type::operator= (const stack_symbol_type& that) + { + state = that.state; + switch (that.type_get ()) + { + case 158: // columnconstraint + value.copy< ColumnConstraintInfo > (that.value); + break; + + case 159: // columnconstraint_list + value.copy< ColumnConstraintInfoVector > (that.value); + break; + + case 160: // columndef + value.copy< ColumndefData > (that.value); + break; + + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated + value.copy< bool > (that.value); + break; + + case 168: // tableconstraint + value.copy< sqlb::ConstraintPtr > (that.value); + break; + + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list + value.copy< sqlb::ConstraintSet > (that.value); + break; + + case 149: // createindex_stmt + value.copy< sqlb::IndexPtr > (that.value); + break; + + case 147: // indexed_column + value.copy< sqlb::IndexedColumn > (that.value); + break; + + case 148: // indexed_column_list + value.copy< sqlb::IndexedColumnVector > (that.value); + break; + + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list + value.copy< sqlb::StringVector > (that.value); + break; + + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt + value.copy< sqlb::TablePtr > (that.value); + break; + + case 27: // "ABORT" + case 28: // "ACTION" + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause + value.copy< std::string > (that.value); + break; + + case 161: // columndef_list + value.copy< std::vector > (that.value); + break; + + default: + break; + } + + location = that.location; + return *this; + } + parser::stack_symbol_type& parser::stack_symbol_type::operator= (stack_symbol_type& that) { state = that.state; switch (that.type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.move< ColumnConstraintInfo > (that.value); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.move< ColumnConstraintInfoVector > (that.value); break; - case 155: // columndef + case 160: // columndef value.move< ColumndefData > (that.value); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.move< bool > (that.value); break; - case 163: // tableconstraint + case 168: // tableconstraint value.move< sqlb::ConstraintPtr > (that.value); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.move< sqlb::ConstraintSet > (that.value); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.move< sqlb::IndexPtr > (that.value); break; - case 144: // indexed_column + case 147: // indexed_column value.move< sqlb::IndexedColumn > (that.value); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.move< sqlb::IndexedColumnVector > (that.value); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.move< sqlb::StringVector > (that.value); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.move< sqlb::TablePtr > (that.value); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.move< std::string > (that.value); break; - case 156: // columndef_list + case 161: // columndef_list value.move< std::vector > (that.value); break; @@ -951,7 +1159,6 @@ namespace sqlb { namespace parser { int parser::parse () { - // State. int yyn; /// Length of the RHS of the rule being reduced. int yylen = 0; @@ -987,7 +1194,7 @@ namespace sqlb { namespace parser { | yynewstate -- push a new symbol on the stack. | `-----------------------------------------------*/ yynewstate: - YYCDEBUG << "Entering state " << yystack_[0].state << '\n'; + YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n'; // Accept? if (yystack_[0].state == yyfinal_) @@ -1001,7 +1208,7 @@ namespace sqlb { namespace parser { `-----------*/ yybackup: // Try to take a decision without lookahead. - yyn = yypact_[yystack_[0].state]; + yyn = yypact_[+yystack_[0].state]; if (yy_pact_value_is_default_ (yyn)) goto yydefault; @@ -1031,7 +1238,9 @@ namespace sqlb { namespace parser { to detect an error, take that action. */ yyn += yyla.type_get (); if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ()) - goto yydefault; + { + goto yydefault; + } // Reduce or error. yyn = yytable_[yyn]; @@ -1048,7 +1257,7 @@ namespace sqlb { namespace parser { --yyerrstatus_; // Shift the lookahead token. - yypush_ ("Shifting", yyn, YY_MOVE (yyla)); + yypush_ ("Shifting", state_type (yyn), YY_MOVE (yyla)); goto yynewstate; @@ -1056,7 +1265,7 @@ namespace sqlb { namespace parser { | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: - yyn = yydefact_[yystack_[0].state]; + yyn = yydefact_[+yystack_[0].state]; if (yyn == 0) goto yyerrlab; goto yyreduce; @@ -1075,179 +1284,184 @@ namespace sqlb { namespace parser { when using variants. */ switch (yyr1_[yyn]) { - case 153: // columnconstraint + case 158: // columnconstraint yylhs.value.emplace< ColumnConstraintInfo > (); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list yylhs.value.emplace< ColumnConstraintInfoVector > (); break; - case 155: // columndef + case 160: // columndef yylhs.value.emplace< ColumndefData > (); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated yylhs.value.emplace< bool > (); break; - case 163: // tableconstraint + case 168: // tableconstraint yylhs.value.emplace< sqlb::ConstraintPtr > (); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list yylhs.value.emplace< sqlb::ConstraintSet > (); break; - case 146: // createindex_stmt + case 149: // createindex_stmt yylhs.value.emplace< sqlb::IndexPtr > (); break; - case 144: // indexed_column + case 147: // indexed_column yylhs.value.emplace< sqlb::IndexedColumn > (); break; - case 145: // indexed_column_list + case 148: // indexed_column_list yylhs.value.emplace< sqlb::IndexedColumnVector > (); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list yylhs.value.emplace< sqlb::StringVector > (); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt yylhs.value.emplace< sqlb::TablePtr > (); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause yylhs.value.emplace< std::string > (); break; - case 156: // columndef_list + case 161: // columndef_list yylhs.value.emplace< std::vector > (); break; @@ -1272,1094 +1486,1112 @@ namespace sqlb { namespace parser { switch (yyn) { case 4: -#line 306 "sqlite3_parser.yy" - { drv.result = yystack_[0].value.as < sqlb::IndexPtr > (); } -#line 1278 "sqlite3_parser.cpp" +#line 314 "sqlite3_parser.yy" + { drv.result = yystack_[0].value.as < sqlb::IndexPtr > (); } +#line 1492 "sqlite3_parser.cpp" break; case 5: -#line 307 "sqlite3_parser.yy" - { drv.result = yystack_[0].value.as < sqlb::TablePtr > (); } -#line 1284 "sqlite3_parser.cpp" +#line 315 "sqlite3_parser.yy" + { drv.result = yystack_[0].value.as < sqlb::TablePtr > (); } +#line 1498 "sqlite3_parser.cpp" break; case 6: -#line 308 "sqlite3_parser.yy" - { drv.result = yystack_[0].value.as < sqlb::TablePtr > (); } -#line 1290 "sqlite3_parser.cpp" +#line 316 "sqlite3_parser.yy" + { drv.result = yystack_[0].value.as < sqlb::TablePtr > (); } +#line 1504 "sqlite3_parser.cpp" break; case 7: -#line 316 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1296 "sqlite3_parser.cpp" +#line 324 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1510 "sqlite3_parser.cpp" break; case 8: -#line 317 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1302 "sqlite3_parser.cpp" +#line 325 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1516 "sqlite3_parser.cpp" break; case 9: -#line 318 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1308 "sqlite3_parser.cpp" +#line 326 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1522 "sqlite3_parser.cpp" break; case 10: -#line 319 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1314 "sqlite3_parser.cpp" +#line 327 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1528 "sqlite3_parser.cpp" break; case 11: -#line 320 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1320 "sqlite3_parser.cpp" +#line 328 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1534 "sqlite3_parser.cpp" break; case 12: -#line 321 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1326 "sqlite3_parser.cpp" +#line 329 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1540 "sqlite3_parser.cpp" break; case 13: -#line 322 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1332 "sqlite3_parser.cpp" +#line 330 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1546 "sqlite3_parser.cpp" break; case 14: -#line 323 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1338 "sqlite3_parser.cpp" +#line 331 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1552 "sqlite3_parser.cpp" break; case 15: -#line 324 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1344 "sqlite3_parser.cpp" +#line 332 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1558 "sqlite3_parser.cpp" break; case 16: -#line 328 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1350 "sqlite3_parser.cpp" +#line 336 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1564 "sqlite3_parser.cpp" break; case 17: -#line 329 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1356 "sqlite3_parser.cpp" +#line 337 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1570 "sqlite3_parser.cpp" break; case 18: -#line 334 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1362 "sqlite3_parser.cpp" +#line 342 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1576 "sqlite3_parser.cpp" break; case 19: -#line 335 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1368 "sqlite3_parser.cpp" +#line 343 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1582 "sqlite3_parser.cpp" break; case 20: -#line 336 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1374 "sqlite3_parser.cpp" +#line 344 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1588 "sqlite3_parser.cpp" break; case 21: -#line 337 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1380 "sqlite3_parser.cpp" +#line 345 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1594 "sqlite3_parser.cpp" break; case 22: -#line 338 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1386 "sqlite3_parser.cpp" +#line 346 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1600 "sqlite3_parser.cpp" break; case 23: -#line 339 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1392 "sqlite3_parser.cpp" +#line 347 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1606 "sqlite3_parser.cpp" break; case 24: -#line 340 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1398 "sqlite3_parser.cpp" +#line 348 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1612 "sqlite3_parser.cpp" break; case 25: -#line 341 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1404 "sqlite3_parser.cpp" +#line 349 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1618 "sqlite3_parser.cpp" break; case 26: -#line 342 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1410 "sqlite3_parser.cpp" +#line 350 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1624 "sqlite3_parser.cpp" break; case 27: -#line 343 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1416 "sqlite3_parser.cpp" +#line 351 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1630 "sqlite3_parser.cpp" break; case 28: -#line 344 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1422 "sqlite3_parser.cpp" +#line 352 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1636 "sqlite3_parser.cpp" break; case 29: -#line 345 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1428 "sqlite3_parser.cpp" +#line 353 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1642 "sqlite3_parser.cpp" break; case 30: -#line 346 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1434 "sqlite3_parser.cpp" +#line 354 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1648 "sqlite3_parser.cpp" break; case 31: -#line 347 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1440 "sqlite3_parser.cpp" +#line 355 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1654 "sqlite3_parser.cpp" break; case 32: -#line 348 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1446 "sqlite3_parser.cpp" +#line 356 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1660 "sqlite3_parser.cpp" break; case 33: -#line 349 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1452 "sqlite3_parser.cpp" +#line 357 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1666 "sqlite3_parser.cpp" break; case 34: -#line 350 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1458 "sqlite3_parser.cpp" +#line 358 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1672 "sqlite3_parser.cpp" break; case 35: -#line 351 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1464 "sqlite3_parser.cpp" +#line 359 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1678 "sqlite3_parser.cpp" break; case 36: -#line 352 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1470 "sqlite3_parser.cpp" +#line 360 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1684 "sqlite3_parser.cpp" break; case 37: -#line 353 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1476 "sqlite3_parser.cpp" +#line 361 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1690 "sqlite3_parser.cpp" break; case 38: -#line 354 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1482 "sqlite3_parser.cpp" +#line 362 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1696 "sqlite3_parser.cpp" break; case 39: -#line 355 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1488 "sqlite3_parser.cpp" +#line 363 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1702 "sqlite3_parser.cpp" break; case 40: -#line 356 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1494 "sqlite3_parser.cpp" +#line 364 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1708 "sqlite3_parser.cpp" break; case 41: -#line 357 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1500 "sqlite3_parser.cpp" +#line 365 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1714 "sqlite3_parser.cpp" break; case 42: -#line 358 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1506 "sqlite3_parser.cpp" +#line 366 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1720 "sqlite3_parser.cpp" break; case 43: -#line 359 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1512 "sqlite3_parser.cpp" +#line 367 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1726 "sqlite3_parser.cpp" break; case 44: -#line 360 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1518 "sqlite3_parser.cpp" +#line 368 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1732 "sqlite3_parser.cpp" break; case 45: -#line 361 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1524 "sqlite3_parser.cpp" +#line 369 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1738 "sqlite3_parser.cpp" break; case 46: -#line 362 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1530 "sqlite3_parser.cpp" +#line 370 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1744 "sqlite3_parser.cpp" break; case 47: -#line 363 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1536 "sqlite3_parser.cpp" +#line 371 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1750 "sqlite3_parser.cpp" break; case 48: -#line 364 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1542 "sqlite3_parser.cpp" +#line 372 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1756 "sqlite3_parser.cpp" break; case 49: -#line 365 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1548 "sqlite3_parser.cpp" +#line 373 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1762 "sqlite3_parser.cpp" break; case 50: -#line 366 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1554 "sqlite3_parser.cpp" +#line 374 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1768 "sqlite3_parser.cpp" break; case 51: -#line 367 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1560 "sqlite3_parser.cpp" +#line 375 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1774 "sqlite3_parser.cpp" break; case 52: -#line 368 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1566 "sqlite3_parser.cpp" +#line 376 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1780 "sqlite3_parser.cpp" break; case 53: -#line 369 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1572 "sqlite3_parser.cpp" +#line 377 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1786 "sqlite3_parser.cpp" break; case 54: -#line 373 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1578 "sqlite3_parser.cpp" +#line 378 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1792 "sqlite3_parser.cpp" break; case 55: -#line 374 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1584 "sqlite3_parser.cpp" +#line 379 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1798 "sqlite3_parser.cpp" break; case 56: -#line 375 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1590 "sqlite3_parser.cpp" +#line 380 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1804 "sqlite3_parser.cpp" break; case 57: -#line 376 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1596 "sqlite3_parser.cpp" +#line 384 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1810 "sqlite3_parser.cpp" break; case 58: -#line 377 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1602 "sqlite3_parser.cpp" +#line 385 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1816 "sqlite3_parser.cpp" break; case 59: -#line 378 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = unquote_text(yystack_[0].value.as < std::string > (), '\''); } -#line 1608 "sqlite3_parser.cpp" +#line 386 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1822 "sqlite3_parser.cpp" break; case 60: -#line 382 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1614 "sqlite3_parser.cpp" +#line 387 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1828 "sqlite3_parser.cpp" break; case 61: -#line 383 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1620 "sqlite3_parser.cpp" +#line 388 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1834 "sqlite3_parser.cpp" break; case 62: -#line 384 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1626 "sqlite3_parser.cpp" +#line 389 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = unquote_text(yystack_[0].value.as < std::string > (), '\''); } +#line 1840 "sqlite3_parser.cpp" break; case 63: -#line 385 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1632 "sqlite3_parser.cpp" +#line 393 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1846 "sqlite3_parser.cpp" break; case 64: -#line 386 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1638 "sqlite3_parser.cpp" +#line 394 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1852 "sqlite3_parser.cpp" break; case 65: -#line 387 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1644 "sqlite3_parser.cpp" +#line 395 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1858 "sqlite3_parser.cpp" break; case 66: -#line 388 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = unquote_text(yystack_[0].value.as < std::string > (), '\''); } -#line 1650 "sqlite3_parser.cpp" +#line 396 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1864 "sqlite3_parser.cpp" break; case 67: -#line 392 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "+" + yystack_[0].value.as < std::string > (); } -#line 1656 "sqlite3_parser.cpp" +#line 397 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1870 "sqlite3_parser.cpp" break; case 68: -#line 393 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "-" + yystack_[0].value.as < std::string > (); } -#line 1662 "sqlite3_parser.cpp" +#line 398 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1876 "sqlite3_parser.cpp" break; case 69: -#line 397 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1668 "sqlite3_parser.cpp" +#line 399 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = unquote_text(yystack_[0].value.as < std::string > (), '\''); } +#line 1882 "sqlite3_parser.cpp" break; case 70: -#line 398 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1674 "sqlite3_parser.cpp" +#line 403 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "+" + yystack_[0].value.as < std::string > (); } +#line 1888 "sqlite3_parser.cpp" break; case 71: -#line 402 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1680 "sqlite3_parser.cpp" +#line 404 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "-" + yystack_[0].value.as < std::string > (); } +#line 1894 "sqlite3_parser.cpp" break; case 72: -#line 403 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 1686 "sqlite3_parser.cpp" +#line 408 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1900 "sqlite3_parser.cpp" break; case 73: -#line 407 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1692 "sqlite3_parser.cpp" +#line 409 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1906 "sqlite3_parser.cpp" break; case 74: -#line 408 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 1698 "sqlite3_parser.cpp" +#line 413 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1912 "sqlite3_parser.cpp" break; case 75: -#line 409 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + "(" + yystack_[3].value.as < std::string > () + ", " + yystack_[1].value.as < std::string > () + ")"; } -#line 1704 "sqlite3_parser.cpp" +#line 414 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 1918 "sqlite3_parser.cpp" break; case 76: -#line 413 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "-" + yystack_[0].value.as < std::string > (); } -#line 1710 "sqlite3_parser.cpp" +#line 418 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 1924 "sqlite3_parser.cpp" break; case 77: -#line 414 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "+" + yystack_[0].value.as < std::string > (); } -#line 1716 "sqlite3_parser.cpp" +#line 419 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 1930 "sqlite3_parser.cpp" break; case 78: -#line 415 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "~" + yystack_[0].value.as < std::string > (); } -#line 1722 "sqlite3_parser.cpp" +#line 420 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + "(" + yystack_[3].value.as < std::string > () + ", " + yystack_[1].value.as < std::string > () + ")"; } +#line 1936 "sqlite3_parser.cpp" break; case 79: -#line 416 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "NOT " + yystack_[0].value.as < std::string > (); } -#line 1728 "sqlite3_parser.cpp" +#line 424 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "-" + yystack_[0].value.as < std::string > (); } +#line 1942 "sqlite3_parser.cpp" break; case 80: -#line 420 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " || " + yystack_[0].value.as < std::string > (); } -#line 1734 "sqlite3_parser.cpp" +#line 425 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "+" + yystack_[0].value.as < std::string > (); } +#line 1948 "sqlite3_parser.cpp" break; case 81: -#line 421 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " * " + yystack_[0].value.as < std::string > (); } -#line 1740 "sqlite3_parser.cpp" +#line 426 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "~" + yystack_[0].value.as < std::string > (); } +#line 1954 "sqlite3_parser.cpp" break; case 82: -#line 422 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " / " + yystack_[0].value.as < std::string > (); } -#line 1746 "sqlite3_parser.cpp" +#line 427 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "NOT " + yystack_[0].value.as < std::string > (); } +#line 1960 "sqlite3_parser.cpp" break; case 83: -#line 423 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " % " + yystack_[0].value.as < std::string > (); } -#line 1752 "sqlite3_parser.cpp" +#line 431 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " || " + yystack_[0].value.as < std::string > (); } +#line 1966 "sqlite3_parser.cpp" break; case 84: -#line 424 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " + " + yystack_[0].value.as < std::string > (); } -#line 1758 "sqlite3_parser.cpp" +#line 432 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " * " + yystack_[0].value.as < std::string > (); } +#line 1972 "sqlite3_parser.cpp" break; case 85: -#line 425 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " - " + yystack_[0].value.as < std::string > (); } -#line 1764 "sqlite3_parser.cpp" +#line 433 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " / " + yystack_[0].value.as < std::string > (); } +#line 1978 "sqlite3_parser.cpp" break; case 86: -#line 426 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " << " + yystack_[0].value.as < std::string > (); } -#line 1770 "sqlite3_parser.cpp" +#line 434 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " % " + yystack_[0].value.as < std::string > (); } +#line 1984 "sqlite3_parser.cpp" break; case 87: -#line 427 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " >> " + yystack_[0].value.as < std::string > (); } -#line 1776 "sqlite3_parser.cpp" +#line 435 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " + " + yystack_[0].value.as < std::string > (); } +#line 1990 "sqlite3_parser.cpp" break; case 88: -#line 428 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " & " + yystack_[0].value.as < std::string > (); } -#line 1782 "sqlite3_parser.cpp" +#line 436 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " - " + yystack_[0].value.as < std::string > (); } +#line 1996 "sqlite3_parser.cpp" break; case 89: -#line 429 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " | " + yystack_[0].value.as < std::string > (); } -#line 1788 "sqlite3_parser.cpp" +#line 437 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " << " + yystack_[0].value.as < std::string > (); } +#line 2002 "sqlite3_parser.cpp" break; case 90: -#line 430 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " < " + yystack_[0].value.as < std::string > (); } -#line 1794 "sqlite3_parser.cpp" +#line 438 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " >> " + yystack_[0].value.as < std::string > (); } +#line 2008 "sqlite3_parser.cpp" break; case 91: -#line 431 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " <= " + yystack_[0].value.as < std::string > (); } -#line 1800 "sqlite3_parser.cpp" +#line 439 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " & " + yystack_[0].value.as < std::string > (); } +#line 2014 "sqlite3_parser.cpp" break; case 92: -#line 432 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " > " + yystack_[0].value.as < std::string > (); } -#line 1806 "sqlite3_parser.cpp" +#line 440 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " | " + yystack_[0].value.as < std::string > (); } +#line 2020 "sqlite3_parser.cpp" break; case 93: -#line 433 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " >= " + yystack_[0].value.as < std::string > (); } -#line 1812 "sqlite3_parser.cpp" +#line 441 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " < " + yystack_[0].value.as < std::string > (); } +#line 2026 "sqlite3_parser.cpp" break; case 94: -#line 434 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " = " + yystack_[0].value.as < std::string > (); } -#line 1818 "sqlite3_parser.cpp" +#line 442 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " <= " + yystack_[0].value.as < std::string > (); } +#line 2032 "sqlite3_parser.cpp" break; case 95: -#line 435 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " == " + yystack_[0].value.as < std::string > (); } -#line 1824 "sqlite3_parser.cpp" +#line 443 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " > " + yystack_[0].value.as < std::string > (); } +#line 2038 "sqlite3_parser.cpp" break; case 96: -#line 436 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " != " + yystack_[0].value.as < std::string > (); } -#line 1830 "sqlite3_parser.cpp" +#line 444 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " >= " + yystack_[0].value.as < std::string > (); } +#line 2044 "sqlite3_parser.cpp" break; case 97: -#line 437 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " <> " + yystack_[0].value.as < std::string > (); } -#line 1836 "sqlite3_parser.cpp" +#line 445 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " = " + yystack_[0].value.as < std::string > (); } +#line 2050 "sqlite3_parser.cpp" break; case 98: -#line 438 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " IS " + yystack_[0].value.as < std::string > (); } -#line 1842 "sqlite3_parser.cpp" +#line 446 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " == " + yystack_[0].value.as < std::string > (); } +#line 2056 "sqlite3_parser.cpp" break; case 99: -#line 439 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } -#line 1848 "sqlite3_parser.cpp" +#line 447 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " != " + yystack_[0].value.as < std::string > (); } +#line 2062 "sqlite3_parser.cpp" break; case 100: -#line 440 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " OR " + yystack_[0].value.as < std::string > (); } -#line 1854 "sqlite3_parser.cpp" +#line 448 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " <> " + yystack_[0].value.as < std::string > (); } +#line 2068 "sqlite3_parser.cpp" break; case 101: -#line 444 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " LIKE " + yystack_[0].value.as < std::string > (); } -#line 1860 "sqlite3_parser.cpp" +#line 449 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " IS " + yystack_[0].value.as < std::string > (); } +#line 2074 "sqlite3_parser.cpp" break; case 102: -#line 445 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " GLOB " + yystack_[0].value.as < std::string > (); } -#line 1866 "sqlite3_parser.cpp" +#line 450 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } +#line 2080 "sqlite3_parser.cpp" break; case 103: -#line 446 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " MATCH " + yystack_[0].value.as < std::string > (); } -#line 1872 "sqlite3_parser.cpp" +#line 451 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " OR " + yystack_[0].value.as < std::string > (); } +#line 2086 "sqlite3_parser.cpp" break; case 104: -#line 447 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " REGEXP " + yystack_[0].value.as < std::string > (); } -#line 1878 "sqlite3_parser.cpp" +#line 455 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " LIKE " + yystack_[0].value.as < std::string > (); } +#line 2092 "sqlite3_parser.cpp" break; case 105: -#line 448 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT LIKE " + yystack_[0].value.as < std::string > (); } -#line 1884 "sqlite3_parser.cpp" +#line 456 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " GLOB " + yystack_[0].value.as < std::string > (); } +#line 2098 "sqlite3_parser.cpp" break; case 106: -#line 449 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT GLOB " + yystack_[0].value.as < std::string > (); } -#line 1890 "sqlite3_parser.cpp" +#line 457 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " MATCH " + yystack_[0].value.as < std::string > (); } +#line 2104 "sqlite3_parser.cpp" break; case 107: -#line 450 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT MATCH " + yystack_[0].value.as < std::string > (); } -#line 1896 "sqlite3_parser.cpp" +#line 458 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " REGEXP " + yystack_[0].value.as < std::string > (); } +#line 2110 "sqlite3_parser.cpp" break; case 108: -#line 451 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT REGEXP " + yystack_[0].value.as < std::string > (); } -#line 1902 "sqlite3_parser.cpp" +#line 459 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT LIKE " + yystack_[0].value.as < std::string > (); } +#line 2116 "sqlite3_parser.cpp" break; case 109: -#line 452 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " LIKE " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1908 "sqlite3_parser.cpp" +#line 460 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT GLOB " + yystack_[0].value.as < std::string > (); } +#line 2122 "sqlite3_parser.cpp" break; case 110: -#line 453 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " GLOB " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1914 "sqlite3_parser.cpp" +#line 461 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT MATCH " + yystack_[0].value.as < std::string > (); } +#line 2128 "sqlite3_parser.cpp" break; case 111: -#line 454 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " MATCH " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1920 "sqlite3_parser.cpp" +#line 462 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT REGEXP " + yystack_[0].value.as < std::string > (); } +#line 2134 "sqlite3_parser.cpp" break; case 112: -#line 455 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " REGEXP " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1926 "sqlite3_parser.cpp" +#line 463 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " LIKE " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2140 "sqlite3_parser.cpp" break; case 113: -#line 456 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT LIKE " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1932 "sqlite3_parser.cpp" +#line 464 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " GLOB " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2146 "sqlite3_parser.cpp" break; case 114: -#line 457 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT GLOB " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1938 "sqlite3_parser.cpp" +#line 465 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " MATCH " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2152 "sqlite3_parser.cpp" break; case 115: -#line 458 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT MATCH " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1944 "sqlite3_parser.cpp" +#line 466 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " REGEXP " + yystack_[2].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2158 "sqlite3_parser.cpp" break; case 116: -#line 459 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT REGEXP " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } -#line 1950 "sqlite3_parser.cpp" +#line 467 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT LIKE " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2164 "sqlite3_parser.cpp" break; case 117: -#line 463 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 1956 "sqlite3_parser.cpp" +#line 468 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT GLOB " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2170 "sqlite3_parser.cpp" break; case 118: -#line 464 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + ", " + yystack_[0].value.as < std::string > (); } -#line 1962 "sqlite3_parser.cpp" +#line 469 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT MATCH " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2176 "sqlite3_parser.cpp" break; case 119: -#line 468 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 1968 "sqlite3_parser.cpp" +#line 470 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT REGEXP " + yystack_[3].value.as < std::string > () + " ESCAPE " + yystack_[0].value.as < std::string > (); } +#line 2182 "sqlite3_parser.cpp" break; case 120: -#line 469 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + "(DISTINCT " + yystack_[1].value.as < std::string > () + ")"; } -#line 1974 "sqlite3_parser.cpp" +#line 474 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2188 "sqlite3_parser.cpp" break; case 121: -#line 470 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + "()"; } -#line 1980 "sqlite3_parser.cpp" +#line 475 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + ", " + yystack_[0].value.as < std::string > (); } +#line 2194 "sqlite3_parser.cpp" break; case 122: -#line 471 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(*)"; } -#line 1986 "sqlite3_parser.cpp" +#line 479 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2200 "sqlite3_parser.cpp" break; case 123: -#line 475 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " ISNULL"; } -#line 1992 "sqlite3_parser.cpp" +#line 480 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + "(DISTINCT " + yystack_[1].value.as < std::string > () + ")"; } +#line 2206 "sqlite3_parser.cpp" break; case 124: -#line 476 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " NOTNULL"; } -#line 1998 "sqlite3_parser.cpp" +#line 481 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + "()"; } +#line 2212 "sqlite3_parser.cpp" break; case 125: -#line 477 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " NOT NULL"; } -#line 2004 "sqlite3_parser.cpp" +#line 482 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + "(*)"; } +#line 2218 "sqlite3_parser.cpp" break; case 126: -#line 481 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " BETWEEN " + yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } -#line 2010 "sqlite3_parser.cpp" +#line 486 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " ISNULL"; } +#line 2224 "sqlite3_parser.cpp" break; case 127: -#line 482 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT BETWEEN " + yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } -#line 2016 "sqlite3_parser.cpp" +#line 487 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " NOTNULL"; } +#line 2230 "sqlite3_parser.cpp" break; case 128: -#line 486 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " IN ()"; } -#line 2022 "sqlite3_parser.cpp" +#line 488 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " NOT NULL"; } +#line 2236 "sqlite3_parser.cpp" break; case 129: -#line 487 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN (" + yystack_[1].value.as < std::string > () + ")"; } -#line 2028 "sqlite3_parser.cpp" +#line 492 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " BETWEEN " + yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } +#line 2242 "sqlite3_parser.cpp" break; case 130: -#line 488 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN (" + yystack_[1].value.as < std::string > () + ")"; } -#line 2034 "sqlite3_parser.cpp" +#line 493 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT BETWEEN " + yystack_[2].value.as < std::string > () + " AND " + yystack_[0].value.as < std::string > (); } +#line 2248 "sqlite3_parser.cpp" break; case 131: -#line 489 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2040 "sqlite3_parser.cpp" +#line 497 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " IN ()"; } +#line 2254 "sqlite3_parser.cpp" break; case 132: -#line 490 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2046 "sqlite3_parser.cpp" +#line 498 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN (" + yystack_[1].value.as < std::string > () + ")"; } +#line 2260 "sqlite3_parser.cpp" break; case 133: -#line 491 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[6].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + yystack_[2].value.as < std::string > () + "()"; } -#line 2052 "sqlite3_parser.cpp" +#line 499 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN (" + yystack_[1].value.as < std::string > () + ")"; } +#line 2266 "sqlite3_parser.cpp" break; case 134: -#line 492 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[7].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[5].value.as < std::string > ()) + "." + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 2058 "sqlite3_parser.cpp" +#line 500 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2272 "sqlite3_parser.cpp" break; case 135: -#line 493 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " IN " + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 2064 "sqlite3_parser.cpp" +#line 501 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2278 "sqlite3_parser.cpp" break; case 136: -#line 494 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " NOT IN ()"; } -#line 2070 "sqlite3_parser.cpp" +#line 502 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[6].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + yystack_[2].value.as < std::string > () + "()"; } +#line 2284 "sqlite3_parser.cpp" break; case 137: -#line 495 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN (" + yystack_[1].value.as < std::string > () + ")"; } -#line 2076 "sqlite3_parser.cpp" +#line 503 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[7].value.as < std::string > () + " IN " + sqlb::escapeIdentifier(yystack_[5].value.as < std::string > ()) + "." + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2290 "sqlite3_parser.cpp" break; case 138: -#line 496 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN (" + yystack_[1].value.as < std::string > () + ")"; } -#line 2082 "sqlite3_parser.cpp" +#line 504 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " IN " + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2296 "sqlite3_parser.cpp" break; case 139: -#line 497 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2088 "sqlite3_parser.cpp" +#line 505 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " NOT IN ()"; } +#line 2302 "sqlite3_parser.cpp" break; case 140: -#line 498 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2094 "sqlite3_parser.cpp" +#line 506 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN (" + yystack_[1].value.as < std::string > () + ")"; } +#line 2308 "sqlite3_parser.cpp" break; case 141: -#line 499 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[7].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + yystack_[2].value.as < std::string > () + "()"; } -#line 2100 "sqlite3_parser.cpp" +#line 507 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN (" + yystack_[1].value.as < std::string > () + ")"; } +#line 2314 "sqlite3_parser.cpp" break; case 142: -#line 500 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[8].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[5].value.as < std::string > ()) + "." + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 2106 "sqlite3_parser.cpp" +#line 508 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[5].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2320 "sqlite3_parser.cpp" break; case 143: -#line 501 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[6].value.as < std::string > () + " NOT IN " + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 2112 "sqlite3_parser.cpp" +#line 509 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2326 "sqlite3_parser.cpp" break; case 144: -#line 505 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "WHEN " + yystack_[2].value.as < std::string > () + " THEN " + yystack_[0].value.as < std::string > (); } -#line 2118 "sqlite3_parser.cpp" +#line 510 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[7].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + yystack_[2].value.as < std::string > () + "()"; } +#line 2332 "sqlite3_parser.cpp" break; case 145: -#line 506 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " WHEN" + yystack_[2].value.as < std::string > () + " THEN " + yystack_[0].value.as < std::string > (); } -#line 2124 "sqlite3_parser.cpp" +#line 511 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[8].value.as < std::string > () + " NOT IN " + sqlb::escapeIdentifier(yystack_[5].value.as < std::string > ()) + "." + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2338 "sqlite3_parser.cpp" break; case 146: -#line 510 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "CASE " + yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " ELSE " + yystack_[1].value.as < std::string > () + " END"; } -#line 2130 "sqlite3_parser.cpp" +#line 512 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[6].value.as < std::string > () + " NOT IN " + yystack_[3].value.as < std::string > () + "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2344 "sqlite3_parser.cpp" break; case 147: -#line 511 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "CASE " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " END"; } -#line 2136 "sqlite3_parser.cpp" +#line 516 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "WHEN " + yystack_[2].value.as < std::string > () + " THEN " + yystack_[0].value.as < std::string > (); } +#line 2350 "sqlite3_parser.cpp" break; case 148: -#line 512 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "CASE " + yystack_[3].value.as < std::string > () + " ELSE " + yystack_[1].value.as < std::string > () + " END"; } -#line 2142 "sqlite3_parser.cpp" +#line 517 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " WHEN" + yystack_[2].value.as < std::string > () + " THEN " + yystack_[0].value.as < std::string > (); } +#line 2356 "sqlite3_parser.cpp" break; case 149: -#line 513 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "CASE " + yystack_[1].value.as < std::string > () + " END"; } -#line 2148 "sqlite3_parser.cpp" +#line 521 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "CASE " + yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " ELSE " + yystack_[1].value.as < std::string > () + " END"; } +#line 2362 "sqlite3_parser.cpp" break; case 150: -#line 517 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "RAISE(IGNORE)"; } -#line 2154 "sqlite3_parser.cpp" +#line 522 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "CASE " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " END"; } +#line 2368 "sqlite3_parser.cpp" break; case 151: -#line 518 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "RAISE(ROLLBACK, " + yystack_[1].value.as < std::string > () + ")"; } -#line 2160 "sqlite3_parser.cpp" +#line 523 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "CASE " + yystack_[3].value.as < std::string > () + " ELSE " + yystack_[1].value.as < std::string > () + " END"; } +#line 2374 "sqlite3_parser.cpp" break; case 152: -#line 519 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "RAISE(ABORT, " + yystack_[1].value.as < std::string > () + ")"; } -#line 2166 "sqlite3_parser.cpp" +#line 524 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "CASE " + yystack_[1].value.as < std::string > () + " END"; } +#line 2380 "sqlite3_parser.cpp" break; case 153: -#line 520 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "RAISE(FAIL, " + yystack_[1].value.as < std::string > () + ")"; } -#line 2172 "sqlite3_parser.cpp" +#line 528 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "RAISE(IGNORE)"; } +#line 2386 "sqlite3_parser.cpp" break; case 154: -#line 524 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2178 "sqlite3_parser.cpp" +#line 529 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "RAISE(ROLLBACK, " + yystack_[1].value.as < std::string > () + ")"; } +#line 2392 "sqlite3_parser.cpp" break; case 155: -#line 525 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2184 "sqlite3_parser.cpp" +#line 530 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "RAISE(ABORT, " + yystack_[1].value.as < std::string > () + ")"; } +#line 2398 "sqlite3_parser.cpp" break; case 156: -#line 526 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2190 "sqlite3_parser.cpp" +#line 531 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "RAISE(FAIL, " + yystack_[1].value.as < std::string > () + ")"; } +#line 2404 "sqlite3_parser.cpp" break; case 157: -#line 527 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2196 "sqlite3_parser.cpp" +#line 535 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2410 "sqlite3_parser.cpp" break; case 158: -#line 528 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2202 "sqlite3_parser.cpp" +#line 536 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2416 "sqlite3_parser.cpp" break; case 159: -#line 529 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } -#line 2208 "sqlite3_parser.cpp" +#line 537 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2422 "sqlite3_parser.cpp" break; case 160: -#line 530 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2214 "sqlite3_parser.cpp" +#line 538 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[4].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2428 "sqlite3_parser.cpp" break; case 161: -#line 531 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2220 "sqlite3_parser.cpp" +#line 539 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[2].value.as < std::string > ()) + "." + sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2434 "sqlite3_parser.cpp" break; case 162: -#line 532 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2226 "sqlite3_parser.cpp" +#line 540 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = sqlb::escapeIdentifier(yystack_[0].value.as < std::string > ()); } +#line 2440 "sqlite3_parser.cpp" break; case 163: -#line 533 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "(" + yystack_[1].value.as < std::string > () + ")"; } -#line 2232 "sqlite3_parser.cpp" +#line 541 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2446 "sqlite3_parser.cpp" break; case 164: -#line 534 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "CAST(" + yystack_[3].value.as < std::string > () + " AS " + yystack_[1].value.as < std::string > () + ")"; } -#line 2238 "sqlite3_parser.cpp" +#line 542 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2452 "sqlite3_parser.cpp" break; case 165: -#line 535 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " COLLATE " + yystack_[0].value.as < std::string > (); } -#line 2244 "sqlite3_parser.cpp" +#line 543 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2458 "sqlite3_parser.cpp" break; case 166: -#line 536 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2250 "sqlite3_parser.cpp" +#line 544 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "(" + yystack_[1].value.as < std::string > () + ")"; } +#line 2464 "sqlite3_parser.cpp" break; case 167: -#line 537 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2256 "sqlite3_parser.cpp" +#line 545 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "CAST(" + yystack_[3].value.as < std::string > () + " AS " + yystack_[1].value.as < std::string > () + ")"; } +#line 2470 "sqlite3_parser.cpp" break; case 168: -#line 538 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2262 "sqlite3_parser.cpp" +#line 546 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " COLLATE " + yystack_[0].value.as < std::string > (); } +#line 2476 "sqlite3_parser.cpp" break; case 169: -#line 539 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2268 "sqlite3_parser.cpp" +#line 547 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2482 "sqlite3_parser.cpp" break; case 170: -#line 540 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2274 "sqlite3_parser.cpp" +#line 548 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2488 "sqlite3_parser.cpp" break; case 171: -#line 541 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2280 "sqlite3_parser.cpp" +#line 549 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2494 "sqlite3_parser.cpp" break; case 172: #line 550 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "SELECT"; } -#line 2286 "sqlite3_parser.cpp" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2500 "sqlite3_parser.cpp" break; case 173: -#line 558 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = false; } -#line 2292 "sqlite3_parser.cpp" +#line 551 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2506 "sqlite3_parser.cpp" break; case 174: -#line 559 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = true; } -#line 2298 "sqlite3_parser.cpp" +#line 552 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2512 "sqlite3_parser.cpp" break; case 175: -#line 563 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2304 "sqlite3_parser.cpp" +#line 561 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "SELECT"; } +#line 2518 "sqlite3_parser.cpp" break; case 176: -#line 564 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "ASC"; } -#line 2310 "sqlite3_parser.cpp" +#line 569 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = false; } +#line 2524 "sqlite3_parser.cpp" break; case 177: -#line 565 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = "DESC"; } -#line 2316 "sqlite3_parser.cpp" +#line 570 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2530 "sqlite3_parser.cpp" break; case 178: -#line 573 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = false; } -#line 2322 "sqlite3_parser.cpp" +#line 574 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 2536 "sqlite3_parser.cpp" break; case 179: -#line 574 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = true; } -#line 2328 "sqlite3_parser.cpp" +#line 575 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "ASC"; } +#line 2542 "sqlite3_parser.cpp" break; case 180: -#line 578 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2334 "sqlite3_parser.cpp" +#line 576 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "DESC"; } +#line 2548 "sqlite3_parser.cpp" break; case 181: -#line 579 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2340 "sqlite3_parser.cpp" +#line 584 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = false; } +#line 2554 "sqlite3_parser.cpp" break; case 182: -#line 583 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2346 "sqlite3_parser.cpp" +#line 585 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2560 "sqlite3_parser.cpp" break; case 183: -#line 584 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2352 "sqlite3_parser.cpp" +#line 589 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 2566 "sqlite3_parser.cpp" break; case 184: -#line 585 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2358 "sqlite3_parser.cpp" +#line 590 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2572 "sqlite3_parser.cpp" break; case 185: -#line 589 "sqlite3_parser.yy" - { +#line 594 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2578 "sqlite3_parser.cpp" + break; + + case 186: +#line 595 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2584 "sqlite3_parser.cpp" + break; + + case 187: +#line 596 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2590 "sqlite3_parser.cpp" + break; + + case 188: +#line 600 "sqlite3_parser.yy" + { // If the expression is only one column name and nothing else, treat it as a column name; otherwise as an expression. char quote = getIdentifierQuoteChar(); if((quote == '[' && std::count(yystack_[1].value.as < std::string > ().begin(), yystack_[1].value.as < std::string > ().end(), quote) == 1 && yystack_[1].value.as < std::string > ().front() == '[' && yystack_[1].value.as < std::string > ().back() == ']') || @@ -2370,24 +2602,24 @@ namespace sqlb { namespace parser { yylhs.value.as < sqlb::IndexedColumn > () = sqlb::IndexedColumn(yystack_[1].value.as < std::string > (), true, yystack_[0].value.as < std::string > ()); } } -#line 2374 "sqlite3_parser.cpp" +#line 2606 "sqlite3_parser.cpp" break; - case 186: -#line 603 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::IndexedColumnVector > () = sqlb::IndexedColumnVector(1, yystack_[0].value.as < sqlb::IndexedColumn > ()); } -#line 2380 "sqlite3_parser.cpp" + case 189: +#line 614 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::IndexedColumnVector > () = sqlb::IndexedColumnVector(1, yystack_[0].value.as < sqlb::IndexedColumn > ()); } +#line 2612 "sqlite3_parser.cpp" break; - case 187: -#line 604 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::IndexedColumnVector > () = yystack_[2].value.as < sqlb::IndexedColumnVector > (); yylhs.value.as < sqlb::IndexedColumnVector > ().push_back(yystack_[0].value.as < sqlb::IndexedColumn > ()); } -#line 2386 "sqlite3_parser.cpp" + case 190: +#line 615 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::IndexedColumnVector > () = yystack_[2].value.as < sqlb::IndexedColumnVector > (); yylhs.value.as < sqlb::IndexedColumnVector > ().push_back(yystack_[0].value.as < sqlb::IndexedColumn > ()); } +#line 2618 "sqlite3_parser.cpp" break; - case 188: -#line 608 "sqlite3_parser.yy" - { + case 191: +#line 619 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::IndexPtr > () = sqlb::IndexPtr(new sqlb::Index(yystack_[6].value.as < std::string > ())); yylhs.value.as < sqlb::IndexPtr > ()->setTable(yystack_[4].value.as < std::string > ()); yylhs.value.as < sqlb::IndexPtr > ()->setUnique(yystack_[9].value.as < bool > ()); @@ -2395,118 +2627,148 @@ namespace sqlb { namespace parser { yylhs.value.as < sqlb::IndexPtr > ()->fields = yystack_[2].value.as < sqlb::IndexedColumnVector > (); yylhs.value.as < sqlb::IndexPtr > ()->setFullyParsed(true); } -#line 2399 "sqlite3_parser.cpp" - break; - - case 189: -#line 623 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = {}; } -#line 2405 "sqlite3_parser.cpp" - break; - - case 190: -#line 624 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = {}; } -#line 2411 "sqlite3_parser.cpp" - break; - - case 191: -#line 625 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > (); } -#line 2417 "sqlite3_parser.cpp" +#line 2631 "sqlite3_parser.cpp" break; case 192: -#line 629 "sqlite3_parser.yy" - { +#line 634 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = {}; } +#line 2637 "sqlite3_parser.cpp" + break; + + case 193: +#line 635 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = {}; } +#line 2643 "sqlite3_parser.cpp" + break; + + case 194: +#line 636 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > (); } +#line 2649 "sqlite3_parser.cpp" + break; + + case 195: +#line 640 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::TablePtr > () = sqlb::TablePtr(new sqlb::Table(yystack_[3].value.as < std::string > ())); yylhs.value.as < sqlb::TablePtr > ()->setVirtualUsing(yystack_[1].value.as < std::string > ()); yylhs.value.as < sqlb::TablePtr > ()->setFullyParsed(false); } -#line 2427 "sqlite3_parser.cpp" - break; - - case 193: -#line 641 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = false; } -#line 2433 "sqlite3_parser.cpp" - break; - - case 194: -#line 642 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = true; } -#line 2439 "sqlite3_parser.cpp" - break; - - case 195: -#line 643 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = true; } -#line 2445 "sqlite3_parser.cpp" +#line 2659 "sqlite3_parser.cpp" break; case 196: -#line 647 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = false; } -#line 2451 "sqlite3_parser.cpp" +#line 652 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = false; } +#line 2665 "sqlite3_parser.cpp" break; case 197: -#line 648 "sqlite3_parser.yy" - { yylhs.value.as < bool > () = true; } -#line 2457 "sqlite3_parser.cpp" +#line 653 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2671 "sqlite3_parser.cpp" break; case 198: -#line 652 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2463 "sqlite3_parser.cpp" +#line 654 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2677 "sqlite3_parser.cpp" break; case 199: -#line 653 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2469 "sqlite3_parser.cpp" +#line 658 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = false; } +#line 2683 "sqlite3_parser.cpp" break; case 200: -#line 654 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2475 "sqlite3_parser.cpp" +#line 659 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2689 "sqlite3_parser.cpp" break; case 201: -#line 655 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2481 "sqlite3_parser.cpp" +#line 663 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 2695 "sqlite3_parser.cpp" break; case 202: -#line 656 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2487 "sqlite3_parser.cpp" +#line 664 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2701 "sqlite3_parser.cpp" break; case 203: -#line 657 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2493 "sqlite3_parser.cpp" +#line 665 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2707 "sqlite3_parser.cpp" break; case 204: -#line 661 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2499 "sqlite3_parser.cpp" +#line 666 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2713 "sqlite3_parser.cpp" break; case 205: -#line 662 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2505 "sqlite3_parser.cpp" +#line 667 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2719 "sqlite3_parser.cpp" break; case 206: -#line 666 "sqlite3_parser.yy" - { +#line 668 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2725 "sqlite3_parser.cpp" + break; + + case 207: +#line 672 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 2731 "sqlite3_parser.cpp" + break; + + case 208: +#line 673 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 2737 "sqlite3_parser.cpp" + break; + + case 209: +#line 677 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "VIRTUAL"; } +#line 2743 "sqlite3_parser.cpp" + break; + + case 210: +#line 678 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "STORED"; } +#line 2749 "sqlite3_parser.cpp" + break; + + case 211: +#line 679 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = "VIRTUAL"; } +#line 2755 "sqlite3_parser.cpp" + break; + + case 212: +#line 683 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = false; } +#line 2761 "sqlite3_parser.cpp" + break; + + case 213: +#line 684 "sqlite3_parser.yy" + { yylhs.value.as < bool > () = true; } +#line 2767 "sqlite3_parser.cpp" + break; + + case 214: +#line 688 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::PrimaryKey; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = true; sqlb::PrimaryKeyConstraint* pk = new sqlb::PrimaryKeyConstraint({sqlb::IndexedColumn("", false, yystack_[1].value.as < std::string > ())}); @@ -2515,12 +2777,12 @@ namespace sqlb { namespace parser { yylhs.value.as < ColumnConstraintInfo > ().table_constraint = sqlb::ConstraintPtr(pk); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = true; } -#line 2519 "sqlite3_parser.cpp" +#line 2781 "sqlite3_parser.cpp" break; - case 207: -#line 675 "sqlite3_parser.yy" - { + case 215: +#line 697 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::PrimaryKey; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = true; sqlb::PrimaryKeyConstraint* pk = new sqlb::PrimaryKeyConstraint({sqlb::IndexedColumn("", false, yystack_[2].value.as < std::string > ())}); @@ -2530,131 +2792,131 @@ namespace sqlb { namespace parser { yylhs.value.as < ColumnConstraintInfo > ().table_constraint = sqlb::ConstraintPtr(pk); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = true; } -#line 2534 "sqlite3_parser.cpp" +#line 2796 "sqlite3_parser.cpp" break; - case 208: -#line 685 "sqlite3_parser.yy" - { + case 216: +#line 707 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::NotNull; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[3].value.as < std::string > () == "" && yystack_[0].value.as < std::string > () == ""); } -#line 2544 "sqlite3_parser.cpp" +#line 2806 "sqlite3_parser.cpp" break; - case 209: -#line 690 "sqlite3_parser.yy" - { + case 217: +#line 712 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::None; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = true; } -#line 2554 "sqlite3_parser.cpp" +#line 2816 "sqlite3_parser.cpp" break; - case 210: -#line 695 "sqlite3_parser.yy" - { + case 218: +#line 717 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Unique; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == "" && yystack_[0].value.as < std::string > () == ""); } -#line 2564 "sqlite3_parser.cpp" +#line 2826 "sqlite3_parser.cpp" break; - case 211: -#line 700 "sqlite3_parser.yy" - { + case 219: +#line 722 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Check; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[1].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[4].value.as < std::string > () == ""); } -#line 2575 "sqlite3_parser.cpp" +#line 2837 "sqlite3_parser.cpp" break; - case 212: -#line 706 "sqlite3_parser.yy" - { + case 220: +#line 728 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2586 "sqlite3_parser.cpp" +#line 2848 "sqlite3_parser.cpp" break; - case 213: -#line 712 "sqlite3_parser.yy" - { + case 221: +#line 734 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2597 "sqlite3_parser.cpp" +#line 2859 "sqlite3_parser.cpp" break; - case 214: -#line 718 "sqlite3_parser.yy" - { + case 222: +#line 740 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2608 "sqlite3_parser.cpp" +#line 2870 "sqlite3_parser.cpp" break; - case 215: -#line 724 "sqlite3_parser.yy" - { // We must allow the same keywords as unquoted default values as in the columnid context. + case 223: +#line 746 "sqlite3_parser.yy" + { // We must allow the same keywords as unquoted default values as in the columnid context. // But we do not use columnid here in order to avoid reduce/reduce conflicts. yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2620 "sqlite3_parser.cpp" +#line 2882 "sqlite3_parser.cpp" break; - case 216: -#line 731 "sqlite3_parser.yy" - { // Same as above. + case 224: +#line 753 "sqlite3_parser.yy" + { // Same as above. yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2631 "sqlite3_parser.cpp" +#line 2893 "sqlite3_parser.cpp" break; - case 217: -#line 737 "sqlite3_parser.yy" - { + case 225: +#line 759 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Default; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = "(" + yystack_[1].value.as < std::string > () + ")"; yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[4].value.as < std::string > () == ""); } -#line 2642 "sqlite3_parser.cpp" +#line 2904 "sqlite3_parser.cpp" break; - case 218: -#line 743 "sqlite3_parser.yy" - { + case 226: +#line 765 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Collate; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; yylhs.value.as < ColumnConstraintInfo > ().text = yystack_[0].value.as < std::string > (); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = (yystack_[2].value.as < std::string > () == ""); } -#line 2653 "sqlite3_parser.cpp" +#line 2915 "sqlite3_parser.cpp" break; - case 219: -#line 749 "sqlite3_parser.yy" - { // TODO Solve shift/reduce conflict. It is not super important though as shifting seems to be right here. + case 227: +#line 771 "sqlite3_parser.yy" + { // TODO Solve shift/reduce conflict. It is not super important though as shifting seems to be right here. yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::ForeignKey; yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = true; sqlb::ForeignKeyClause* fk = new sqlb::ForeignKeyClause(); @@ -2665,24 +2927,37 @@ namespace sqlb { namespace parser { yylhs.value.as < ColumnConstraintInfo > ().table_constraint = sqlb::ConstraintPtr(fk); yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = true; } -#line 2669 "sqlite3_parser.cpp" +#line 2931 "sqlite3_parser.cpp" break; - case 220: -#line 763 "sqlite3_parser.yy" - { yylhs.value.as < ColumnConstraintInfoVector > () = { yystack_[0].value.as < ColumnConstraintInfo > () }; } -#line 2675 "sqlite3_parser.cpp" + case 228: +#line 782 "sqlite3_parser.yy" + { // TODO Solve shift/reduce conflict. + yylhs.value.as < ColumnConstraintInfo > ().type = ColumnConstraintInfo::Generated; + yylhs.value.as < ColumnConstraintInfo > ().is_table_constraint = false; + yylhs.value.as < ColumnConstraintInfo > ().generated_constraint.setExpression(yystack_[2].value.as < std::string > ()); + yylhs.value.as < ColumnConstraintInfo > ().generated_constraint.setStorage(yystack_[0].value.as < std::string > ()); + yylhs.value.as < ColumnConstraintInfo > ().generated_constraint.setName(yystack_[6].value.as < std::string > ()); + yylhs.value.as < ColumnConstraintInfo > ().fully_parsed = true; + } +#line 2944 "sqlite3_parser.cpp" break; - case 221: -#line 764 "sqlite3_parser.yy" - { yylhs.value.as < ColumnConstraintInfoVector > () = yystack_[1].value.as < ColumnConstraintInfoVector > (); yylhs.value.as < ColumnConstraintInfoVector > ().push_back(yystack_[0].value.as < ColumnConstraintInfo > ()); } -#line 2681 "sqlite3_parser.cpp" + case 229: +#line 793 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfoVector > () = { yystack_[0].value.as < ColumnConstraintInfo > () }; } +#line 2950 "sqlite3_parser.cpp" break; - case 222: -#line 768 "sqlite3_parser.yy" - { + case 230: +#line 794 "sqlite3_parser.yy" + { yylhs.value.as < ColumnConstraintInfoVector > () = yystack_[1].value.as < ColumnConstraintInfoVector > (); yylhs.value.as < ColumnConstraintInfoVector > ().push_back(yystack_[0].value.as < ColumnConstraintInfo > ()); } +#line 2956 "sqlite3_parser.cpp" + break; + + case 231: +#line 798 "sqlite3_parser.yy" + { sqlb::Field f(yystack_[2].value.as < std::string > (), yystack_[1].value.as < std::string > ()); bool fully_parsed = true; sqlb::ConstraintSet table_constraints{}; @@ -2712,6 +2987,20 @@ namespace sqlb { namespace parser { f.setDefaultValue(c.text); } else if(c.type == ColumnConstraintInfo::Collate) { f.setCollation(c.text); + } else if(c.type == ColumnConstraintInfo::Generated) { + f.setGenerated(c.generated_constraint); + + // This is a hack which removes any "GENERATED ALWAYS" from the end of the type name. + // As of now these are shifted to the type instead of reducing the type when seeing the GENERATED identifier. + // TODO Remove this once the grammar is conflict free + const std::string generated_always = "GENERATED ALWAYS"; + if(f.type().size() >= generated_always.size() && f.type().compare(f.type().size() - generated_always.size(), generated_always.size(), generated_always) == 0) + { + std::string type = f.type().substr(0, f.type().size()-generated_always.size()); + if(type.back() == ' ') + type.pop_back(); + f.setType(type); + } } else { fully_parsed = false; } @@ -2720,350 +3009,350 @@ namespace sqlb { namespace parser { yylhs.value.as < ColumndefData > () = std::make_tuple(f, table_constraints, fully_parsed); } -#line 2724 "sqlite3_parser.cpp" - break; - - case 223: -#line 806 "sqlite3_parser.yy" - { yylhs.value.as < ColumndefData > () = std::make_tuple(sqlb::Field(yystack_[1].value.as < std::string > (), yystack_[0].value.as < std::string > ()), sqlb::ConstraintSet{}, true); } -#line 2730 "sqlite3_parser.cpp" - break; - - case 224: -#line 810 "sqlite3_parser.yy" - { yylhs.value.as < std::vector > () = {yystack_[0].value.as < ColumndefData > ()}; } -#line 2736 "sqlite3_parser.cpp" - break; - - case 225: -#line 811 "sqlite3_parser.yy" - { yylhs.value.as < std::vector > () = yystack_[2].value.as < std::vector > (); yylhs.value.as < std::vector > ().push_back(yystack_[0].value.as < ColumndefData > ()); } -#line 2742 "sqlite3_parser.cpp" - break; - - case 226: -#line 815 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2748 "sqlite3_parser.cpp" - break; - - case 227: -#line 816 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2754 "sqlite3_parser.cpp" - break; - - case 228: -#line 820 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::StringVector > () = sqlb::StringVector(1, yystack_[0].value.as < std::string > ()); } -#line 2760 "sqlite3_parser.cpp" - break; - - case 229: -#line 821 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::StringVector > () = yystack_[2].value.as < sqlb::StringVector > (); yylhs.value.as < sqlb::StringVector > ().push_back(yystack_[0].value.as < std::string > ()); } -#line 2766 "sqlite3_parser.cpp" - break; - - case 230: -#line 825 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::StringVector > () = sqlb::StringVector(); } -#line 2772 "sqlite3_parser.cpp" - break; - - case 231: -#line 826 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::StringVector > () = yystack_[1].value.as < sqlb::StringVector > (); } -#line 2778 "sqlite3_parser.cpp" +#line 3013 "sqlite3_parser.cpp" break; case 232: -#line 830 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2784 "sqlite3_parser.cpp" +#line 850 "sqlite3_parser.yy" + { yylhs.value.as < ColumndefData > () = std::make_tuple(sqlb::Field(yystack_[1].value.as < std::string > (), yystack_[0].value.as < std::string > ()), sqlb::ConstraintSet{}, true); } +#line 3019 "sqlite3_parser.cpp" break; case 233: -#line 831 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2790 "sqlite3_parser.cpp" +#line 854 "sqlite3_parser.yy" + { yylhs.value.as < std::vector > () = {yystack_[0].value.as < ColumndefData > ()}; } +#line 3025 "sqlite3_parser.cpp" break; case 234: -#line 832 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2796 "sqlite3_parser.cpp" +#line 855 "sqlite3_parser.yy" + { yylhs.value.as < std::vector > () = yystack_[2].value.as < std::vector > (); yylhs.value.as < std::vector > ().push_back(yystack_[0].value.as < ColumndefData > ()); } +#line 3031 "sqlite3_parser.cpp" break; case 235: -#line 833 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2802 "sqlite3_parser.cpp" +#line 859 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 3037 "sqlite3_parser.cpp" break; case 236: -#line 834 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2808 "sqlite3_parser.cpp" +#line 860 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 3043 "sqlite3_parser.cpp" break; case 237: -#line 835 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2814 "sqlite3_parser.cpp" +#line 864 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::StringVector > () = sqlb::StringVector(1, yystack_[0].value.as < std::string > ()); } +#line 3049 "sqlite3_parser.cpp" break; case 238: -#line 836 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2820 "sqlite3_parser.cpp" +#line 865 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::StringVector > () = yystack_[2].value.as < sqlb::StringVector > (); yylhs.value.as < sqlb::StringVector > ().push_back(yystack_[0].value.as < std::string > ()); } +#line 3055 "sqlite3_parser.cpp" break; case 239: -#line 837 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2826 "sqlite3_parser.cpp" +#line 869 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::StringVector > () = sqlb::StringVector(); } +#line 3061 "sqlite3_parser.cpp" break; case 240: -#line 838 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2832 "sqlite3_parser.cpp" +#line 870 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::StringVector > () = yystack_[1].value.as < sqlb::StringVector > (); } +#line 3067 "sqlite3_parser.cpp" break; case 241: -#line 839 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2838 "sqlite3_parser.cpp" +#line 874 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3073 "sqlite3_parser.cpp" break; case 242: -#line 840 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2844 "sqlite3_parser.cpp" +#line 875 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3079 "sqlite3_parser.cpp" break; case 243: -#line 841 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2850 "sqlite3_parser.cpp" +#line 876 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3085 "sqlite3_parser.cpp" break; case 244: -#line 842 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2856 "sqlite3_parser.cpp" +#line 877 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3091 "sqlite3_parser.cpp" break; case 245: -#line 843 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2862 "sqlite3_parser.cpp" +#line 878 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3097 "sqlite3_parser.cpp" break; case 246: -#line 844 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2868 "sqlite3_parser.cpp" +#line 879 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3103 "sqlite3_parser.cpp" break; case 247: -#line 845 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2874 "sqlite3_parser.cpp" +#line 880 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3109 "sqlite3_parser.cpp" break; case 248: -#line 849 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2880 "sqlite3_parser.cpp" +#line 881 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3115 "sqlite3_parser.cpp" break; case 249: -#line 850 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2886 "sqlite3_parser.cpp" +#line 882 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3121 "sqlite3_parser.cpp" break; case 250: -#line 854 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = ""; } -#line 2892 "sqlite3_parser.cpp" +#line 883 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3127 "sqlite3_parser.cpp" break; case 251: -#line 855 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2898 "sqlite3_parser.cpp" +#line 884 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3133 "sqlite3_parser.cpp" break; case 252: -#line 856 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2904 "sqlite3_parser.cpp" +#line 885 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3139 "sqlite3_parser.cpp" break; case 253: -#line 857 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2910 "sqlite3_parser.cpp" +#line 886 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3145 "sqlite3_parser.cpp" break; case 254: -#line 858 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2916 "sqlite3_parser.cpp" +#line 887 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3151 "sqlite3_parser.cpp" break; case 255: -#line 859 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2922 "sqlite3_parser.cpp" +#line 888 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3157 "sqlite3_parser.cpp" break; case 256: -#line 860 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2928 "sqlite3_parser.cpp" +#line 889 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3163 "sqlite3_parser.cpp" break; case 257: -#line 861 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2934 "sqlite3_parser.cpp" +#line 893 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 3169 "sqlite3_parser.cpp" break; case 258: -#line 862 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2940 "sqlite3_parser.cpp" +#line 894 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3175 "sqlite3_parser.cpp" break; case 259: -#line 863 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2946 "sqlite3_parser.cpp" +#line 898 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = ""; } +#line 3181 "sqlite3_parser.cpp" break; case 260: -#line 864 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } -#line 2952 "sqlite3_parser.cpp" +#line 899 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 3187 "sqlite3_parser.cpp" break; case 261: -#line 865 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2958 "sqlite3_parser.cpp" +#line 900 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3193 "sqlite3_parser.cpp" break; case 262: -#line 866 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2964 "sqlite3_parser.cpp" +#line 901 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3199 "sqlite3_parser.cpp" break; case 263: -#line 867 "sqlite3_parser.yy" - { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } -#line 2970 "sqlite3_parser.cpp" +#line 902 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3205 "sqlite3_parser.cpp" break; case 264: -#line 871 "sqlite3_parser.yy" - { +#line 903 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3211 "sqlite3_parser.cpp" + break; + + case 265: +#line 904 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[4].value.as < std::string > () + " " + yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3217 "sqlite3_parser.cpp" + break; + + case 266: +#line 905 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3223 "sqlite3_parser.cpp" + break; + + case 267: +#line 906 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3229 "sqlite3_parser.cpp" + break; + + case 268: +#line 907 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3235 "sqlite3_parser.cpp" + break; + + case 269: +#line 908 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[0].value.as < std::string > (); } +#line 3241 "sqlite3_parser.cpp" + break; + + case 270: +#line 909 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3247 "sqlite3_parser.cpp" + break; + + case 271: +#line 910 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[3].value.as < std::string > () + " " + yystack_[2].value.as < std::string > () + " " + yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3253 "sqlite3_parser.cpp" + break; + + case 272: +#line 911 "sqlite3_parser.yy" + { yylhs.value.as < std::string > () = yystack_[1].value.as < std::string > () + " " + yystack_[0].value.as < std::string > (); } +#line 3259 "sqlite3_parser.cpp" + break; + + case 273: +#line 915 "sqlite3_parser.yy" + { sqlb::PrimaryKeyConstraint* pk = new sqlb::PrimaryKeyConstraint(yystack_[2].value.as < sqlb::IndexedColumnVector > ()); pk->setName(yystack_[6].value.as < std::string > ()); pk->setConflictAction(yystack_[0].value.as < std::string > ()); yylhs.value.as < sqlb::ConstraintPtr > () = sqlb::ConstraintPtr(pk); } -#line 2981 "sqlite3_parser.cpp" +#line 3270 "sqlite3_parser.cpp" break; - case 265: -#line 877 "sqlite3_parser.yy" - { + case 274: +#line 921 "sqlite3_parser.yy" + { sqlb::PrimaryKeyConstraint* pk = new sqlb::PrimaryKeyConstraint(yystack_[3].value.as < sqlb::IndexedColumnVector > ()); pk->setName(yystack_[7].value.as < std::string > ()); pk->setConflictAction(yystack_[0].value.as < std::string > ()); pk->setAutoIncrement(true); yylhs.value.as < sqlb::ConstraintPtr > () = sqlb::ConstraintPtr(pk); } -#line 2993 "sqlite3_parser.cpp" +#line 3282 "sqlite3_parser.cpp" break; - case 266: -#line 884 "sqlite3_parser.yy" - { + case 275: +#line 928 "sqlite3_parser.yy" + { sqlb::UniqueConstraint* u = new sqlb::UniqueConstraint(yystack_[2].value.as < sqlb::IndexedColumnVector > ()); u->setName(yystack_[5].value.as < std::string > ()); u->setConflictAction(yystack_[0].value.as < std::string > ()); yylhs.value.as < sqlb::ConstraintPtr > () = sqlb::ConstraintPtr(u); } -#line 3004 "sqlite3_parser.cpp" +#line 3293 "sqlite3_parser.cpp" break; - case 267: -#line 890 "sqlite3_parser.yy" - { + case 276: +#line 934 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintPtr > () = sqlb::ConstraintPtr(new sqlb::CheckConstraint(yystack_[1].value.as < std::string > ())); yylhs.value.as < sqlb::ConstraintPtr > ()->setName(yystack_[4].value.as < std::string > ()); } -#line 3013 "sqlite3_parser.cpp" +#line 3302 "sqlite3_parser.cpp" break; - case 268: -#line 894 "sqlite3_parser.yy" - { + case 277: +#line 938 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintPtr > () = sqlb::ConstraintPtr(new sqlb::ForeignKeyClause(yystack_[2].value.as < std::string > (), yystack_[1].value.as < sqlb::StringVector > (), yystack_[0].value.as < std::string > ())); yylhs.value.as < sqlb::ConstraintPtr > ()->setColumnList(yystack_[5].value.as < sqlb::StringVector > ()); yylhs.value.as < sqlb::ConstraintPtr > ()->setName(yystack_[9].value.as < std::string > ()); } -#line 3023 "sqlite3_parser.cpp" +#line 3312 "sqlite3_parser.cpp" break; - case 269: -#line 902 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::ConstraintSet > () = {yystack_[0].value.as < sqlb::ConstraintPtr > ()}; } -#line 3029 "sqlite3_parser.cpp" + case 278: +#line 946 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintSet > () = {yystack_[0].value.as < sqlb::ConstraintPtr > ()}; } +#line 3318 "sqlite3_parser.cpp" break; - case 270: -#line 903 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[2].value.as < sqlb::ConstraintSet > (); yylhs.value.as < sqlb::ConstraintSet > ().insert(yystack_[0].value.as < sqlb::ConstraintPtr > ()); } -#line 3035 "sqlite3_parser.cpp" + case 279: +#line 947 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[2].value.as < sqlb::ConstraintSet > (); yylhs.value.as < sqlb::ConstraintSet > ().insert(yystack_[0].value.as < sqlb::ConstraintPtr > ()); } +#line 3324 "sqlite3_parser.cpp" break; - case 271: -#line 904 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[1].value.as < sqlb::ConstraintSet > (); yylhs.value.as < sqlb::ConstraintSet > ().insert(yystack_[0].value.as < sqlb::ConstraintPtr > ()); } -#line 3041 "sqlite3_parser.cpp" + case 280: +#line 948 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[1].value.as < sqlb::ConstraintSet > (); yylhs.value.as < sqlb::ConstraintSet > ().insert(yystack_[0].value.as < sqlb::ConstraintPtr > ()); } +#line 3330 "sqlite3_parser.cpp" break; - case 272: -#line 908 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::ConstraintSet > () = {}; } -#line 3047 "sqlite3_parser.cpp" + case 281: +#line 952 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintSet > () = {}; } +#line 3336 "sqlite3_parser.cpp" break; - case 273: -#line 909 "sqlite3_parser.yy" - { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[0].value.as < sqlb::ConstraintSet > (); } -#line 3053 "sqlite3_parser.cpp" + case 282: +#line 953 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::ConstraintSet > () = yystack_[0].value.as < sqlb::ConstraintSet > (); } +#line 3342 "sqlite3_parser.cpp" break; - case 274: -#line 913 "sqlite3_parser.yy" - { + case 283: +#line 957 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::TablePtr > () = sqlb::TablePtr(new sqlb::Table(yystack_[2].value.as < std::string > ())); yylhs.value.as < sqlb::TablePtr > ()->setFullyParsed(false); } -#line 3062 "sqlite3_parser.cpp" +#line 3351 "sqlite3_parser.cpp" break; - case 275: -#line 917 "sqlite3_parser.yy" - { + case 284: +#line 961 "sqlite3_parser.yy" + { yylhs.value.as < sqlb::TablePtr > () = sqlb::TablePtr(new sqlb::Table(yystack_[5].value.as < std::string > ())); yylhs.value.as < sqlb::TablePtr > ()->setWithoutRowidTable(yystack_[0].value.as < bool > ()); yylhs.value.as < sqlb::TablePtr > ()->setConstraints(yystack_[2].value.as < sqlb::ConstraintSet > ()); @@ -3083,11 +3372,11 @@ namespace sqlb { namespace parser { yylhs.value.as < sqlb::TablePtr > ()->addConstraint(i); } } -#line 3087 "sqlite3_parser.cpp" +#line 3376 "sqlite3_parser.cpp" break; -#line 3091 "sqlite3_parser.cpp" +#line 3380 "sqlite3_parser.cpp" default: break; @@ -3169,11 +3458,11 @@ namespace sqlb { namespace parser { stack_symbol_type error_token; for (;;) { - yyn = yypact_[yystack_[0].state]; + yyn = yypact_[+yystack_[0].state]; if (!yy_pact_value_is_default_ (yyn)) { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) + yyn += yy_error_token_; + if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yy_error_token_) { yyn = yytable_[yyn]; if (0 < yyn) @@ -3195,7 +3484,7 @@ namespace sqlb { namespace parser { YYLLOC_DEFAULT (error_token.location, yyerror_range, 2); // Shift the error token. - error_token.state = yyn; + error_token.state = state_type (yyn); yypush_ ("Shifting", YY_MOVE (error_token)); } goto yynewstate; @@ -3266,7 +3555,7 @@ namespace sqlb { namespace parser { { // Number of reported tokens (one for the "unexpected", one per // "expected"). - size_t yycount = 0; + std::ptrdiff_t yycount = 0; // Its maximum. enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; // Arguments of yyformat. @@ -3290,18 +3579,18 @@ namespace sqlb { namespace parser { - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state - merging (from LALR or IELR) and default reductions corrupt the - expected token list. However, the list is correct for - canonical LR with one exception: it will still contain any - token that will not be accepted due to an error action in a - later state. + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. */ if (!yyla.empty ()) { - int yytoken = yyla.type_get (); + symbol_number_type yytoken = yyla.type_get (); yyarg[yycount++] = yytname_[yytoken]; - int yyn = yypact_[yystate]; + + int yyn = yypact_[+yystate]; if (!yy_pact_value_is_default_ (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in @@ -3312,7 +3601,7 @@ namespace sqlb { namespace parser { int yychecklim = yylast_ - yyn + 1; int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ + if (yycheck_[yyx + yyn] == yyx && yyx != yy_error_token_ && !yy_table_value_is_error_ (yytable_[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) @@ -3345,7 +3634,7 @@ namespace sqlb { namespace parser { std::string yyres; // Argument number. - size_t yyi = 0; + std::ptrdiff_t yyi = 0; for (char const* yyp = yyformat; *yyp; ++yyp) if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) { @@ -3358,878 +3647,924 @@ namespace sqlb { namespace parser { } - const short parser::yypact_ninf_ = -333; + const short parser::yypact_ninf_ = -340; - const short parser::yytable_ninf_ = -274; + const short parser::yytable_ninf_ = -283; const short parser::yypact_[] = { - 1, 98, 51, 66, -333, -333, -333, -333, -333, -333, - 44, 10, 47, -333, -333, 96, 96, 96, 21, 2202, - 2202, 2202, 110, -333, -333, -333, -333, -333, -333, -333, - -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, - -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, - -333, -333, -333, -333, -333, -333, -333, 193, -333, -333, - -333, -333, -333, -333, -333, 205, -333, -333, 111, 143, - 32, -333, 2287, 2287, -20, 2287, 2117, 131, -333, -333, - -333, -333, 227, 228, -333, -333, -333, -333, -333, -333, - -333, 2287, -333, 230, -333, -333, 961, -333, 1405, -333, - 1606, -333, 25, 2032, 237, 1405, -333, 1405, 1405, 1405, - 1072, 239, -333, -333, -333, -333, 1405, -333, 257, -333, - -333, -333, -333, -333, -333, 27, -333, -333, -333, -333, - 126, -333, -333, -333, -333, -333, -333, 2997, 2547, -333, - 134, 5, -333, -20, -333, 30, 89, -333, -18, -333, - 34, 158, 180, -333, -333, -333, 1405, -35, 84, 1405, - 3104, 22, 628, -20, -333, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, -20, 1405, 1696, 1405, - -333, 1405, 1405, 139, -333, 1405, 1405, -333, -333, -333, - 177, 1405, 176, 188, -333, -333, 181, -333, -333, 283, - -20, 1516, 225, -333, 232, 2287, 231, 298, 242, 243, - 305, 269, -333, 226, -333, -333, 1890, 1405, -333, 1405, - -31, 2622, 309, 310, 315, 314, -333, 317, 1405, 223, - 318, 2997, 241, 241, 9, 9, 209, 9, 209, 286, - 2574, 2574, 279, 279, 279, 279, 2574, 2574, 209, 209, - 3104, 2697, -333, 224, 739, 210, -333, 2574, 332, 391, - 1405, 1405, 1786, 1405, 1405, -333, 1405, 3072, 476, 1405, - -333, -333, -333, -333, -333, 5, 1405, -333, 1405, -333, - -333, -333, -333, -333, 231, -6, 319, 287, -333, 1405, - 323, 327, 1405, -333, -333, 1405, 2772, 1976, 1405, -333, - 2287, 221, 222, -333, 229, -333, 250, -333, -20, 1405, - 1405, -333, 255, 330, 1405, 2287, 1405, 1405, 2847, 1917, - 850, 261, -333, 2003, 2419, 2499, 1405, 2997, 331, 503, - 2392, -333, 231, 2117, -28, 92, 2472, 2117, 1405, 263, - 2997, -333, 1405, 2922, 334, 340, 345, 346, -333, -333, - 2574, 2574, -333, -333, 264, 333, -333, 2574, 2574, 1405, - 1405, -333, 267, 351, 1405, 2287, 1405, 1405, 1405, 2574, - -333, -333, -333, 326, -333, 270, 293, -20, 316, -22, - -333, 130, -333, -333, -333, -333, -333, -333, -333, 271, - 35, 231, 2997, -333, -333, -333, -333, -333, -333, 1183, - 2574, 2574, -333, -333, 275, 359, -333, 2574, 2574, 2574, - -333, -333, 2117, 67, -333, 297, 52, 87, 94, 299, - 320, -333, 284, 231, 361, -333, -333, 278, -333, 1294, - -333, -333, -333, 69, -333, 341, -333, -13, -333, 344, - -333, 70, -333, 347, -333, 74, 73, 306, 2287, -333, - 231, -333, -333, 294, -333, -333, -333, -333, -333, -333, - -333, -333, -333, -333, -333, -333, -333, 86, 319, -333, - -333, -333, -333, -28, -333 + -8, 189, 39, 91, -340, -340, -340, -340, -340, -340, + 17, 53, 43, -340, -340, 73, 73, 73, 30, 2227, + 2227, 2227, 108, -340, -340, -340, -340, -340, -340, -340, + -340, -340, -340, -340, -340, -340, -340, -340, -340, -340, + -340, -340, -340, -340, -340, -340, -340, -340, -340, -340, + -340, -340, -340, -340, -340, -340, -340, -340, -340, -340, + 169, -340, -340, -340, -340, -340, -340, -340, 174, -340, + -340, 83, 112, 22, -340, 2315, 2315, -78, 2315, 2139, + 103, -340, -340, -340, -340, 209, 229, -340, -340, -340, + -340, -340, -340, -340, 2315, -340, 212, -340, -340, 951, + -340, 1407, -340, 1613, -340, 90, 2051, 235, 1407, -340, + 1407, 1407, 1407, 1065, 250, -340, -340, -340, -340, 1407, + -340, 274, -340, -340, -340, -340, -340, -340, 37, -340, + -340, -340, -340, 165, -340, -340, -340, -340, -340, -340, + 3208, 2746, -340, 171, 5, -340, -78, -340, 106, -9, + -340, -18, -340, 116, 134, 176, -340, -340, -340, 1407, + -35, 482, 1407, 3318, 7, 609, -78, -340, 1407, 1407, + 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, + 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, -78, + 1407, 1705, 1407, -340, 1407, 1407, 56, -340, 1407, 1407, + -340, -340, -340, 175, 1407, 179, 182, -340, -340, 193, + -340, -340, 280, -78, 1521, 273, 228, -340, 236, 2315, + 230, 276, 308, 239, 243, 315, 278, -340, 237, -340, + -340, 1904, 1407, -340, 1407, -31, 2823, 319, 334, 337, + 338, -340, 339, 1407, 231, 341, 3208, 232, 232, 4, + 4, 177, 4, 177, 307, 313, 313, 215, 215, 215, + 215, 313, 313, 177, 177, 3318, 2900, -340, 141, 723, + 233, -340, 313, 194, 260, 1407, 1407, 1797, 1407, 1407, + -340, 1407, 3285, 454, 1407, -340, -340, -340, -340, -340, + 5, 1407, -340, 1407, -340, -340, -340, -340, -340, -340, + 230, -1, 345, 309, -340, 346, 1407, 348, 349, 1407, + -340, -340, 1407, 2977, 1993, 1407, -340, 2315, 242, 244, + -340, 245, -340, 241, -340, -78, 1407, 1407, -340, 246, + 350, 1407, 2315, 1407, 1407, 3054, 1932, 837, 251, -340, + 2021, 2451, 2533, 1407, 3208, 355, 2423, 2505, -340, 230, + 2139, 49, -10, 1407, 2587, 2139, 1407, 253, 3208, -340, + 1407, 3131, 356, 357, 358, 359, -340, -340, 313, 313, + -340, -340, 256, 366, -340, 313, 313, 1407, 1407, -340, + 257, 367, 1407, 2315, 1407, 1407, 1407, 313, -340, -340, + -340, 343, -340, 261, 303, -78, 325, 1, -340, 63, + -340, -340, -340, -340, -340, -340, 2669, -340, 286, 110, + 230, 3208, -340, -340, -340, -340, -340, -340, 1179, 313, + 313, -340, -340, 291, 372, -340, 313, 313, 313, -340, + -340, 2139, -25, -340, 310, 9, 12, 13, 311, 330, + -340, 21, 293, 230, 378, -340, -340, 295, -340, 1293, + -340, -340, -340, -20, -340, 360, -340, 54, -340, 361, + -340, 55, -340, 362, -340, 89, 93, 314, -340, -340, + -340, 2315, -340, 230, -340, -340, 299, -340, -340, -340, + -340, -340, -340, -340, -340, -340, -340, -340, -340, -340, + 124, 345, -340, -340, -340, -340, 49, -340 }; - const unsigned short + const short parser::yydefact_[] = { - 0, 178, 0, 2, 4, 5, 6, 194, 195, 179, - 0, 0, 0, 1, 3, 173, 173, 173, 0, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 23, 56, - 55, 57, 24, 25, 26, 27, 28, 29, 30, 33, - 35, 34, 31, 32, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 50, 49, 51, - 52, 53, 16, 59, 17, 58, 54, 184, 0, 0, - 0, 174, 0, 0, 0, 0, 0, 0, 50, 58, - 183, 182, 189, 0, 62, 61, 63, 64, 66, 65, - 60, 204, 224, 272, 172, 274, 0, 192, 0, 71, - 73, 205, 226, 226, 0, 0, 190, 0, 0, 0, - 0, 22, 14, 13, 15, 12, 0, 10, 41, 11, - 7, 8, 9, 156, 154, 159, 155, 160, 161, 166, - 0, 162, 167, 168, 169, 170, 171, 117, 175, 186, - 0, 0, 72, 0, 220, 226, 0, 225, 0, 269, - 226, 196, 0, 77, 76, 78, 0, 0, 0, 0, - 79, 0, 0, 0, 191, 0, 0, 0, 0, 0, + 0, 181, 0, 2, 4, 5, 6, 197, 198, 182, + 0, 0, 0, 1, 3, 176, 176, 176, 0, 0, + 0, 0, 0, 18, 19, 20, 21, 22, 23, 24, + 59, 58, 60, 25, 26, 27, 28, 29, 30, 31, + 32, 35, 37, 36, 33, 34, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 53, 52, 54, 55, 56, 16, 62, 17, 61, 57, + 187, 0, 0, 0, 177, 0, 0, 0, 0, 0, + 0, 53, 61, 186, 185, 192, 0, 65, 64, 66, + 67, 69, 68, 63, 207, 233, 281, 175, 283, 0, + 195, 0, 74, 76, 208, 235, 235, 0, 0, 193, + 0, 0, 0, 0, 23, 14, 13, 15, 12, 0, + 10, 43, 11, 7, 8, 9, 159, 157, 162, 158, + 163, 164, 169, 0, 165, 170, 171, 172, 173, 174, + 120, 178, 189, 0, 0, 75, 0, 229, 235, 212, + 234, 0, 278, 235, 199, 0, 80, 79, 81, 0, + 0, 0, 0, 82, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 0, 0, 0, 124, 0, 0, 176, 177, 185, - 180, 0, 0, 0, 70, 69, 0, 227, 221, 0, - 0, 0, 0, 209, 0, 0, 198, 0, 0, 0, - 0, 226, 271, 0, 275, 163, 0, 0, 149, 0, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 158, 118, 84, 85, 81, 82, 88, 83, 89, 80, - 94, 95, 92, 93, 90, 91, 96, 97, 86, 87, - 99, 0, 165, 102, 0, 58, 132, 98, 101, 103, - 0, 0, 0, 0, 0, 125, 0, 100, 104, 0, - 188, 187, 67, 68, 74, 0, 0, 218, 0, 216, - 213, 214, 215, 212, 198, 175, 230, 0, 210, 0, - 0, 0, 0, 270, 197, 0, 0, 0, 0, 147, - 0, 0, 0, 150, 0, 122, 0, 119, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 58, 140, 105, 107, 108, 0, 181, 0, 0, - 0, 208, 198, 0, 250, 0, 0, 0, 0, 0, - 144, 148, 0, 0, 0, 0, 0, 0, 120, 157, - 126, 110, 130, 129, 0, 58, 131, 109, 111, 0, - 0, 136, 0, 0, 0, 0, 0, 0, 0, 112, - 75, 211, 217, 206, 228, 0, 260, 0, 0, 0, - 248, 251, 219, 200, 201, 202, 203, 199, 267, 0, - 0, 198, 145, 146, 164, 152, 153, 151, 135, 0, - 127, 114, 138, 137, 0, 58, 139, 113, 115, 116, - 207, 231, 0, 0, 247, 263, 0, 0, 0, 254, - 0, 249, 0, 198, 0, 266, 133, 0, 143, 0, - 229, 258, 259, 0, 234, 0, 235, 0, 244, 0, - 245, 0, 239, 0, 240, 0, 0, 257, 0, 264, - 198, 134, 141, 0, 261, 262, 236, 233, 232, 246, - 243, 242, 241, 238, 237, 252, 253, 0, 230, 265, - 142, 255, 256, 250, 268 + 0, 0, 0, 126, 0, 0, 0, 127, 0, 0, + 179, 180, 188, 183, 0, 0, 0, 73, 72, 0, + 236, 230, 0, 0, 0, 0, 0, 217, 0, 0, + 201, 0, 0, 0, 0, 0, 235, 280, 0, 284, + 166, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 0, 124, 0, 0, 0, 161, 121, 87, 88, 84, + 85, 91, 86, 92, 83, 97, 98, 95, 96, 93, + 94, 99, 100, 89, 90, 102, 0, 168, 105, 0, + 61, 135, 101, 104, 106, 0, 0, 0, 0, 0, + 128, 0, 103, 107, 0, 191, 190, 70, 71, 77, + 0, 0, 226, 0, 224, 221, 222, 223, 220, 213, + 201, 178, 239, 0, 218, 0, 0, 0, 0, 0, + 279, 200, 0, 0, 0, 0, 150, 0, 0, 0, + 153, 0, 125, 0, 122, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 109, 0, 61, 143, + 108, 110, 111, 0, 184, 0, 0, 0, 216, 201, + 0, 259, 0, 0, 0, 0, 0, 0, 147, 151, + 0, 0, 0, 0, 0, 0, 123, 160, 129, 113, + 133, 132, 0, 61, 134, 112, 114, 0, 0, 139, + 0, 0, 0, 0, 0, 0, 0, 115, 78, 219, + 225, 214, 237, 0, 269, 0, 0, 0, 257, 260, + 227, 203, 204, 205, 206, 202, 0, 276, 0, 0, + 201, 148, 149, 167, 155, 156, 154, 138, 0, 130, + 117, 141, 140, 0, 61, 142, 116, 118, 119, 215, + 240, 0, 0, 256, 272, 0, 0, 0, 263, 0, + 258, 209, 0, 201, 0, 275, 136, 0, 146, 0, + 238, 267, 268, 0, 243, 0, 244, 0, 253, 0, + 254, 0, 248, 0, 249, 0, 0, 266, 210, 211, + 228, 0, 273, 201, 137, 144, 0, 270, 271, 245, + 242, 241, 255, 252, 251, 250, 247, 246, 261, 262, + 0, 239, 274, 145, 264, 265, 259, 277 }; const short parser::yypgoto_[] = { - -333, -333, -333, 163, -19, -14, -63, -332, 165, 93, - -333, 71, -333, -333, -333, -102, -333, -333, -333, -333, - 219, -333, -333, 281, -248, 162, 85, -333, -333, 186, - 182, -279, -333, -333, -333, -333, -333, -290, -333, 240, - -333, 289, -333, -78, 37, -96, -4, -333, -90, -142, - -333, -333, -333 + -340, -340, -340, 170, -19, -13, -66, -339, 172, 95, + -340, 70, -340, -340, -340, -104, -340, -340, -340, -340, + 234, -340, -340, 255, -254, 167, 92, -340, -340, 201, + 187, -282, -340, -340, -340, -340, -340, -297, -340, -340, + -340, 248, -340, 288, -340, -79, 42, -99, 0, -340, + -98, -148, -340, -340, -340 }; const short parser::yydefgoto_[] = { - -1, 2, 3, 124, 125, 126, 67, 91, 205, 206, - 100, 101, 127, 128, 129, 130, 131, 132, 133, 134, - 157, 135, 136, 137, 95, 19, 199, 11, 280, 68, - 139, 140, 4, 97, 5, 12, 224, 298, 102, 144, - 145, 92, 93, 148, 385, 344, 390, 391, 392, 149, - 150, 104, 6 + -1, 2, 3, 127, 128, 129, 70, 94, 208, 209, + 103, 104, 130, 131, 132, 133, 134, 135, 136, 137, + 160, 138, 139, 140, 98, 19, 202, 11, 285, 71, + 142, 143, 4, 100, 5, 12, 229, 304, 105, 470, + 221, 147, 148, 95, 96, 151, 393, 351, 398, 399, + 400, 152, 153, 107, 6 }; const short parser::yytable_[] = { - 65, 65, 65, 152, 341, 66, 66, 66, 222, 80, - 81, 384, 83, 202, 203, 384, 323, 227, 228, 386, - 217, 308, 309, 349, 146, 173, 197, 426, 99, -223, - 162, -223, 163, 467, -222, 76, -222, 142, -273, 433, - 221, 201, 218, 1, 198, 387, 427, 388, 186, 232, - 389, 13, 383, 79, 79, 82, 79, 89, 66, 66, - 239, 66, 90, 77, 468, 219, 143, 146, 434, 400, - 229, 143, 79, 14, 229, 143, 16, 66, 233, 303, - 428, 79, 373, 220, 89, 234, 66, 444, 62, 90, - 440, 64, 166, 167, 168, 169, 22, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 435, 235, 184, 204, 441, 470, 464, 185, 393, - 473, 475, 448, 186, 207, 266, 445, 209, 210, 452, - 164, 442, 165, 465, 481, 211, 316, 476, 200, 15, - 201, 446, 17, 459, 240, 187, 447, 471, 394, 188, - 482, 474, 296, 189, 190, 395, 191, 192, 18, 193, - 194, 449, 322, 195, 212, 71, 213, 262, 453, 265, - 479, 196, 214, 270, 66, 215, 450, 429, 20, 21, - 396, 451, 397, 454, 225, 284, 165, 285, 455, 156, - 216, 287, 291, -193, 7, 8, 79, 292, 72, 9, - 271, 66, 10, 387, 272, 430, 69, 70, 389, 332, - 73, 273, 274, 324, 74, 325, 275, 166, 167, 168, - 169, 75, 364, 171, 94, 173, 276, 317, 372, 165, - 96, 98, 166, 167, 168, 169, 103, 170, 171, 172, - 173, 151, 159, 176, 177, 178, 179, 99, 186, 182, - 183, 168, 169, 331, 358, 171, 165, 173, 66, 362, - 161, 165, 366, 186, 374, 223, 375, 401, 408, 201, - 165, 412, 414, 165, 421, 432, 422, 422, 320, 438, - 186, 165, 461, 279, 165, 282, 286, 166, 167, 168, - 169, 79, 170, 171, 172, 173, 66, 283, 480, 359, - 165, 299, 294, 295, 182, 183, 365, 437, 302, 297, - 143, 66, 416, 300, 301, 311, 312, 304, 186, 313, - 314, 315, 343, 318, 89, 186, 347, 345, 89, 90, - 348, 355, 356, 90, 363, 380, 409, 463, 404, 357, - 166, 167, 168, 169, 405, 170, 171, 172, 173, 406, - 407, 176, 177, 178, 179, 413, 415, 182, 183, 420, - 423, 66, 439, 425, 443, 460, 456, 457, 424, 466, - 458, 186, 469, 477, 290, 472, 293, 230, 338, 138, - 342, 354, 483, 281, 399, 208, 326, 431, 153, 154, - 155, 158, 147, 484, 0, 478, 0, 160, 0, 166, - 167, 168, 169, 89, 170, 171, 172, 173, 90, 0, - 176, 177, 178, 179, 0, 0, 182, 183, 0, 0, + 68, 68, 68, 348, 155, 227, 69, 69, 69, 83, + 84, 392, 86, 205, 206, 330, 392, 401, 232, 233, + 176, 222, 315, 316, 451, 79, 149, 357, 102, 477, + 212, 213, 200, 65, 237, 1, 67, 145, 214, 13, + 165, 452, 166, 223, 189, 454, 478, 402, 458, 462, + 201, 435, 391, 215, 80, 403, 82, 82, 85, 82, + 92, 244, 69, 69, 238, 69, 93, 224, 216, 149, + 217, 436, 239, 234, 409, 82, 218, 234, 310, 219, + 404, 69, 405, 381, 82, 455, 225, 92, 459, 463, + 69, 275, 450, 93, -232, 220, -232, 394, 14, 240, + 456, 480, 483, 460, 464, 457, 437, 22, 461, 465, + -231, 438, -231, 445, 443, 15, 204, 207, 468, 276, + -282, 16, 226, 277, 395, 271, 396, 210, 469, 397, + 278, 279, 146, 481, 484, 280, 486, 18, 395, 323, + 439, 17, 488, 397, 444, 281, 472, 245, 146, 169, + 170, 171, 172, 302, 173, 174, 175, 176, 146, 489, + 179, 180, 181, 182, 74, 329, 185, 186, 487, 167, + 267, 168, 270, 494, 75, 203, 492, 204, 69, 76, + 230, 189, 168, 20, 21, 169, 170, 171, 172, 77, + 495, 174, 78, 176, 292, 296, 327, 289, 97, 290, + 82, 297, 169, 170, 171, 172, 69, 173, 174, 175, + 176, 339, 99, 179, 180, 181, 182, 189, 106, 185, + 186, 72, 73, 169, 170, 171, 172, 372, 173, 174, + 175, 176, 101, 380, 189, 324, 331, 168, 332, 154, + 185, 186, 171, 172, 228, 366, 174, 168, 176, 333, + 370, 102, 168, 162, 382, 189, 383, 410, 338, 204, + 417, 421, 168, 168, 69, 430, 374, 431, 169, 170, + 171, 172, 189, 173, 174, 175, 176, 164, 423, 179, + 180, 181, 182, 291, 284, 185, 186, -196, 7, 8, + 442, 287, 431, 9, 288, 448, 10, 168, 82, 474, + 189, 168, 299, 493, 69, 168, 367, 300, 305, 301, + 303, 306, 307, 373, 447, 334, 308, 425, 309, 69, + 146, 169, 170, 171, 172, 318, 173, 174, 175, 176, + 311, 92, 179, 180, 181, 182, 92, 93, 185, 186, + 319, 320, 93, 322, 321, 476, 325, 189, 350, 353, + 352, 355, 356, 189, 371, 363, 141, 364, 365, 388, + 413, 414, 415, 416, 424, 156, 157, 158, 161, 418, + 69, 422, 432, 434, 163, 449, 433, 429, 467, 453, + 466, 471, 473, 490, 295, 345, 298, 362, 479, 482, + 485, 286, 496, 349, 150, 235, 211, 408, 497, 440, + 0, 0, 0, 0, 0, 491, 0, 0, 0, 0, + 0, 0, 92, 0, 231, 0, 0, 236, 93, 0, + 0, 0, 0, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 0, 268, 0, 272, 0, 273, + 274, 0, 82, 282, 283, 0, 0, 0, 69, 141, + 0, 0, 169, 170, 171, 172, 0, 173, 174, 175, + 176, 0, 0, 179, 180, 181, 182, 0, 0, 185, + 186, 0, 0, 0, 0, 0, 0, 313, 0, 314, + 169, 170, 171, 172, 189, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 343, + 0, 0, 187, 0, 0, 0, 0, 188, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 335, 336, 0, 340, 341, 0, 342, 0, 0, 344, + 0, 0, 0, 0, 0, 190, 346, 0, 347, 191, + 0, 0, 0, 192, 193, 0, 194, 195, 0, 196, + 197, 354, 0, 198, 141, 0, 0, 358, 0, 0, + 361, 199, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 368, 369, 0, 0, 0, 0, 0, 375, 376, + 159, 0, 0, 0, 0, 0, 0, 0, 387, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 406, 0, + 0, 141, 108, 241, 0, 411, 0, 110, 111, 242, + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 419, 420, 0, 0, 23, 24, 25, 426, + 427, 428, 26, 0, 0, 27, 113, 114, 0, 0, + 29, 0, 0, 115, 116, 117, 0, 0, 33, 0, + 34, 243, 0, 35, 0, 0, 36, 118, 37, 38, + 0, 39, 40, 0, 41, 42, 0, 0, 43, 0, + 0, 0, 44, 45, 46, 47, 119, 0, 120, 0, + 0, 48, 49, 50, 0, 121, 52, 0, 53, 54, + 55, 56, 57, 58, 0, 0, 59, 0, 81, 61, + 0, 122, 62, 0, 0, 0, 63, 0, 0, 64, + 65, 123, 124, 67, 125, 126, 108, 328, 0, 0, + 0, 110, 111, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 0, 0, 0, 0, 0, 0, 226, 0, 79, - 231, 0, 0, 0, 66, 327, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 0, 263, 0, - 267, 0, 268, 269, 0, 0, 277, 278, 0, 0, - 0, 0, 138, 0, 166, 167, 168, 169, 0, 170, - 171, 172, 173, 0, 0, 176, 177, 178, 179, 0, - 0, 182, 183, 0, 0, 0, 0, 381, 306, 0, - 307, 166, 167, 168, 169, 186, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 336, 0, 184, 0, 0, 0, 0, 185, 0, 0, - 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, - 0, 328, 329, 0, 333, 334, 0, 335, 0, 0, - 337, 0, 0, 0, 187, 0, 0, 339, 188, 340, - 0, 0, 189, 190, 0, 191, 192, 0, 193, 194, - 346, 0, 195, 138, 0, 0, 350, 0, 0, 353, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 360, 361, 0, 0, 0, 0, 0, 367, 368, 0, - 0, 0, 0, 0, 0, 0, 0, 379, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 105, 236, 402, 0, 0, 107, 108, 237, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 410, 411, 0, 0, 0, 23, 24, 417, 418, 419, - 25, 0, 0, 26, 110, 111, 0, 0, 28, 0, - 0, 112, 113, 114, 0, 0, 32, 0, 33, 238, - 0, 34, 0, 0, 35, 115, 36, 37, 0, 38, - 0, 39, 40, 0, 0, 41, 0, 0, 0, 42, - 43, 44, 45, 116, 0, 117, 0, 0, 46, 47, - 48, 0, 118, 50, 0, 51, 52, 53, 54, 55, - 56, 0, 0, 0, 78, 58, 0, 119, 59, 0, - 0, 0, 60, 0, 0, 61, 62, 120, 121, 64, - 122, 123, 105, 321, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, - 0, 25, 0, 0, 26, 110, 111, 0, 0, 28, - 0, 0, 112, 113, 114, 0, 0, 32, 0, 33, - 0, 0, 34, 0, 0, 35, 115, 36, 37, 0, - 38, 0, 39, 40, 0, 0, 41, 0, 0, 0, - 42, 43, 44, 45, 116, 0, 117, 0, 0, 46, - 47, 48, 0, 118, 50, 0, 51, 52, 53, 54, - 55, 56, 94, 0, 0, 78, 58, 0, 119, 59, - 0, 0, 0, 60, 0, 0, 61, 62, 120, 121, - 64, 122, 123, 105, 371, 0, 0, 0, 107, 108, - 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, - 0, 0, 25, 0, 0, 26, 110, 111, 0, 0, - 28, 0, 0, 112, 113, 114, 0, 0, 32, 0, - 33, 0, 0, 34, 0, 0, 35, 115, 36, 37, - 0, 38, 0, 39, 40, 0, 0, 41, 0, 0, - 0, 42, 43, 44, 45, 116, 0, 117, 0, 0, - 46, 47, 48, 0, 118, 50, 0, 51, 52, 53, - 54, 55, 56, 94, 0, 0, 78, 58, 0, 119, - 59, 0, 0, 0, 60, 0, 0, 61, 62, 120, - 121, 64, 122, 123, 105, 106, 0, 0, 0, 107, - 108, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 113, 114, 0, 0, 29, 0, 0, 115, 116, 117, + 0, 0, 33, 0, 34, 0, 0, 35, 0, 0, + 36, 118, 37, 38, 0, 39, 40, 0, 41, 42, + 0, 0, 43, 0, 0, 0, 44, 45, 46, 47, + 119, 0, 120, 0, 0, 48, 49, 50, 0, 121, + 52, 0, 53, 54, 55, 56, 57, 58, 97, 0, + 59, 0, 81, 61, 0, 122, 62, 0, 0, 0, + 63, 0, 0, 64, 65, 123, 124, 67, 125, 126, + 108, 379, 0, 0, 0, 110, 111, 0, 0, 112, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 113, 114, 0, 0, 29, 0, + 0, 115, 116, 117, 0, 0, 33, 0, 34, 0, + 0, 35, 0, 0, 36, 118, 37, 38, 0, 39, + 40, 0, 41, 42, 0, 0, 43, 0, 0, 0, + 44, 45, 46, 47, 119, 0, 120, 0, 0, 48, + 49, 50, 0, 121, 52, 0, 53, 54, 55, 56, + 57, 58, 97, 0, 59, 0, 81, 61, 0, 122, + 62, 0, 0, 0, 63, 0, 0, 64, 65, 123, + 124, 67, 125, 126, 108, 109, 0, 0, 0, 110, + 111, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, - 0, 0, 0, 25, 0, 0, 26, 110, 111, 0, - 0, 28, 0, 0, 112, 113, 114, 0, 0, 32, - 0, 33, 0, 0, 34, 0, 0, 35, 115, 36, - 37, 0, 38, 0, 39, 40, 0, 0, 41, 0, - 0, 0, 42, 43, 44, 45, 116, 0, 117, 0, - 0, 46, 47, 48, 0, 118, 50, 0, 51, 52, - 53, 54, 55, 56, 0, 0, 0, 78, 58, 0, - 119, 59, 0, 0, 0, 60, 0, 0, 61, 62, - 120, 121, 64, 122, 123, 105, 0, 0, 0, 0, - 107, 108, 0, 0, 109, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, - 24, 0, 0, 0, 25, 0, 0, 26, 110, 111, - 0, 0, 28, 0, 0, 112, 113, 114, 0, 0, - 32, 0, 33, 0, 0, 34, 0, 0, 35, 115, - 36, 37, 0, 38, 0, 39, 40, 0, 0, 41, - 0, 0, 0, 42, 43, 44, 45, 116, 0, 117, - 0, 0, 46, 47, 48, 0, 118, 50, 0, 51, - 52, 53, 54, 55, 56, 0, 0, 0, 78, 58, - 0, 119, 59, 0, 0, 0, 60, 156, 0, 61, - 62, 120, 121, 64, 122, 123, 105, 436, 0, 0, - 0, 107, 108, 0, 0, 109, 0, 0, 0, 0, + 25, 0, 0, 0, 26, 0, 0, 27, 113, 114, + 0, 0, 29, 0, 0, 115, 116, 117, 0, 0, + 33, 0, 34, 0, 0, 35, 0, 0, 36, 118, + 37, 38, 0, 39, 40, 0, 41, 42, 0, 0, + 43, 0, 0, 0, 44, 45, 46, 47, 119, 0, + 120, 0, 0, 48, 49, 50, 0, 121, 52, 0, + 53, 54, 55, 56, 57, 58, 0, 0, 59, 0, + 81, 61, 0, 122, 62, 0, 0, 0, 63, 0, + 0, 64, 65, 123, 124, 67, 125, 126, 108, 0, + 0, 0, 0, 110, 111, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 24, 0, 0, 0, 25, 0, 0, 26, 110, - 111, 0, 0, 28, 0, 0, 112, 113, 114, 0, - 0, 32, 0, 33, 0, 0, 34, 0, 0, 35, - 115, 36, 37, 0, 38, 0, 39, 40, 0, 0, - 41, 0, 0, 0, 42, 43, 44, 45, 116, 0, - 117, 0, 0, 46, 47, 48, 0, 118, 50, 0, - 51, 52, 53, 54, 55, 56, 0, 0, 0, 78, - 58, 0, 119, 59, 0, 0, 0, 60, 0, 0, - 61, 62, 120, 121, 64, 122, 123, 105, 462, 0, - 0, 0, 107, 108, 0, 0, 109, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 113, 114, 0, 0, 29, 0, 0, 115, + 116, 117, 0, 0, 33, 0, 34, 0, 0, 35, + 0, 0, 36, 118, 37, 38, 0, 39, 40, 0, + 41, 42, 0, 0, 43, 0, 0, 0, 44, 45, + 46, 47, 119, 0, 120, 0, 0, 48, 49, 50, + 0, 121, 52, 0, 53, 54, 55, 56, 57, 58, + 0, 0, 59, 0, 81, 61, 0, 122, 62, 0, + 0, 0, 63, 159, 0, 64, 65, 123, 124, 67, + 125, 126, 108, 446, 0, 0, 0, 110, 111, 0, + 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 27, 113, 114, 0, 0, + 29, 0, 0, 115, 116, 117, 0, 0, 33, 0, + 34, 0, 0, 35, 0, 0, 36, 118, 37, 38, + 0, 39, 40, 0, 41, 42, 0, 0, 43, 0, + 0, 0, 44, 45, 46, 47, 119, 0, 120, 0, + 0, 48, 49, 50, 0, 121, 52, 0, 53, 54, + 55, 56, 57, 58, 0, 0, 59, 0, 81, 61, + 0, 122, 62, 0, 0, 0, 63, 0, 0, 64, + 65, 123, 124, 67, 125, 126, 108, 475, 0, 0, + 0, 110, 111, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 0, 0, 0, 25, 0, 0, 26, - 110, 111, 0, 0, 28, 0, 0, 112, 113, 114, - 0, 0, 32, 0, 33, 0, 0, 34, 0, 0, - 35, 115, 36, 37, 0, 38, 0, 39, 40, 0, - 0, 41, 0, 0, 0, 42, 43, 44, 45, 116, - 0, 117, 0, 0, 46, 47, 48, 0, 118, 50, - 0, 51, 52, 53, 54, 55, 56, 0, 0, 0, - 78, 58, 0, 119, 59, 0, 0, 0, 60, 0, - 0, 61, 62, 120, 121, 64, 122, 123, 105, 0, - 0, 0, 0, 107, 108, 0, 0, 109, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 113, 114, 0, 0, 29, 0, 0, 115, 116, 117, + 0, 0, 33, 0, 34, 0, 0, 35, 0, 0, + 36, 118, 37, 38, 0, 39, 40, 0, 41, 42, + 0, 0, 43, 0, 0, 0, 44, 45, 46, 47, + 119, 0, 120, 0, 0, 48, 49, 50, 0, 121, + 52, 0, 53, 54, 55, 56, 57, 58, 0, 0, + 59, 0, 81, 61, 0, 122, 62, 0, 0, 0, + 63, 0, 0, 64, 65, 123, 124, 67, 125, 126, + 108, 0, 0, 0, 0, 110, 111, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 0, 0, 0, 25, 0, 0, - 26, 110, 111, 0, 0, 28, 0, 0, 112, 113, - 114, 0, 0, 32, 0, 33, 0, 0, 34, 0, - 0, 35, 115, 36, 37, 0, 38, 0, 39, 40, - 0, 0, 41, 0, 0, 0, 42, 43, 44, 45, - 116, 0, 117, 0, 0, 46, 47, 48, 0, 118, - 50, 0, 51, 52, 53, 54, 55, 56, 0, 0, - 0, 78, 58, 0, 119, 59, 0, 0, 0, 60, - 0, 0, 61, 62, 120, 121, 64, 122, 123, 288, - 0, 0, 0, 0, 202, 203, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, - 0, 26, 0, 27, 0, 0, 28, 0, 0, 112, - 113, 114, 0, 0, 32, 0, 33, 0, 0, 34, - 0, 0, 35, 115, 36, 37, 0, 38, 289, 39, - 40, 0, 0, 41, 0, 0, 0, 42, 43, 44, - 45, 0, 0, 117, 0, 0, 46, 47, 48, 0, - 49, 50, 0, 51, 52, 53, 54, 55, 56, 141, - 0, 0, 78, 58, 0, 119, 59, 0, 0, 0, - 60, 0, 0, 61, 62, 120, 121, 64, 122, 0, - 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, - 0, 26, 0, 27, 0, 0, 28, 0, 0, 29, - 30, 31, 0, 0, 32, 0, 33, 0, 0, 34, - 0, 0, 35, 0, 36, 37, 0, 38, 0, 39, - 40, 0, 0, 41, 0, 0, 0, 42, 43, 44, - 45, 0, 0, 0, 0, 0, 46, 47, 48, 0, - 49, 50, 0, 51, 52, 53, 54, 55, 56, 264, - 0, 0, 78, 58, 0, 0, 59, 0, 0, 0, - 60, 0, 0, 61, 62, 0, 63, 64, 0, 0, - 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, - 0, 26, 0, 27, 0, 0, 28, 0, 0, 29, - 30, 31, 0, 0, 32, 0, 33, 0, 0, 34, - 0, 0, 35, 0, 36, 37, 0, 38, 0, 39, - 40, 0, 0, 41, 0, 0, 0, 42, 43, 44, - 45, 0, 0, 0, 0, 0, 46, 47, 48, 0, - 49, 50, 0, 51, 52, 53, 54, 55, 56, 330, - 0, 0, 78, 58, 0, 0, 59, 0, 0, 0, - 60, 0, 0, 61, 62, 0, 63, 64, 0, 0, - 0, 0, 0, 23, 24, 0, 0, 0, 25, 0, - 0, 26, 0, 27, 0, 0, 28, 0, 0, 29, - 30, 31, 0, 0, 32, 0, 33, 0, 0, 34, - 0, 0, 35, 0, 36, 37, 0, 38, 0, 39, - 40, 0, 0, 41, 0, 0, 0, 42, 43, 44, - 45, 0, 0, 0, 0, 0, 46, 47, 48, 0, - 49, 50, 0, 51, 52, 53, 54, 55, 56, 0, - 0, 0, 78, 58, 0, 0, 59, 0, 0, 0, - 60, 0, 0, 61, 62, 0, 63, 64, 166, 167, - 168, 169, 0, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 0, 0, 184, - 0, 0, 0, 0, 185, 166, 167, 168, 169, 186, - 170, 171, 172, 173, 0, 0, 176, 177, 178, 179, - 0, 0, 182, 183, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 188, 186, 0, 0, 189, - 190, 0, 191, 192, 0, 193, 194, 0, 0, 195, - 0, 370, 0, 0, 0, 0, 0, 196, 0, 0, - 0, 0, 0, 0, 166, 167, 168, 169, 305, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 0, 0, 184, 0, 0, 0, 0, - 185, 166, 167, 168, 169, 186, 170, 171, 172, 173, - 0, 0, 176, 177, 178, 179, 0, 0, 182, 183, - 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, - 0, 188, 186, 0, 0, 189, 190, 0, 191, 192, - 0, 193, 194, 0, 0, 195, 0, 376, 0, 23, - 24, 0, 0, 196, 25, 0, 0, 26, 0, 27, - 0, 0, 28, 143, 352, 84, 85, 86, 0, 0, - 32, 0, 33, 0, 0, 34, 0, 0, 35, 0, - 36, 37, 0, 38, 87, 39, 40, 0, 0, 41, - 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, - 0, 0, 46, 47, 48, 0, 49, 50, 0, 51, - 52, 53, 54, 55, 56, 0, 0, 0, 78, 58, - 0, 0, 59, 0, 0, 0, 60, 0, 0, 61, - 62, 0, 88, 64, 23, 24, 0, 0, 0, 25, - 0, 0, 26, 0, 27, 0, 0, 28, 0, 0, - 84, 85, 86, 0, 0, 32, 0, 33, 0, 0, - 34, 0, 0, 35, 0, 36, 37, 0, 38, 87, - 39, 40, 0, 0, 41, 0, 0, 0, 42, 43, - 44, 45, 0, 0, 0, 0, 0, 46, 47, 48, - 0, 49, 50, 0, 51, 52, 53, 54, 55, 56, - 0, 0, 0, 78, 58, 0, 0, 59, 0, 0, - 0, 60, 0, 0, 61, 62, 0, 88, 64, 23, - 24, 0, 0, 0, 25, 0, 0, 26, 0, 27, - 0, 0, 28, 0, 0, 29, 30, 31, 0, 0, - 32, 0, 33, 0, 0, 34, 0, 0, 35, 0, - 36, 37, 0, 38, 0, 39, 40, 0, 0, 41, - 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, - 0, 0, 46, 47, 48, 0, 49, 50, 0, 51, - 52, 53, 54, 55, 56, 0, 0, 0, 57, 58, - 0, 0, 59, 0, 0, 0, 60, 0, 0, 61, - 62, 0, 63, 64, 23, 24, 0, 0, 0, 25, - 0, 0, 26, 0, 27, 0, 0, 28, 0, 0, - 29, 30, 31, 0, 0, 32, 0, 33, 0, 0, - 34, 0, 0, 35, 0, 36, 37, 0, 38, 0, - 39, 40, 0, 0, 41, 0, 0, 0, 42, 43, - 44, 45, 0, 0, 0, 0, 0, 46, 47, 48, - 0, 49, 50, 0, 51, 52, 53, 54, 55, 56, - 0, 0, 0, 78, 58, 0, 0, 59, 0, 0, - 0, 60, 0, 0, 61, 62, 382, 63, 64, 0, - 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 185, 166, 167, 168, - 169, 186, 170, 171, 172, 173, 0, 0, 176, 177, - 178, 179, 0, 0, 182, 183, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 188, 186, 0, - 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, - 0, 195, 0, 377, 0, 0, 398, 0, 0, 196, - 166, 167, 168, 169, 0, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 185, 166, 167, 168, - 169, 186, 170, 171, 172, 173, 0, 0, 176, 177, - 178, 179, 0, 0, 182, 183, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 188, 186, 0, - 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, - 0, 195, 0, 378, 0, 166, 167, 168, 169, 196, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 184, 0, 0, 197, - 0, 185, 166, 167, 168, 169, 186, 170, 171, 172, - 173, 0, 0, 176, 177, 178, 179, 198, 0, 182, - 183, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 0, 188, 186, 0, 0, 189, 190, 0, 191, - 192, 0, 193, 194, 0, 0, 195, 0, 0, 0, - 166, 167, 168, 169, 196, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 310, 0, 0, 185, 0, 0, 0, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 188, 0, 0, - 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, - 0, 195, 0, 0, 0, 166, 167, 168, 169, 196, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 184, 319, 0, 0, - 0, 185, 0, 0, 0, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 0, 188, 0, 0, 0, 189, 190, 0, 191, - 192, 0, 193, 194, 0, 0, 195, 0, 0, 0, - 166, 167, 168, 169, 196, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 185, 0, 0, 0, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 188, 0, 0, - 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, - 0, 195, 0, 0, 0, 166, 167, 168, 169, 196, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 184, 369, 0, 0, - 0, 185, 0, 0, 0, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 0, 188, 0, 0, 0, 189, 190, 0, 191, - 192, 0, 193, 194, 0, 0, 195, 0, 0, 0, - 166, 167, 168, 169, 196, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 185, 0, 0, 0, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 188, 0, 0, - 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, - 0, 195, 0, 0, 0, 166, 167, 168, 169, 196, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 184, 0, 0, 0, - 0, 185, 0, 0, 0, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, - 0, 0, 188, 0, 0, 0, 189, 190, 0, 191, - 192, 0, 193, 194, 0, 0, 195, 0, 0, 0, - 166, 167, 168, 169, 196, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 0, - 0, 184, 0, 0, 0, 0, 185, 0, 0, 0, - 0, 186, 166, 167, 168, 169, 0, 170, 171, 172, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 113, 114, 0, 0, 29, 0, + 0, 115, 116, 117, 0, 0, 33, 0, 34, 0, + 0, 35, 0, 0, 36, 118, 37, 38, 0, 39, + 40, 0, 41, 42, 0, 0, 43, 0, 0, 0, + 44, 45, 46, 47, 119, 0, 120, 0, 0, 48, + 49, 50, 0, 121, 52, 0, 53, 54, 55, 56, + 57, 58, 0, 0, 59, 0, 81, 61, 0, 122, + 62, 0, 0, 0, 63, 0, 0, 64, 65, 123, + 124, 67, 125, 126, 293, 0, 0, 0, 0, 205, + 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 27, 0, 28, + 0, 0, 29, 0, 0, 115, 116, 117, 0, 0, + 33, 0, 34, 0, 0, 35, 0, 0, 36, 118, + 37, 38, 0, 39, 40, 294, 41, 42, 0, 0, + 43, 0, 0, 0, 44, 45, 46, 47, 0, 0, + 120, 0, 0, 48, 49, 50, 0, 51, 52, 0, + 53, 54, 55, 56, 57, 58, 144, 0, 59, 0, + 81, 61, 0, 122, 62, 0, 0, 0, 63, 0, + 0, 64, 65, 123, 124, 67, 125, 0, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 0, 28, 0, 0, 29, 0, 0, 30, 31, 32, + 0, 0, 33, 0, 34, 0, 0, 35, 0, 0, + 36, 0, 37, 38, 0, 39, 40, 0, 41, 42, + 0, 0, 43, 0, 0, 0, 44, 45, 46, 47, + 0, 0, 0, 0, 0, 48, 49, 50, 0, 51, + 52, 0, 53, 54, 55, 56, 57, 58, 269, 0, + 59, 0, 81, 61, 0, 0, 62, 0, 0, 0, + 63, 0, 0, 64, 65, 0, 66, 67, 0, 0, + 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 0, 28, 0, 0, 29, 0, 0, 30, + 31, 32, 0, 0, 33, 0, 34, 0, 0, 35, + 0, 0, 36, 0, 37, 38, 0, 39, 40, 0, + 41, 42, 0, 0, 43, 0, 0, 0, 44, 45, + 46, 47, 0, 0, 0, 0, 0, 48, 49, 50, + 0, 51, 52, 0, 53, 54, 55, 56, 57, 58, + 337, 0, 59, 0, 81, 61, 0, 0, 62, 0, + 0, 0, 63, 0, 0, 64, 65, 0, 66, 67, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 0, 28, 0, 0, 29, 0, + 0, 30, 31, 32, 0, 0, 33, 0, 34, 0, + 0, 35, 0, 0, 36, 0, 37, 38, 0, 39, + 40, 0, 41, 42, 0, 0, 43, 0, 0, 0, + 44, 45, 46, 47, 0, 0, 0, 0, 0, 48, + 49, 50, 0, 51, 52, 0, 53, 54, 55, 56, + 57, 58, 0, 0, 59, 0, 81, 61, 0, 0, + 62, 0, 0, 0, 63, 0, 0, 64, 65, 0, + 66, 67, 169, 170, 171, 172, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 0, 0, 0, 187, 0, 0, 0, 0, 188, + 169, 170, 171, 172, 189, 173, 174, 175, 176, 0, + 0, 179, 180, 181, 182, 0, 0, 185, 186, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, + 0, 191, 189, 0, 0, 192, 193, 0, 194, 195, + 0, 196, 197, 0, 0, 198, 0, 378, 0, 0, + 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, + 0, 169, 170, 171, 172, 312, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 0, 0, 0, 187, 0, 0, 0, 0, 188, 169, + 170, 171, 172, 189, 173, 174, 175, 176, 0, 0, + 179, 180, 181, 182, 0, 0, 185, 186, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 191, 189, 0, 0, 192, 193, 0, 194, 195, 0, + 196, 197, 0, 0, 198, 0, 384, 0, 23, 24, + 25, 0, 199, 0, 26, 0, 0, 27, 0, 28, + 0, 0, 29, 146, 360, 87, 88, 89, 0, 0, + 33, 0, 34, 0, 0, 35, 0, 0, 36, 0, + 37, 38, 0, 39, 40, 90, 41, 42, 0, 0, + 43, 0, 0, 0, 44, 45, 46, 47, 0, 0, + 0, 0, 0, 48, 49, 50, 0, 51, 52, 0, + 53, 54, 55, 56, 57, 58, 0, 0, 59, 0, + 81, 61, 0, 0, 62, 0, 0, 0, 63, 0, + 0, 64, 65, 0, 91, 67, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 27, 0, 28, 0, 0, + 29, 0, 0, 87, 88, 89, 0, 0, 33, 0, + 34, 0, 0, 35, 0, 0, 36, 0, 37, 38, + 0, 39, 40, 90, 41, 42, 0, 0, 43, 0, + 0, 0, 44, 45, 46, 47, 0, 0, 0, 0, + 0, 48, 49, 50, 0, 51, 52, 0, 53, 54, + 55, 56, 57, 58, 0, 0, 59, 0, 81, 61, + 0, 0, 62, 0, 0, 0, 63, 0, 0, 64, + 65, 0, 91, 67, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 0, 28, 0, 0, 29, 0, + 0, 30, 31, 32, 0, 0, 33, 0, 34, 0, + 0, 35, 0, 0, 36, 0, 37, 38, 0, 39, + 40, 0, 41, 42, 0, 0, 43, 0, 0, 0, + 44, 45, 46, 47, 0, 0, 0, 0, 0, 48, + 49, 50, 0, 51, 52, 0, 53, 54, 55, 56, + 57, 58, 0, 0, 59, 0, 60, 61, 0, 0, + 62, 0, 0, 0, 63, 0, 0, 64, 65, 0, + 66, 67, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 0, 28, 0, 0, 29, 0, 0, 30, + 31, 32, 0, 0, 33, 0, 34, 0, 0, 35, + 0, 0, 36, 0, 37, 38, 0, 39, 40, 0, + 41, 42, 0, 0, 43, 0, 0, 0, 44, 45, + 46, 47, 0, 0, 0, 0, 0, 48, 49, 50, + 0, 51, 52, 0, 53, 54, 55, 56, 57, 58, + 0, 0, 59, 0, 81, 61, 0, 0, 62, 0, + 0, 0, 63, 0, 0, 64, 65, 389, 66, 67, + 0, 169, 170, 171, 172, 0, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 0, 0, 0, 187, 0, 0, 0, 0, 188, 169, + 170, 171, 172, 189, 173, 174, 175, 176, 0, 0, + 179, 180, 181, 182, 0, 0, 185, 186, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 191, 189, 0, 0, 192, 193, 0, 194, 195, 0, + 196, 197, 0, 0, 198, 0, 385, 0, 0, 390, + 0, 0, 199, 169, 170, 171, 172, 0, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 0, 0, 0, 187, 0, 0, 0, 0, + 188, 169, 170, 171, 172, 189, 173, 174, 175, 176, + 0, 0, 179, 180, 181, 182, 0, 0, 185, 186, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, + 0, 0, 191, 189, 0, 0, 192, 193, 0, 194, + 195, 0, 196, 197, 0, 0, 198, 0, 386, 0, + 0, 407, 0, 0, 199, 169, 170, 171, 172, 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 0, 0, 187, 0, 0, 0, 188, 185, 0, - 0, 189, 190, 186, 191, 192, 0, 193, 194, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 188, - 0, 0, 0, 189, 190, 0, 191, 192, 0, 193, - 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 196 + 183, 184, 185, 186, 0, 0, 0, 187, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 0, 0, 0, 191, 0, 0, 0, 192, 193, + 0, 194, 195, 0, 196, 197, 0, 0, 198, 0, + 0, 0, 0, 441, 0, 0, 199, 169, 170, 171, + 172, 0, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 0, 0, 0, 187, + 0, 0, 0, 0, 188, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 0, 0, 0, 191, 0, 0, 0, + 192, 193, 0, 194, 195, 0, 196, 197, 0, 0, + 198, 0, 0, 0, 169, 170, 171, 172, 199, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 0, 0, 0, 187, 0, 0, 200, + 0, 188, 0, 0, 0, 0, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 0, 191, 0, 0, 0, 192, 193, 0, + 194, 195, 0, 196, 197, 0, 0, 198, 0, 0, + 0, 169, 170, 171, 172, 199, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 0, 0, 0, 187, 0, 317, 0, 0, 188, 0, + 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 191, 0, 0, 0, 192, 193, 0, 194, 195, 0, + 196, 197, 0, 0, 198, 0, 0, 0, 169, 170, + 171, 172, 199, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 0, 0, 0, + 187, 326, 0, 0, 0, 188, 0, 0, 0, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 0, 0, 0, 191, 0, 0, + 0, 192, 193, 0, 194, 195, 0, 196, 197, 0, + 0, 198, 0, 0, 0, 169, 170, 171, 172, 199, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 0, 0, 0, 187, 0, 0, + 0, 0, 188, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, + 190, 0, 0, 0, 191, 0, 0, 0, 192, 193, + 0, 194, 195, 0, 196, 197, 0, 0, 198, 0, + 0, 0, 169, 170, 171, 172, 199, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 0, 0, 0, 187, 377, 0, 0, 0, 188, + 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, + 0, 191, 0, 0, 0, 192, 193, 0, 194, 195, + 0, 196, 197, 0, 0, 198, 0, 0, 0, 169, + 170, 171, 172, 199, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 0, 0, + 0, 187, 0, 0, 0, 0, 188, 0, 0, 0, + 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 0, 0, 0, 191, 0, + 0, 0, 192, 193, 0, 194, 195, 0, 196, 197, + 0, 0, 198, 0, 0, 0, 169, 170, 171, 172, + 199, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 0, 0, 0, 187, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 189, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 0, 0, 0, 191, 0, 0, 0, 192, + 193, 0, 194, 195, 0, 196, 197, 0, 0, 198, + 0, 0, 0, 169, 170, 171, 172, 199, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 0, 0, 0, 187, 0, 0, 0, 0, + 188, 0, 0, 0, 0, 189, 169, 170, 171, 172, + 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 0, 0, 0, 190, 0, + 0, 0, 191, 188, 0, 0, 192, 193, 189, 194, + 195, 0, 196, 197, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, + 0, 190, 0, 0, 0, 191, 0, 0, 0, 192, + 193, 0, 194, 195, 0, 196, 197, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 199 }; const short parser::yycheck_[] = { - 19, 20, 21, 105, 294, 19, 20, 21, 150, 72, - 73, 343, 75, 8, 9, 347, 264, 52, 53, 47, - 38, 52, 53, 302, 102, 16, 32, 49, 91, 4, - 3, 6, 5, 46, 4, 3, 6, 100, 4, 4, - 6, 6, 60, 42, 50, 73, 68, 75, 39, 27, - 78, 0, 342, 72, 73, 74, 75, 76, 72, 73, - 162, 75, 76, 31, 77, 83, 41, 145, 33, 348, - 105, 41, 91, 7, 105, 41, 66, 91, 56, 221, - 102, 100, 330, 101, 103, 63, 100, 35, 108, 103, - 422, 111, 8, 9, 10, 11, 75, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 401, 90, 29, 109, 48, 46, 48, 34, 27, - 46, 48, 35, 39, 143, 188, 74, 38, 39, 35, - 4, 64, 6, 64, 48, 46, 238, 64, 4, 95, - 6, 89, 95, 433, 163, 61, 94, 77, 56, 65, - 64, 77, 215, 69, 70, 63, 72, 73, 62, 75, - 76, 74, 264, 79, 75, 55, 77, 186, 74, 188, - 460, 87, 83, 34, 188, 86, 89, 47, 16, 17, - 88, 94, 90, 89, 4, 4, 6, 6, 94, 105, - 101, 210, 211, 95, 96, 97, 215, 211, 5, 101, - 61, 215, 104, 73, 65, 75, 20, 21, 78, 272, - 5, 72, 73, 3, 103, 5, 77, 8, 9, 10, - 11, 78, 324, 14, 93, 16, 87, 4, 330, 6, - 3, 3, 8, 9, 10, 11, 6, 13, 14, 15, - 16, 4, 3, 19, 20, 21, 22, 310, 39, 25, - 26, 10, 11, 272, 4, 14, 6, 16, 272, 4, - 3, 6, 325, 39, 3, 107, 5, 4, 4, 6, - 6, 4, 374, 6, 4, 4, 6, 6, 54, 4, - 39, 6, 4, 106, 6, 109, 3, 8, 9, 10, - 11, 310, 13, 14, 15, 16, 310, 109, 4, 318, - 6, 3, 77, 71, 25, 26, 325, 409, 3, 78, - 41, 325, 375, 71, 71, 6, 6, 91, 39, 4, - 6, 4, 3, 5, 343, 39, 3, 40, 347, 343, - 3, 110, 110, 347, 4, 4, 3, 439, 4, 110, - 8, 9, 10, 11, 4, 13, 14, 15, 16, 4, - 4, 19, 20, 21, 22, 4, 375, 25, 26, 33, - 67, 375, 3, 47, 67, 4, 67, 47, 387, 28, - 86, 39, 28, 67, 211, 28, 211, 158, 285, 98, - 295, 310, 478, 201, 347, 145, 54, 391, 107, 108, - 109, 110, 103, 483, -1, 458, -1, 116, -1, 8, - 9, 10, 11, 422, 13, 14, 15, 16, 422, -1, - 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 39, -1, -1, -1, -1, -1, -1, 156, -1, 458, - 159, -1, -1, -1, 458, 54, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, -1, 187, -1, - 189, -1, 191, 192, -1, -1, 195, 196, -1, -1, - -1, -1, 201, -1, 8, 9, 10, 11, -1, 13, - 14, 15, 16, -1, -1, 19, 20, 21, 22, -1, - -1, 25, 26, -1, -1, -1, -1, 4, 227, -1, - 229, 8, 9, 10, 11, 39, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 54, -1, 29, -1, -1, -1, -1, 34, -1, -1, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 270, 271, -1, 273, 274, -1, 276, -1, -1, - 279, -1, -1, -1, 61, -1, -1, 286, 65, 288, - -1, -1, 69, 70, -1, 72, 73, -1, 75, 76, - 299, -1, 79, 302, -1, -1, 305, -1, -1, 308, - 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 319, 320, -1, -1, -1, -1, -1, 326, 327, -1, - -1, -1, -1, -1, -1, -1, -1, 336, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - -1, 3, 4, 352, -1, -1, 8, 9, 10, -1, - 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 369, 370, -1, -1, -1, 27, 28, 376, 377, 378, - 32, -1, -1, 35, 36, 37, -1, -1, 40, -1, - -1, 43, 44, 45, -1, -1, 48, -1, 50, 51, - -1, 53, -1, -1, 56, 57, 58, 59, -1, 61, - -1, 63, 64, -1, -1, 67, -1, -1, -1, 71, - 72, 73, 74, 75, -1, 77, -1, -1, 80, 81, - 82, -1, 84, 85, -1, 87, 88, 89, 90, 91, - 92, -1, -1, -1, 96, 97, -1, 99, 100, -1, - -1, -1, 104, -1, -1, 107, 108, 109, 110, 111, - 112, 113, 3, 4, -1, -1, -1, 8, 9, -1, + 19, 20, 21, 300, 108, 153, 19, 20, 21, 75, + 76, 350, 78, 8, 9, 269, 355, 27, 53, 54, + 16, 39, 53, 54, 49, 3, 105, 309, 94, 49, + 39, 40, 33, 111, 27, 43, 114, 103, 47, 0, + 3, 66, 5, 61, 40, 36, 66, 57, 36, 36, + 51, 50, 349, 62, 32, 65, 75, 76, 77, 78, + 79, 165, 75, 76, 57, 78, 79, 85, 77, 148, + 79, 70, 65, 108, 356, 94, 85, 108, 226, 88, + 90, 94, 92, 337, 103, 76, 104, 106, 76, 76, + 103, 35, 431, 106, 4, 104, 6, 48, 7, 92, + 91, 47, 47, 91, 91, 96, 105, 77, 96, 96, + 4, 48, 6, 410, 4, 98, 6, 112, 97, 63, + 4, 68, 6, 67, 75, 191, 77, 146, 107, 80, + 74, 75, 42, 79, 79, 79, 47, 64, 75, 243, + 77, 98, 49, 80, 34, 89, 443, 166, 42, 8, + 9, 10, 11, 219, 13, 14, 15, 16, 42, 66, + 19, 20, 21, 22, 56, 269, 25, 26, 79, 4, + 189, 6, 191, 49, 5, 4, 473, 6, 191, 5, + 4, 40, 6, 16, 17, 8, 9, 10, 11, 106, + 66, 14, 80, 16, 213, 214, 55, 4, 95, 6, + 219, 214, 8, 9, 10, 11, 219, 13, 14, 15, + 16, 277, 3, 19, 20, 21, 22, 40, 6, 25, + 26, 20, 21, 8, 9, 10, 11, 331, 13, 14, + 15, 16, 3, 337, 40, 4, 3, 6, 5, 4, + 25, 26, 10, 11, 110, 4, 14, 6, 16, 55, + 4, 317, 6, 3, 3, 40, 5, 4, 277, 6, + 4, 4, 6, 6, 277, 4, 332, 6, 8, 9, + 10, 11, 40, 13, 14, 15, 16, 3, 382, 19, + 20, 21, 22, 3, 109, 25, 26, 98, 99, 100, + 4, 112, 6, 104, 112, 4, 107, 6, 317, 4, + 40, 6, 29, 4, 317, 6, 325, 79, 32, 73, + 80, 3, 73, 332, 418, 55, 73, 383, 3, 332, + 42, 8, 9, 10, 11, 6, 13, 14, 15, 16, + 93, 350, 19, 20, 21, 22, 355, 350, 25, 26, + 6, 4, 355, 4, 6, 449, 5, 40, 3, 3, + 41, 3, 3, 40, 4, 113, 101, 113, 113, 4, + 4, 4, 4, 4, 383, 110, 111, 112, 113, 3, + 383, 4, 69, 48, 119, 3, 395, 34, 48, 69, + 69, 88, 4, 69, 214, 290, 214, 317, 28, 28, + 28, 204, 491, 301, 106, 161, 148, 355, 496, 399, + -1, -1, -1, -1, -1, 471, -1, -1, -1, -1, + -1, -1, 431, -1, 159, -1, -1, 162, 431, -1, + -1, -1, -1, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, -1, 190, -1, 192, -1, 194, + 195, -1, 471, 198, 199, -1, -1, -1, 471, 204, + -1, -1, 8, 9, 10, 11, -1, 13, 14, 15, + 16, -1, -1, 19, 20, 21, 22, -1, -1, 25, + 26, -1, -1, -1, -1, -1, -1, 232, -1, 234, + 8, 9, 10, 11, 40, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 55, + -1, -1, 30, -1, -1, -1, -1, 35, -1, -1, + -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, + 275, 276, -1, 278, 279, -1, 281, -1, -1, 284, + -1, -1, -1, -1, -1, 63, 291, -1, 293, 67, + -1, -1, -1, 71, 72, -1, 74, 75, -1, 77, + 78, 306, -1, 81, 309, -1, -1, 312, -1, -1, + 315, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 326, 327, -1, -1, -1, -1, -1, 333, 334, + 108, -1, -1, -1, -1, -1, -1, -1, 343, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 353, -1, + -1, 356, 3, 4, -1, 360, -1, 8, 9, 10, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 27, 28, -1, -1, - -1, 32, -1, -1, 35, 36, 37, -1, -1, 40, - -1, -1, 43, 44, 45, -1, -1, 48, -1, 50, - -1, -1, 53, -1, -1, 56, 57, 58, 59, -1, - 61, -1, 63, 64, -1, -1, 67, -1, -1, -1, - 71, 72, 73, 74, 75, -1, 77, -1, -1, 80, - 81, 82, -1, 84, 85, -1, 87, 88, 89, 90, - 91, 92, 93, -1, -1, 96, 97, -1, 99, 100, - -1, -1, -1, 104, -1, -1, 107, 108, 109, 110, - 111, 112, 113, 3, 4, -1, -1, -1, 8, 9, - -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 27, 28, -1, - -1, -1, 32, -1, -1, 35, 36, 37, -1, -1, - 40, -1, -1, 43, 44, 45, -1, -1, 48, -1, - 50, -1, -1, 53, -1, -1, 56, 57, 58, 59, - -1, 61, -1, 63, 64, -1, -1, 67, -1, -1, - -1, 71, 72, 73, 74, 75, -1, 77, -1, -1, - 80, 81, 82, -1, 84, 85, -1, 87, 88, 89, - 90, 91, 92, 93, -1, -1, 96, 97, -1, 99, - 100, -1, -1, -1, 104, -1, -1, 107, 108, 109, - 110, 111, 112, 113, 3, 4, -1, -1, -1, 8, - 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, - -1, -1, -1, 32, -1, -1, 35, 36, 37, -1, - -1, 40, -1, -1, 43, 44, 45, -1, -1, 48, - -1, 50, -1, -1, 53, -1, -1, 56, 57, 58, - 59, -1, 61, -1, 63, 64, -1, -1, 67, -1, - -1, -1, 71, 72, 73, 74, 75, -1, 77, -1, - -1, 80, 81, 82, -1, 84, 85, -1, 87, 88, - 89, 90, 91, 92, -1, -1, -1, 96, 97, -1, - 99, 100, -1, -1, -1, 104, -1, -1, 107, 108, - 109, 110, 111, 112, 113, 3, -1, -1, -1, -1, - 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, - 28, -1, -1, -1, 32, -1, -1, 35, 36, 37, - -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, - 48, -1, 50, -1, -1, 53, -1, -1, 56, 57, - 58, 59, -1, 61, -1, 63, 64, -1, -1, 67, - -1, -1, -1, 71, 72, 73, 74, 75, -1, 77, - -1, -1, 80, 81, 82, -1, 84, 85, -1, 87, - 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, - -1, 99, 100, -1, -1, -1, 104, 105, -1, 107, - 108, 109, 110, 111, 112, 113, 3, 4, -1, -1, + -1, -1, 377, 378, -1, -1, 27, 28, 29, 384, + 385, 386, 33, -1, -1, 36, 37, 38, -1, -1, + 41, -1, -1, 44, 45, 46, -1, -1, 49, -1, + 51, 52, -1, 54, -1, -1, 57, 58, 59, 60, + -1, 62, 63, -1, 65, 66, -1, -1, 69, -1, + -1, -1, 73, 74, 75, 76, 77, -1, 79, -1, + -1, 82, 83, 84, -1, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, -1, 99, 100, + -1, 102, 103, -1, -1, -1, 107, -1, -1, 110, + 111, 112, 113, 114, 115, 116, 3, 4, -1, -1, -1, 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 27, 28, -1, -1, -1, 32, -1, -1, 35, 36, - 37, -1, -1, 40, -1, -1, 43, 44, 45, -1, - -1, 48, -1, 50, -1, -1, 53, -1, -1, 56, - 57, 58, 59, -1, 61, -1, 63, 64, -1, -1, - 67, -1, -1, -1, 71, 72, 73, 74, 75, -1, - 77, -1, -1, 80, 81, 82, -1, 84, 85, -1, - 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, - 97, -1, 99, 100, -1, -1, -1, 104, -1, -1, - 107, 108, 109, 110, 111, 112, 113, 3, 4, -1, - -1, -1, 8, 9, -1, -1, 12, -1, -1, -1, + 27, 28, 29, -1, -1, -1, 33, -1, -1, 36, + 37, 38, -1, -1, 41, -1, -1, 44, 45, 46, + -1, -1, 49, -1, 51, -1, -1, 54, -1, -1, + 57, 58, 59, 60, -1, 62, 63, -1, 65, 66, + -1, -1, 69, -1, -1, -1, 73, 74, 75, 76, + 77, -1, 79, -1, -1, 82, 83, 84, -1, 86, + 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, + 97, -1, 99, 100, -1, 102, 103, -1, -1, -1, + 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, + 3, 4, -1, -1, -1, 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 27, 28, -1, -1, -1, 32, -1, -1, 35, - 36, 37, -1, -1, 40, -1, -1, 43, 44, 45, - -1, -1, 48, -1, 50, -1, -1, 53, -1, -1, - 56, 57, 58, 59, -1, 61, -1, 63, 64, -1, - -1, 67, -1, -1, -1, 71, 72, 73, 74, 75, - -1, 77, -1, -1, 80, 81, 82, -1, 84, 85, - -1, 87, 88, 89, 90, 91, 92, -1, -1, -1, - 96, 97, -1, 99, 100, -1, -1, -1, 104, -1, - -1, 107, 108, 109, 110, 111, 112, 113, 3, -1, + -1, -1, -1, -1, 27, 28, 29, -1, -1, -1, + 33, -1, -1, 36, 37, 38, -1, -1, 41, -1, + -1, 44, 45, 46, -1, -1, 49, -1, 51, -1, + -1, 54, -1, -1, 57, 58, 59, 60, -1, 62, + 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, + 73, 74, 75, 76, 77, -1, 79, -1, -1, 82, + 83, 84, -1, 86, 87, -1, 89, 90, 91, 92, + 93, 94, 95, -1, 97, -1, 99, 100, -1, 102, + 103, -1, -1, -1, 107, -1, -1, 110, 111, 112, + 113, 114, 115, 116, 3, 4, -1, -1, -1, 8, + 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, + 29, -1, -1, -1, 33, -1, -1, 36, 37, 38, + -1, -1, 41, -1, -1, 44, 45, 46, -1, -1, + 49, -1, 51, -1, -1, 54, -1, -1, 57, 58, + 59, 60, -1, 62, 63, -1, 65, 66, -1, -1, + 69, -1, -1, -1, 73, 74, 75, 76, 77, -1, + 79, -1, -1, 82, 83, 84, -1, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, -1, + 99, 100, -1, 102, 103, -1, -1, -1, 107, -1, + -1, 110, 111, 112, 113, 114, 115, 116, 3, -1, -1, -1, -1, 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 27, 28, -1, -1, -1, 32, -1, -1, - 35, 36, 37, -1, -1, 40, -1, -1, 43, 44, - 45, -1, -1, 48, -1, 50, -1, -1, 53, -1, - -1, 56, 57, 58, 59, -1, 61, -1, 63, 64, - -1, -1, 67, -1, -1, -1, 71, 72, 73, 74, - 75, -1, 77, -1, -1, 80, 81, 82, -1, 84, - 85, -1, 87, 88, 89, 90, 91, 92, -1, -1, - -1, 96, 97, -1, 99, 100, -1, -1, -1, 104, - -1, -1, 107, 108, 109, 110, 111, 112, 113, 3, - -1, -1, -1, -1, 8, 9, -1, -1, -1, -1, + -1, -1, 27, 28, 29, -1, -1, -1, 33, -1, + -1, 36, 37, 38, -1, -1, 41, -1, -1, 44, + 45, 46, -1, -1, 49, -1, 51, -1, -1, 54, + -1, -1, 57, 58, 59, 60, -1, 62, 63, -1, + 65, 66, -1, -1, 69, -1, -1, -1, 73, 74, + 75, 76, 77, -1, 79, -1, -1, 82, 83, 84, + -1, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, -1, 99, 100, -1, 102, 103, -1, + -1, -1, 107, 108, -1, 110, 111, 112, 113, 114, + 115, 116, 3, 4, -1, -1, -1, 8, 9, -1, + -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 27, 28, 29, -1, + -1, -1, 33, -1, -1, 36, 37, 38, -1, -1, + 41, -1, -1, 44, 45, 46, -1, -1, 49, -1, + 51, -1, -1, 54, -1, -1, 57, 58, 59, 60, + -1, 62, 63, -1, 65, 66, -1, -1, 69, -1, + -1, -1, 73, 74, 75, 76, 77, -1, 79, -1, + -1, 82, 83, 84, -1, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, -1, 99, 100, + -1, 102, 103, -1, -1, -1, 107, -1, -1, 110, + 111, 112, 113, 114, 115, 116, 3, 4, -1, -1, + -1, 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 27, 28, -1, -1, -1, 32, -1, - -1, 35, -1, 37, -1, -1, 40, -1, -1, 43, - 44, 45, -1, -1, 48, -1, 50, -1, -1, 53, - -1, -1, 56, 57, 58, 59, -1, 61, 62, 63, - 64, -1, -1, 67, -1, -1, -1, 71, 72, 73, - 74, -1, -1, 77, -1, -1, 80, 81, 82, -1, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 3, - -1, -1, 96, 97, -1, 99, 100, -1, -1, -1, - 104, -1, -1, 107, 108, 109, 110, 111, 112, -1, - -1, -1, -1, 27, 28, -1, -1, -1, 32, -1, - -1, 35, -1, 37, -1, -1, 40, -1, -1, 43, - 44, 45, -1, -1, 48, -1, 50, -1, -1, 53, - -1, -1, 56, -1, 58, 59, -1, 61, -1, 63, - 64, -1, -1, 67, -1, -1, -1, 71, 72, 73, - 74, -1, -1, -1, -1, -1, 80, 81, 82, -1, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 3, - -1, -1, 96, 97, -1, -1, 100, -1, -1, -1, - 104, -1, -1, 107, 108, -1, 110, 111, -1, -1, - -1, -1, -1, 27, 28, -1, -1, -1, 32, -1, - -1, 35, -1, 37, -1, -1, 40, -1, -1, 43, - 44, 45, -1, -1, 48, -1, 50, -1, -1, 53, - -1, -1, 56, -1, 58, 59, -1, 61, -1, 63, - 64, -1, -1, 67, -1, -1, -1, 71, 72, 73, - 74, -1, -1, -1, -1, -1, 80, 81, 82, -1, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 3, - -1, -1, 96, 97, -1, -1, 100, -1, -1, -1, - 104, -1, -1, 107, 108, -1, 110, 111, -1, -1, - -1, -1, -1, 27, 28, -1, -1, -1, 32, -1, - -1, 35, -1, 37, -1, -1, 40, -1, -1, 43, - 44, 45, -1, -1, 48, -1, 50, -1, -1, 53, - -1, -1, 56, -1, 58, 59, -1, 61, -1, 63, - 64, -1, -1, 67, -1, -1, -1, 71, 72, 73, - 74, -1, -1, -1, -1, -1, 80, 81, 82, -1, - 84, 85, -1, 87, 88, 89, 90, 91, 92, -1, - -1, -1, 96, 97, -1, -1, 100, -1, -1, -1, - 104, -1, -1, 107, 108, -1, 110, 111, 8, 9, - 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, - -1, -1, -1, -1, 34, 8, 9, 10, 11, 39, - 13, 14, 15, 16, -1, -1, 19, 20, 21, 22, - -1, -1, 25, 26, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, -1, 65, 39, -1, -1, 69, - 70, -1, 72, 73, -1, 75, 76, -1, -1, 79, - -1, 54, -1, -1, -1, -1, -1, 87, -1, -1, - -1, -1, -1, -1, 8, 9, 10, 11, 98, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, -1, -1, 29, -1, -1, -1, -1, - 34, 8, 9, 10, 11, 39, 13, 14, 15, 16, - -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - -1, 65, 39, -1, -1, 69, 70, -1, 72, 73, - -1, 75, 76, -1, -1, 79, -1, 54, -1, 27, - 28, -1, -1, 87, 32, -1, -1, 35, -1, 37, - -1, -1, 40, 41, 98, 43, 44, 45, -1, -1, - 48, -1, 50, -1, -1, 53, -1, -1, 56, -1, - 58, 59, -1, 61, 62, 63, 64, -1, -1, 67, - -1, -1, -1, 71, 72, 73, 74, -1, -1, -1, - -1, -1, 80, 81, 82, -1, 84, 85, -1, 87, - 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, - -1, -1, 100, -1, -1, -1, 104, -1, -1, 107, - 108, -1, 110, 111, 27, 28, -1, -1, -1, 32, - -1, -1, 35, -1, 37, -1, -1, 40, -1, -1, - 43, 44, 45, -1, -1, 48, -1, 50, -1, -1, - 53, -1, -1, 56, -1, 58, 59, -1, 61, 62, - 63, 64, -1, -1, 67, -1, -1, -1, 71, 72, - 73, 74, -1, -1, -1, -1, -1, 80, 81, 82, - -1, 84, 85, -1, 87, 88, 89, 90, 91, 92, - -1, -1, -1, 96, 97, -1, -1, 100, -1, -1, - -1, 104, -1, -1, 107, 108, -1, 110, 111, 27, - 28, -1, -1, -1, 32, -1, -1, 35, -1, 37, - -1, -1, 40, -1, -1, 43, 44, 45, -1, -1, - 48, -1, 50, -1, -1, 53, -1, -1, 56, -1, - 58, 59, -1, 61, -1, 63, 64, -1, -1, 67, - -1, -1, -1, 71, 72, 73, 74, -1, -1, -1, - -1, -1, 80, 81, 82, -1, 84, 85, -1, 87, - 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, - -1, -1, 100, -1, -1, -1, 104, -1, -1, 107, - 108, -1, 110, 111, 27, 28, -1, -1, -1, 32, - -1, -1, 35, -1, 37, -1, -1, 40, -1, -1, - 43, 44, 45, -1, -1, 48, -1, 50, -1, -1, - 53, -1, -1, 56, -1, 58, 59, -1, 61, -1, - 63, 64, -1, -1, 67, -1, -1, -1, 71, 72, - 73, 74, -1, -1, -1, -1, -1, 80, 81, 82, - -1, 84, 85, -1, 87, 88, 89, 90, 91, 92, - -1, -1, -1, 96, 97, -1, -1, 100, -1, -1, - -1, 104, -1, -1, 107, 108, 4, 110, 111, -1, - 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, -1, -1, -1, 34, 8, 9, 10, - 11, 39, 13, 14, 15, 16, -1, -1, 19, 20, - 21, 22, -1, -1, 25, 26, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, 65, 39, -1, - -1, 69, 70, -1, 72, 73, -1, 75, 76, -1, - -1, 79, -1, 54, -1, -1, 4, -1, -1, 87, - 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, -1, -1, -1, 34, 8, 9, 10, - 11, 39, 13, 14, 15, 16, -1, -1, 19, 20, - 21, 22, -1, -1, 25, 26, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, 65, 39, -1, - -1, 69, 70, -1, 72, 73, -1, 75, 76, -1, - -1, 79, -1, 54, -1, 8, 9, 10, 11, 87, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, 29, -1, -1, 32, - -1, 34, 8, 9, 10, 11, 39, 13, 14, 15, - 16, -1, -1, 19, 20, 21, 22, 50, -1, 25, - 26, -1, -1, -1, -1, -1, -1, -1, 61, -1, - -1, -1, 65, 39, -1, -1, 69, 70, -1, 72, - 73, -1, 75, 76, -1, -1, 79, -1, -1, -1, - 8, 9, 10, 11, 87, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, 31, -1, -1, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, + 27, 28, 29, -1, -1, -1, 33, -1, -1, 36, + 37, 38, -1, -1, 41, -1, -1, 44, 45, 46, + -1, -1, 49, -1, 51, -1, -1, 54, -1, -1, + 57, 58, 59, 60, -1, 62, 63, -1, 65, 66, + -1, -1, 69, -1, -1, -1, 73, 74, 75, 76, + 77, -1, 79, -1, -1, 82, 83, 84, -1, 86, + 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, + 97, -1, 99, 100, -1, 102, 103, -1, -1, -1, + 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, + 3, -1, -1, -1, -1, 8, 9, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, 65, -1, -1, - -1, 69, 70, -1, 72, 73, -1, 75, 76, -1, - -1, 79, -1, -1, -1, 8, 9, 10, 11, 87, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, 29, 30, -1, -1, - -1, 34, -1, -1, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, - -1, -1, 65, -1, -1, -1, 69, 70, -1, 72, - 73, -1, 75, 76, -1, -1, 79, -1, -1, -1, - 8, 9, 10, 11, 87, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, -1, -1, -1, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, 65, -1, -1, - -1, 69, 70, -1, 72, 73, -1, 75, 76, -1, - -1, 79, -1, -1, -1, 8, 9, 10, 11, 87, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, 29, 30, -1, -1, - -1, 34, -1, -1, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, - -1, -1, 65, -1, -1, -1, 69, 70, -1, 72, - 73, -1, 75, 76, -1, -1, 79, -1, -1, -1, - 8, 9, 10, 11, 87, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, -1, -1, -1, 34, -1, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, -1, 65, -1, -1, - -1, 69, 70, -1, 72, 73, -1, 75, 76, -1, - -1, 79, -1, -1, -1, 8, 9, 10, 11, 87, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, 29, -1, -1, -1, - -1, 34, -1, -1, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, - -1, -1, 65, -1, -1, -1, 69, 70, -1, 72, - 73, -1, 75, 76, -1, -1, 79, -1, -1, -1, - 8, 9, 10, 11, 87, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, 29, -1, -1, -1, -1, 34, -1, -1, -1, - -1, 39, 8, 9, 10, 11, -1, 13, 14, 15, + -1, -1, -1, -1, 27, 28, 29, -1, -1, -1, + 33, -1, -1, 36, 37, 38, -1, -1, 41, -1, + -1, 44, 45, 46, -1, -1, 49, -1, 51, -1, + -1, 54, -1, -1, 57, 58, 59, 60, -1, 62, + 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, + 73, 74, 75, 76, 77, -1, 79, -1, -1, 82, + 83, 84, -1, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, -1, 99, 100, -1, 102, + 103, -1, -1, -1, 107, -1, -1, 110, 111, 112, + 113, 114, 115, 116, 3, -1, -1, -1, -1, 8, + 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, + 29, -1, -1, -1, 33, -1, -1, 36, -1, 38, + -1, -1, 41, -1, -1, 44, 45, 46, -1, -1, + 49, -1, 51, -1, -1, 54, -1, -1, 57, 58, + 59, 60, -1, 62, 63, 64, 65, 66, -1, -1, + 69, -1, -1, -1, 73, 74, 75, 76, -1, -1, + 79, -1, -1, 82, 83, 84, -1, 86, 87, -1, + 89, 90, 91, 92, 93, 94, 3, -1, 97, -1, + 99, 100, -1, 102, 103, -1, -1, -1, 107, -1, + -1, 110, 111, 112, 113, 114, 115, -1, -1, -1, + 27, 28, 29, -1, -1, -1, 33, -1, -1, 36, + -1, 38, -1, -1, 41, -1, -1, 44, 45, 46, + -1, -1, 49, -1, 51, -1, -1, 54, -1, -1, + 57, -1, 59, 60, -1, 62, 63, -1, 65, 66, + -1, -1, 69, -1, -1, -1, 73, 74, 75, 76, + -1, -1, -1, -1, -1, 82, 83, 84, -1, 86, + 87, -1, 89, 90, 91, 92, 93, 94, 3, -1, + 97, -1, 99, 100, -1, -1, 103, -1, -1, -1, + 107, -1, -1, 110, 111, -1, 113, 114, -1, -1, + -1, -1, 27, 28, 29, -1, -1, -1, 33, -1, + -1, 36, -1, 38, -1, -1, 41, -1, -1, 44, + 45, 46, -1, -1, 49, -1, 51, -1, -1, 54, + -1, -1, 57, -1, 59, 60, -1, 62, 63, -1, + 65, 66, -1, -1, 69, -1, -1, -1, 73, 74, + 75, 76, -1, -1, -1, -1, -1, 82, 83, 84, + -1, 86, 87, -1, 89, 90, 91, 92, 93, 94, + 3, -1, 97, -1, 99, 100, -1, -1, 103, -1, + -1, -1, 107, -1, -1, 110, 111, -1, 113, 114, + -1, -1, -1, -1, 27, 28, 29, -1, -1, -1, + 33, -1, -1, 36, -1, 38, -1, -1, 41, -1, + -1, 44, 45, 46, -1, -1, 49, -1, 51, -1, + -1, 54, -1, -1, 57, -1, 59, 60, -1, 62, + 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, + 73, 74, 75, 76, -1, -1, -1, -1, -1, 82, + 83, 84, -1, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, -1, 99, 100, -1, -1, + 103, -1, -1, -1, 107, -1, -1, 110, 111, -1, + 113, 114, 8, 9, 10, 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, -1, -1, 61, -1, -1, -1, 65, 34, -1, - -1, 69, 70, 39, 72, 73, -1, 75, 76, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, - -1, -1, -1, -1, -1, 61, -1, -1, -1, 65, - -1, -1, -1, 69, 70, -1, 72, 73, -1, 75, - 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 87 + 26, -1, -1, -1, 30, -1, -1, -1, -1, 35, + 8, 9, 10, 11, 40, 13, 14, 15, 16, -1, + -1, 19, 20, 21, 22, -1, -1, 25, 26, -1, + -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, + -1, 67, 40, -1, -1, 71, 72, -1, 74, 75, + -1, 77, 78, -1, -1, 81, -1, 55, -1, -1, + -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, + -1, 8, 9, 10, 11, 101, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, -1, -1, 30, -1, -1, -1, -1, 35, 8, + 9, 10, 11, 40, 13, 14, 15, 16, -1, -1, + 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, + -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, + 67, 40, -1, -1, 71, 72, -1, 74, 75, -1, + 77, 78, -1, -1, 81, -1, 55, -1, 27, 28, + 29, -1, 89, -1, 33, -1, -1, 36, -1, 38, + -1, -1, 41, 42, 101, 44, 45, 46, -1, -1, + 49, -1, 51, -1, -1, 54, -1, -1, 57, -1, + 59, 60, -1, 62, 63, 64, 65, 66, -1, -1, + 69, -1, -1, -1, 73, 74, 75, 76, -1, -1, + -1, -1, -1, 82, 83, 84, -1, 86, 87, -1, + 89, 90, 91, 92, 93, 94, -1, -1, 97, -1, + 99, 100, -1, -1, 103, -1, -1, -1, 107, -1, + -1, 110, 111, -1, 113, 114, 27, 28, 29, -1, + -1, -1, 33, -1, -1, 36, -1, 38, -1, -1, + 41, -1, -1, 44, 45, 46, -1, -1, 49, -1, + 51, -1, -1, 54, -1, -1, 57, -1, 59, 60, + -1, 62, 63, 64, 65, 66, -1, -1, 69, -1, + -1, -1, 73, 74, 75, 76, -1, -1, -1, -1, + -1, 82, 83, 84, -1, 86, 87, -1, 89, 90, + 91, 92, 93, 94, -1, -1, 97, -1, 99, 100, + -1, -1, 103, -1, -1, -1, 107, -1, -1, 110, + 111, -1, 113, 114, 27, 28, 29, -1, -1, -1, + 33, -1, -1, 36, -1, 38, -1, -1, 41, -1, + -1, 44, 45, 46, -1, -1, 49, -1, 51, -1, + -1, 54, -1, -1, 57, -1, 59, 60, -1, 62, + 63, -1, 65, 66, -1, -1, 69, -1, -1, -1, + 73, 74, 75, 76, -1, -1, -1, -1, -1, 82, + 83, 84, -1, 86, 87, -1, 89, 90, 91, 92, + 93, 94, -1, -1, 97, -1, 99, 100, -1, -1, + 103, -1, -1, -1, 107, -1, -1, 110, 111, -1, + 113, 114, 27, 28, 29, -1, -1, -1, 33, -1, + -1, 36, -1, 38, -1, -1, 41, -1, -1, 44, + 45, 46, -1, -1, 49, -1, 51, -1, -1, 54, + -1, -1, 57, -1, 59, 60, -1, 62, 63, -1, + 65, 66, -1, -1, 69, -1, -1, -1, 73, 74, + 75, 76, -1, -1, -1, -1, -1, 82, 83, 84, + -1, 86, 87, -1, 89, 90, 91, 92, 93, 94, + -1, -1, 97, -1, 99, 100, -1, -1, 103, -1, + -1, -1, 107, -1, -1, 110, 111, 4, 113, 114, + -1, 8, 9, 10, 11, -1, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, -1, -1, 30, -1, -1, -1, -1, 35, 8, + 9, 10, 11, 40, 13, 14, 15, 16, -1, -1, + 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, + -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, + 67, 40, -1, -1, 71, 72, -1, 74, 75, -1, + 77, 78, -1, -1, 81, -1, 55, -1, -1, 4, + -1, -1, 89, 8, 9, 10, 11, -1, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, + 35, 8, 9, 10, 11, 40, 13, 14, 15, 16, + -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, + -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, + -1, -1, 67, 40, -1, -1, 71, 72, -1, 74, + 75, -1, 77, 78, -1, -1, 81, -1, 55, -1, + -1, 4, -1, -1, 89, 8, 9, 10, 11, -1, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, -1, -1, + -1, -1, 35, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 63, -1, -1, -1, 67, -1, -1, -1, 71, 72, + -1, 74, 75, -1, 77, 78, -1, -1, 81, -1, + -1, -1, -1, 4, -1, -1, 89, 8, 9, 10, + 11, -1, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, + -1, -1, -1, -1, 35, -1, -1, -1, -1, 40, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 63, -1, -1, -1, 67, -1, -1, -1, + 71, 72, -1, 74, 75, -1, 77, 78, -1, -1, + 81, -1, -1, -1, 8, 9, 10, 11, 89, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, -1, -1, -1, 30, -1, -1, 33, + -1, 35, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, + -1, -1, -1, 67, -1, -1, -1, 71, 72, -1, + 74, 75, -1, 77, 78, -1, -1, 81, -1, -1, + -1, 8, 9, 10, 11, 89, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, -1, -1, 30, -1, 32, -1, -1, 35, -1, + -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, + 67, -1, -1, -1, 71, 72, -1, 74, 75, -1, + 77, 78, -1, -1, 81, -1, -1, -1, 8, 9, + 10, 11, 89, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, + 30, 31, -1, -1, -1, 35, -1, -1, -1, -1, + 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 63, -1, -1, -1, 67, -1, -1, + -1, 71, 72, -1, 74, 75, -1, 77, 78, -1, + -1, 81, -1, -1, -1, 8, 9, 10, 11, 89, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, -1, -1, + -1, -1, 35, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, + 63, -1, -1, -1, 67, -1, -1, -1, 71, 72, + -1, 74, 75, -1, 77, 78, -1, -1, 81, -1, + -1, -1, 8, 9, 10, 11, 89, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, -1, -1, -1, 30, 31, -1, -1, -1, 35, + -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, + -1, 67, -1, -1, -1, 71, 72, -1, 74, 75, + -1, 77, 78, -1, -1, 81, -1, -1, -1, 8, + 9, 10, 11, 89, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, + -1, 30, -1, -1, -1, -1, 35, -1, -1, -1, + -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, + -1, -1, -1, -1, 63, -1, -1, -1, 67, -1, + -1, -1, 71, 72, -1, 74, 75, -1, 77, 78, + -1, -1, 81, -1, -1, -1, 8, 9, 10, 11, + 89, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, -1, -1, -1, 30, -1, + -1, -1, -1, 35, -1, -1, -1, -1, 40, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 63, -1, -1, -1, 67, -1, -1, -1, 71, + 72, -1, 74, 75, -1, 77, 78, -1, -1, 81, + -1, -1, -1, 8, 9, 10, 11, 89, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, + 35, -1, -1, -1, -1, 40, 8, 9, 10, 11, + -1, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, -1, -1, -1, 63, -1, + -1, -1, 67, 35, -1, -1, 71, 72, 40, 74, + 75, -1, 77, 78, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 89, -1, -1, -1, -1, -1, + -1, 63, -1, -1, -1, 67, -1, -1, -1, 71, + 72, -1, 74, 75, -1, 77, 78, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 89 }; const unsigned char parser::yystos_[] = { - 0, 42, 115, 116, 146, 148, 166, 96, 97, 101, - 104, 141, 149, 0, 7, 95, 66, 95, 62, 139, - 139, 139, 75, 27, 28, 32, 35, 37, 40, 43, - 44, 45, 48, 50, 53, 56, 58, 59, 61, 63, - 64, 67, 71, 72, 73, 74, 80, 81, 82, 84, - 85, 87, 88, 89, 90, 91, 92, 96, 97, 100, - 104, 107, 108, 110, 111, 118, 119, 120, 143, 143, - 143, 55, 5, 5, 103, 78, 3, 31, 96, 118, - 120, 120, 118, 120, 43, 44, 45, 62, 110, 118, - 119, 121, 155, 156, 93, 138, 3, 147, 3, 120, - 124, 125, 152, 6, 165, 3, 4, 8, 9, 12, - 36, 37, 43, 44, 45, 57, 75, 77, 84, 99, - 109, 110, 112, 113, 117, 118, 119, 126, 127, 128, - 129, 130, 131, 132, 133, 135, 136, 137, 137, 144, - 145, 3, 120, 41, 153, 154, 157, 155, 157, 163, - 164, 4, 129, 137, 137, 137, 105, 134, 137, 3, - 137, 3, 3, 5, 4, 6, 8, 9, 10, 11, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 29, 34, 39, 61, 65, 69, - 70, 72, 73, 75, 76, 79, 87, 32, 50, 140, - 4, 6, 8, 9, 109, 122, 123, 118, 153, 38, - 39, 46, 75, 77, 83, 86, 101, 38, 60, 83, - 101, 6, 163, 107, 150, 4, 137, 52, 53, 105, - 134, 137, 27, 56, 63, 90, 4, 10, 51, 129, - 118, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 118, 137, 3, 118, 120, 137, 137, 137, - 34, 61, 65, 72, 73, 77, 87, 137, 137, 106, - 142, 144, 109, 109, 4, 6, 3, 118, 3, 62, - 117, 118, 119, 122, 77, 71, 120, 78, 151, 3, - 71, 71, 3, 163, 91, 98, 137, 137, 52, 53, - 31, 6, 6, 4, 6, 4, 129, 4, 5, 30, - 54, 4, 129, 138, 3, 5, 54, 54, 137, 137, - 3, 118, 120, 137, 137, 137, 54, 137, 123, 137, - 137, 151, 140, 3, 159, 40, 137, 3, 3, 145, - 137, 53, 98, 137, 125, 110, 110, 110, 4, 118, - 137, 137, 4, 4, 129, 118, 120, 137, 137, 30, - 54, 4, 129, 138, 3, 5, 54, 54, 54, 137, - 4, 4, 4, 151, 121, 158, 47, 73, 75, 78, - 160, 161, 162, 27, 56, 63, 88, 90, 4, 158, - 145, 4, 137, 53, 4, 4, 4, 4, 4, 3, - 137, 137, 4, 4, 129, 118, 120, 137, 137, 137, - 33, 4, 6, 67, 118, 47, 49, 68, 102, 47, - 75, 160, 4, 4, 33, 151, 4, 129, 4, 3, - 121, 48, 64, 67, 35, 74, 89, 94, 35, 74, - 89, 94, 35, 74, 89, 94, 67, 47, 86, 151, - 4, 4, 4, 129, 48, 64, 28, 46, 77, 28, - 46, 77, 28, 46, 77, 48, 64, 67, 120, 151, - 4, 48, 64, 159, 162 + 0, 43, 118, 119, 149, 151, 171, 99, 100, 104, + 107, 144, 152, 0, 7, 98, 68, 98, 64, 142, + 142, 142, 77, 27, 28, 29, 33, 36, 38, 41, + 44, 45, 46, 49, 51, 54, 57, 59, 60, 62, + 63, 65, 66, 69, 73, 74, 75, 76, 82, 83, + 84, 86, 87, 89, 90, 91, 92, 93, 94, 97, + 99, 100, 103, 107, 110, 111, 113, 114, 121, 122, + 123, 146, 146, 146, 56, 5, 5, 106, 80, 3, + 32, 99, 121, 123, 123, 121, 123, 44, 45, 46, + 64, 113, 121, 122, 124, 160, 161, 95, 141, 3, + 150, 3, 123, 127, 128, 155, 6, 170, 3, 4, + 8, 9, 12, 37, 38, 44, 45, 46, 58, 77, + 79, 86, 102, 112, 113, 115, 116, 120, 121, 122, + 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, + 140, 140, 147, 148, 3, 123, 42, 158, 159, 162, + 160, 162, 168, 169, 4, 132, 140, 140, 140, 108, + 137, 140, 3, 140, 3, 3, 5, 4, 6, 8, + 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 30, 35, 40, + 63, 67, 71, 72, 74, 75, 77, 78, 81, 89, + 33, 51, 143, 4, 6, 8, 9, 112, 125, 126, + 121, 158, 39, 40, 47, 62, 77, 79, 85, 88, + 104, 157, 39, 61, 85, 104, 6, 168, 110, 153, + 4, 140, 53, 54, 108, 137, 140, 27, 57, 65, + 92, 4, 10, 52, 132, 121, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 121, 140, 3, + 121, 123, 140, 140, 140, 35, 63, 67, 74, 75, + 79, 89, 140, 140, 109, 145, 147, 112, 112, 4, + 6, 3, 121, 3, 64, 120, 121, 122, 125, 29, + 79, 73, 123, 80, 154, 32, 3, 73, 73, 3, + 168, 93, 101, 140, 140, 53, 54, 32, 6, 6, + 4, 6, 4, 132, 4, 5, 31, 55, 4, 132, + 141, 3, 5, 55, 55, 140, 140, 3, 121, 123, + 140, 140, 140, 55, 140, 126, 140, 140, 154, 143, + 3, 164, 41, 3, 140, 3, 3, 148, 140, 54, + 101, 140, 128, 113, 113, 113, 4, 121, 140, 140, + 4, 4, 132, 121, 123, 140, 140, 31, 55, 4, + 132, 141, 3, 5, 55, 55, 55, 140, 4, 4, + 4, 154, 124, 163, 48, 75, 77, 80, 165, 166, + 167, 27, 57, 65, 90, 92, 140, 4, 163, 148, + 4, 140, 54, 4, 4, 4, 4, 4, 3, 140, + 140, 4, 4, 132, 121, 123, 140, 140, 140, 34, + 4, 6, 69, 121, 48, 50, 70, 105, 48, 77, + 165, 4, 4, 4, 34, 154, 4, 132, 4, 3, + 124, 49, 66, 69, 36, 76, 91, 96, 36, 76, + 91, 96, 36, 76, 91, 96, 69, 48, 97, 107, + 156, 88, 154, 4, 4, 4, 132, 49, 66, 28, + 47, 79, 28, 47, 79, 28, 47, 79, 49, 66, + 69, 123, 154, 4, 49, 66, 164, 167 }; const unsigned char parser::yyr1_[] = { - 0, 114, 115, 115, 116, 116, 116, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 118, 118, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, - 121, 121, 121, 121, 121, 121, 121, 122, 122, 123, - 123, 124, 124, 125, 125, 125, 126, 126, 126, 126, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 129, 129, 130, - 130, 130, 130, 131, 131, 131, 132, 132, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 134, 134, 135, 135, 135, 135, - 136, 136, 136, 136, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 138, 139, 139, 140, 140, 140, 141, 141, - 142, 142, 143, 143, 143, 144, 145, 145, 146, 147, - 147, 147, 148, 149, 149, 149, 150, 150, 151, 151, - 151, 151, 151, 151, 152, 152, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 154, 154, 155, 155, 156, 156, 157, 157, 158, 158, - 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 161, 161, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 163, 163, 163, 163, 163, 164, - 164, 164, 165, 165, 166, 166 + 0, 117, 118, 118, 119, 119, 119, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 121, 121, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 123, 123, 123, + 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, + 125, 125, 126, 126, 127, 127, 128, 128, 128, 129, + 129, 129, 129, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 131, 131, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 132, 132, 133, 133, 133, 133, 134, 134, 134, 135, + 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 137, 137, 138, + 138, 138, 138, 139, 139, 139, 139, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 141, 142, 142, 143, 143, + 143, 144, 144, 145, 145, 146, 146, 146, 147, 148, + 148, 149, 150, 150, 150, 151, 152, 152, 152, 153, + 153, 154, 154, 154, 154, 154, 154, 155, 155, 156, + 156, 156, 157, 157, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, + 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, + 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 166, 166, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 168, 168, 168, 168, 168, 169, 169, + 169, 170, 170, 171, 171 }; - const unsigned char + const signed char parser::yyr2_[] = { 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, @@ -4238,28 +4573,29 @@ namespace sqlb { namespace parser { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 1, 2, 1, 4, 6, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 2, 1, 4, 6, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, - 5, 5, 5, 6, 6, 6, 6, 1, 3, 4, - 5, 3, 4, 2, 2, 3, 5, 6, 4, 5, - 5, 5, 3, 7, 8, 6, 5, 6, 6, 6, - 4, 8, 9, 7, 4, 5, 6, 4, 5, 3, - 4, 6, 6, 6, 1, 1, 1, 5, 3, 1, - 1, 1, 1, 3, 6, 3, 1, 1, 1, 1, - 1, 1, 1, 0, 3, 0, 1, 1, 0, 1, - 0, 2, 3, 3, 1, 2, 1, 3, 11, 0, - 2, 3, 8, 0, 1, 1, 0, 2, 0, 3, - 3, 3, 3, 3, 0, 1, 5, 6, 4, 2, - 3, 5, 3, 3, 3, 3, 3, 5, 3, 5, - 1, 2, 3, 2, 1, 3, 0, 2, 1, 3, - 0, 3, 4, 4, 3, 3, 4, 4, 4, 3, - 3, 4, 4, 4, 3, 3, 4, 2, 1, 2, - 0, 1, 4, 4, 2, 5, 5, 3, 3, 3, - 1, 4, 4, 2, 7, 8, 6, 5, 10, 1, - 3, 2, 0, 2, 7, 10 + 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, + 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, + 1, 3, 4, 5, 3, 4, 2, 2, 3, 5, + 6, 4, 5, 5, 5, 3, 7, 8, 6, 5, + 6, 6, 6, 4, 8, 9, 7, 4, 5, 6, + 4, 5, 3, 4, 6, 6, 6, 1, 1, 1, + 5, 3, 1, 1, 1, 1, 3, 6, 3, 1, + 1, 1, 1, 1, 1, 1, 0, 3, 0, 1, + 1, 0, 1, 0, 2, 3, 3, 1, 2, 1, + 3, 11, 0, 2, 3, 8, 0, 1, 1, 0, + 2, 0, 3, 3, 3, 3, 3, 0, 1, 0, + 1, 1, 0, 2, 5, 6, 4, 2, 3, 5, + 3, 3, 3, 3, 3, 5, 3, 5, 7, 1, + 2, 3, 2, 1, 3, 0, 2, 1, 3, 0, + 3, 4, 4, 3, 3, 4, 4, 4, 3, 3, + 4, 4, 4, 3, 3, 4, 2, 1, 2, 0, + 1, 4, 4, 2, 5, 5, 3, 3, 3, 1, + 4, 4, 2, 7, 8, 6, 5, 10, 1, 3, + 2, 0, 2, 7, 10 }; @@ -4273,37 +4609,38 @@ namespace sqlb { namespace parser { "\",\"", "\";\"", "\"+\"", "\"-\"", "\"*\"", "\"/\"", "\"~\"", "\"&\"", "\"%\"", "\"|\"", "\"||\"", "\"=\"", "\"==\"", "\">\"", "\">=\"", "\"<\"", "\"<=\"", "\"!=\"", "\"<>\"", "\"<<\"", "\">>\"", "\"ABORT\"", - "\"ACTION\"", "\"AND\"", "\"AND BETWEEN\"", "\"AS\"", "\"ASC\"", - "\"AUTOINCREMENT\"", "\"BETWEEN\"", "\"CASCADE\"", "\"CASE\"", + "\"ACTION\"", "\"ALWAYS\"", "\"AND\"", "\"AND BETWEEN\"", "\"AS\"", + "\"ASC\"", "\"AUTOINCREMENT\"", "\"BETWEEN\"", "\"CASCADE\"", "\"CASE\"", "\"CAST\"", "\"CHECK\"", "\"COLLATE\"", "\"CONFLICT\"", "\"CONSTRAINT\"", "\"CREATE\"", "\"CURRENT_DATE\"", "\"CURRENT_TIME\"", "\"CURRENT_TIMESTAMP\"", "\"DEFAULT\"", "\"DEFERRABLE\"", "\"DEFERRED\"", "\"DELETE\"", "\"DESC\"", "\"DISTINCT\"", "\"ELSE\"", "\"END\"", "\"ESCAPE\"", "\"EXISTS\"", "\"FAIL\"", "\"FALSE\"", "\"FILTER\"", - "\"FOLLOWING\"", "\"FOREIGN\"", "\"GLOB\"", "\"IF\"", "\"IGNORE\"", - "\"IMMEDIATE\"", "\"IN\"", "\"INDEX\"", "\"INITIALLY\"", "\"INSERT\"", - "\"IS\"", "\"ISNULL\"", "\"KEY\"", "\"LIKE\"", "\"MATCH\"", "\"NO\"", - "\"NOT\"", "\"NOTNULL\"", "\"NULL\"", "\"ON\"", "\"OR\"", "\"OVER\"", - "\"PARTITION\"", "\"PRECEDING\"", "\"PRIMARY\"", "\"RAISE\"", + "\"FOLLOWING\"", "\"FOREIGN\"", "\"GENERATED\"", "\"GLOB\"", "\"IF\"", + "\"IGNORE\"", "\"IMMEDIATE\"", "\"IN\"", "\"INDEX\"", "\"INITIALLY\"", + "\"INSERT\"", "\"IS\"", "\"ISNULL\"", "\"KEY\"", "\"LIKE\"", "\"MATCH\"", + "\"NO\"", "\"NOT\"", "\"NOTNULL\"", "\"NULL\"", "\"ON\"", "\"OR\"", + "\"OVER\"", "\"PARTITION\"", "\"PRECEDING\"", "\"PRIMARY\"", "\"RAISE\"", "\"RANGE\"", "\"REFERENCES\"", "\"REGEXP\"", "\"REPLACE\"", "\"RESTRICT\"", "\"ROLLBACK\"", "\"ROWID\"", "\"ROWS\"", "\"SELECT\"", - "\"SET\"", "\"TABLE\"", "\"TEMP\"", "\"TEMPORARY\"", "\"THEN\"", - "\"TRUE\"", "\"UNBOUNDED\"", "\"UNIQUE\"", "\"UPDATE\"", "\"USING\"", - "\"VIRTUAL\"", "\"WHEN\"", "\"WHERE\"", "\"WITHOUT\"", "\"identifier\"", - "\"numeric\"", "\"string literal\"", "\"quoted literal\"", - "\"blob literal\"", "\"bind parameter\"", "$accept", "sql", "statement", - "literalvalue", "id", "allowed_keywords_as_identifier", "tableid", - "columnid", "signednumber", "signednumber_or_numeric", - "typename_namelist", "type_name", "unary_expr", "binary_expr", - "like_expr", "exprlist_expr", "function_expr", "isnull_expr", - "between_expr", "in_expr", "whenthenlist_expr", "case_expr", - "raise_expr", "expr", "select_stmt", "optional_if_not_exists", - "optional_sort_order", "optional_unique", "optional_where", - "tableid_with_uninteresting_schema", "indexed_column", + "\"SET\"", "\"STORED\"", "\"TABLE\"", "\"TEMP\"", "\"TEMPORARY\"", + "\"THEN\"", "\"TRUE\"", "\"UNBOUNDED\"", "\"UNIQUE\"", "\"UPDATE\"", + "\"USING\"", "\"VIRTUAL\"", "\"WHEN\"", "\"WHERE\"", "\"WITHOUT\"", + "\"identifier\"", "\"numeric\"", "\"string literal\"", + "\"quoted literal\"", "\"blob literal\"", "\"bind parameter\"", + "$accept", "sql", "statement", "literalvalue", "id", + "allowed_keywords_as_identifier", "tableid", "columnid", "signednumber", + "signednumber_or_numeric", "typename_namelist", "type_name", + "unary_expr", "binary_expr", "like_expr", "exprlist_expr", + "function_expr", "isnull_expr", "between_expr", "in_expr", + "whenthenlist_expr", "case_expr", "raise_expr", "expr", "select_stmt", + "optional_if_not_exists", "optional_sort_order", "optional_unique", + "optional_where", "tableid_with_uninteresting_schema", "indexed_column", "indexed_column_list", "createindex_stmt", "optional_exprlist_with_paren", "createvirtualtable_stmt", "optional_temporary", "optional_withoutrowid", "optional_conflictclause", - "optional_typename", "columnconstraint", "columnconstraint_list", + "optional_typename", "optional_storage_identifier", + "optional_always_generated", "columnconstraint", "columnconstraint_list", "columndef", "columndef_list", "optional_constraintname", "columnid_list", "optional_columnid_with_paren_list", "fk_clause_part", "fk_clause_part_list", "optional_fk_clause", "tableconstraint", @@ -4312,37 +4649,38 @@ namespace sqlb { namespace parser { }; #if YYDEBUG - const unsigned short + const short parser::yyrline_[] = { - 0, 301, 301, 302, 306, 307, 308, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 328, 329, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 373, 374, 375, 376, 377, 378, - 382, 383, 384, 385, 386, 387, 388, 392, 393, 397, - 398, 402, 403, 407, 408, 409, 413, 414, 415, 416, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 463, 464, 468, - 469, 470, 471, 475, 476, 477, 481, 482, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 505, 506, 510, 511, 512, 513, - 517, 518, 519, 520, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 550, 558, 559, 563, 564, 565, 573, 574, - 578, 579, 583, 584, 585, 589, 603, 604, 608, 623, - 624, 625, 629, 641, 642, 643, 647, 648, 652, 653, - 654, 655, 656, 657, 661, 662, 666, 675, 685, 690, - 695, 700, 706, 712, 718, 724, 731, 737, 743, 749, - 763, 764, 768, 806, 810, 811, 815, 816, 820, 821, - 825, 826, 830, 831, 832, 833, 834, 835, 836, 837, - 838, 839, 840, 841, 842, 843, 844, 845, 849, 850, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 865, 866, 867, 871, 877, 884, 890, 894, 902, - 903, 904, 908, 909, 913, 917 + 0, 309, 309, 310, 314, 315, 316, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 336, 337, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 384, 385, 386, + 387, 388, 389, 393, 394, 395, 396, 397, 398, 399, + 403, 404, 408, 409, 413, 414, 418, 419, 420, 424, + 425, 426, 427, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 474, 475, 479, 480, 481, 482, 486, 487, 488, 492, + 493, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 516, 517, 521, + 522, 523, 524, 528, 529, 530, 531, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 561, 569, 570, 574, 575, + 576, 584, 585, 589, 590, 594, 595, 596, 600, 614, + 615, 619, 634, 635, 636, 640, 652, 653, 654, 658, + 659, 663, 664, 665, 666, 667, 668, 672, 673, 677, + 678, 679, 683, 684, 688, 697, 707, 712, 717, 722, + 728, 734, 740, 746, 753, 759, 765, 771, 782, 793, + 794, 798, 850, 854, 855, 859, 860, 864, 865, 869, + 870, 874, 875, 876, 877, 878, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 893, 894, 898, + 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, + 909, 910, 911, 915, 921, 928, 934, 938, 946, 947, + 948, 952, 953, 957, 961 }; // Print the state stack on the debug stream. @@ -4354,7 +4692,7 @@ namespace sqlb { namespace parser { i = yystack_.begin (), i_end = yystack_.end (); i != i_end; ++i) - *yycdebug_ << ' ' << i->state; + *yycdebug_ << ' ' << int (i->state); *yycdebug_ << '\n'; } @@ -4362,7 +4700,7 @@ namespace sqlb { namespace parser { void parser::yy_reduce_print_ (int yyrule) { - unsigned yylno = yyrline_[yyrule]; + int yylno = yyrline_[yyrule]; int yynrhs = yyr2_[yyrule]; // Print the symbols being reduced, and their result. *yycdebug_ << "Reducing stack by rule " << yyrule - 1 @@ -4377,9 +4715,9 @@ namespace sqlb { namespace parser { #line 10 "sqlite3_parser.yy" } } // sqlb::parser -#line 4381 "sqlite3_parser.cpp" +#line 4719 "sqlite3_parser.cpp" -#line 939 "sqlite3_parser.yy" +#line 983 "sqlite3_parser.yy" void sqlb::parser::parser::error(const location_type& l, const std::string& m) diff --git a/src/sql/parser/sqlite3_parser.hpp b/src/sql/parser/sqlite3_parser.hpp index 6e13d018..db3f6908 100644 --- a/src/sql/parser/sqlite3_parser.hpp +++ b/src/sql/parser/sqlite3_parser.hpp @@ -1,8 +1,8 @@ -// A Bison parser, made by GNU Bison 3.4.1. +// A Bison parser, made by GNU Bison 3.5.1. // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ #ifndef YY_YY_SQLITE3_PARSER_HPP_INCLUDED # define YY_YY_SQLITE3_PARSER_HPP_INCLUDED -// // "%code requires" blocks. +// "%code requires" blocks. #line 12 "sqlite3_parser.yy" #include @@ -75,6 +75,7 @@ if(is_table_constraint) table_constraint = other.table_constraint; text = other.text; + generated_constraint = other.generated_constraint; return *this; } @@ -94,6 +95,7 @@ Default, Collate, ForeignKey, + Generated, }; ConstraintType type; @@ -102,13 +104,14 @@ sqlb::ConstraintPtr table_constraint; std::string text; + sqlb::GeneratedColumnConstraint generated_constraint; }; using ColumnConstraintInfoVector = std::vector; // Colum definitions are a tuple of three elements: the Field object, a set of table constraints, and a bool to indicate whether parsing was complete using ColumndefData = std::tuple; -#line 112 "sqlite3_parser.hpp" +#line 115 "sqlite3_parser.hpp" # include # include // std::abort @@ -155,28 +158,26 @@ #endif # include "sqlite3_location.h" #include -#ifndef YYASSERT +#ifndef YY_ASSERT # include -# define YYASSERT assert +# define YY_ASSERT assert #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -188,11 +189,11 @@ #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -205,6 +206,27 @@ # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -224,7 +246,7 @@ #line 10 "sqlite3_parser.yy" namespace sqlb { namespace parser { -#line 228 "sqlite3_parser.hpp" +#line 250 "sqlite3_parser.hpp" @@ -256,14 +278,14 @@ namespace sqlb { namespace parser { semantic_type (YY_RVREF (T) t) : yytypeid_ (&typeid (T)) { - YYASSERT (sizeof (T) <= size); + YY_ASSERT (sizeof (T) <= size); new (yyas_ ()) T (YY_MOVE (t)); } /// Destruction, allowed only if empty. ~semantic_type () YY_NOEXCEPT { - YYASSERT (!yytypeid_); + YY_ASSERT (!yytypeid_); } # if 201103L <= YY_CPLUSPLUS @@ -272,8 +294,8 @@ namespace sqlb { namespace parser { T& emplace (U&&... u) { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YY_ASSERT (!yytypeid_); + YY_ASSERT (sizeof (T) <= size); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (std::forward (u)...); } @@ -283,8 +305,8 @@ namespace sqlb { namespace parser { T& emplace () { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YY_ASSERT (!yytypeid_); + YY_ASSERT (sizeof (T) <= size); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (); } @@ -294,8 +316,8 @@ namespace sqlb { namespace parser { T& emplace (const T& t) { - YYASSERT (!yytypeid_); - YYASSERT (sizeof (T) <= size); + YY_ASSERT (!yytypeid_); + YY_ASSERT (sizeof (T) <= size); yytypeid_ = & typeid (T); return *new (yyas_ ()) T (t); } @@ -324,9 +346,9 @@ namespace sqlb { namespace parser { T& as () YY_NOEXCEPT { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YY_ASSERT (yytypeid_); + YY_ASSERT (*yytypeid_ == typeid (T)); + YY_ASSERT (sizeof (T) <= size); return *yyas_ (); } @@ -335,9 +357,9 @@ namespace sqlb { namespace parser { const T& as () const YY_NOEXCEPT { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == typeid (T)); - YYASSERT (sizeof (T) <= size); + YY_ASSERT (yytypeid_); + YY_ASSERT (*yytypeid_ == typeid (T)); + YY_ASSERT (sizeof (T) <= size); return *yyas_ (); } @@ -353,8 +375,8 @@ namespace sqlb { namespace parser { void swap (self_type& that) YY_NOEXCEPT { - YYASSERT (yytypeid_); - YYASSERT (*yytypeid_ == *that.yytypeid_); + YY_ASSERT (yytypeid_); + YY_ASSERT (*yytypeid_ == *that.yytypeid_); std::swap (as (), that.as ()); } @@ -441,6 +463,7 @@ namespace sqlb { namespace parser { // optional_unique // optional_temporary // optional_withoutrowid + // optional_always_generated char dummy4[sizeof (bool)]; // tableconstraint @@ -469,6 +492,7 @@ namespace sqlb { namespace parser { // "ABORT" // "ACTION" + // "ALWAYS" // "AND" // "AND BETWEEN" // "AS" @@ -501,6 +525,7 @@ namespace sqlb { namespace parser { // "FILTER" // "FOLLOWING" // "FOREIGN" + // "GENERATED" // "GLOB" // "IF" // "IGNORE" @@ -535,6 +560,7 @@ namespace sqlb { namespace parser { // "ROWS" // "SELECT" // "SET" + // "STORED" // "TABLE" // "TEMP" // "TEMPORARY" @@ -582,6 +608,7 @@ namespace sqlb { namespace parser { // optional_exprlist_with_paren // optional_conflictclause // optional_typename + // optional_storage_identifier // optional_constraintname // fk_clause_part // fk_clause_part_list @@ -664,91 +691,94 @@ namespace sqlb { namespace parser { TOK_BITWISERIGHT = 281, TOK_ABORT = 282, TOK_ACTION = 283, - TOK_AND = 284, - TOK_AND_BETWEEN = 285, - TOK_AS = 286, - TOK_ASC = 287, - TOK_AUTOINCREMENT = 288, - TOK_BETWEEN = 289, - TOK_CASCADE = 290, - TOK_CASE = 291, - TOK_CAST = 292, - TOK_CHECK = 293, - TOK_COLLATE = 294, - TOK_CONFLICT = 295, - TOK_CONSTRAINT = 296, - TOK_CREATE = 297, - TOK_CURRENT_DATE = 298, - TOK_CURRENT_TIME = 299, - TOK_CURRENT_TIMESTAMP = 300, - TOK_DEFAULT = 301, - TOK_DEFERRABLE = 302, - TOK_DEFERRED = 303, - TOK_DELETE = 304, - TOK_DESC = 305, - TOK_DISTINCT = 306, - TOK_ELSE = 307, - TOK_END = 308, - TOK_ESCAPE = 309, - TOK_EXISTS = 310, - TOK_FAIL = 311, - TOK_FALSE = 312, - TOK_FILTER = 313, - TOK_FOLLOWING = 314, - TOK_FOREIGN = 315, - TOK_GLOB = 316, - TOK_IF = 317, - TOK_IGNORE = 318, - TOK_IMMEDIATE = 319, - TOK_IN = 320, - TOK_INDEX = 321, - TOK_INITIALLY = 322, - TOK_INSERT = 323, - TOK_IS = 324, - TOK_ISNULL = 325, - TOK_KEY = 326, - TOK_LIKE = 327, - TOK_MATCH = 328, - TOK_NO = 329, - TOK_NOT = 330, - TOK_NOTNULL = 331, - TOK_NULL = 332, - TOK_ON = 333, - TOK_OR = 334, - TOK_OVER = 335, - TOK_PARTITION = 336, - TOK_PRECEDING = 337, - TOK_PRIMARY = 338, - TOK_RAISE = 339, - TOK_RANGE = 340, - TOK_REFERENCES = 341, - TOK_REGEXP = 342, - TOK_REPLACE = 343, - TOK_RESTRICT = 344, - TOK_ROLLBACK = 345, - TOK_ROWID = 346, - TOK_ROWS = 347, - TOK_SELECT = 348, - TOK_SET = 349, - TOK_TABLE = 350, - TOK_TEMP = 351, - TOK_TEMPORARY = 352, - TOK_THEN = 353, - TOK_TRUE = 354, - TOK_UNBOUNDED = 355, - TOK_UNIQUE = 356, - TOK_UPDATE = 357, - TOK_USING = 358, - TOK_VIRTUAL = 359, - TOK_WHEN = 360, - TOK_WHERE = 361, - TOK_WITHOUT = 362, - TOK_IDENTIFIER = 363, - TOK_NUMERIC = 364, - TOK_STRINGLITERAL = 365, - TOK_QUOTEDLITERAL = 366, - TOK_BLOBLITERAL = 367, - TOK_BINDPARAMETER = 368 + TOK_ALWAYS = 284, + TOK_AND = 285, + TOK_AND_BETWEEN = 286, + TOK_AS = 287, + TOK_ASC = 288, + TOK_AUTOINCREMENT = 289, + TOK_BETWEEN = 290, + TOK_CASCADE = 291, + TOK_CASE = 292, + TOK_CAST = 293, + TOK_CHECK = 294, + TOK_COLLATE = 295, + TOK_CONFLICT = 296, + TOK_CONSTRAINT = 297, + TOK_CREATE = 298, + TOK_CURRENT_DATE = 299, + TOK_CURRENT_TIME = 300, + TOK_CURRENT_TIMESTAMP = 301, + TOK_DEFAULT = 302, + TOK_DEFERRABLE = 303, + TOK_DEFERRED = 304, + TOK_DELETE = 305, + TOK_DESC = 306, + TOK_DISTINCT = 307, + TOK_ELSE = 308, + TOK_END = 309, + TOK_ESCAPE = 310, + TOK_EXISTS = 311, + TOK_FAIL = 312, + TOK_FALSE = 313, + TOK_FILTER = 314, + TOK_FOLLOWING = 315, + TOK_FOREIGN = 316, + TOK_GENERATED = 317, + TOK_GLOB = 318, + TOK_IF = 319, + TOK_IGNORE = 320, + TOK_IMMEDIATE = 321, + TOK_IN = 322, + TOK_INDEX = 323, + TOK_INITIALLY = 324, + TOK_INSERT = 325, + TOK_IS = 326, + TOK_ISNULL = 327, + TOK_KEY = 328, + TOK_LIKE = 329, + TOK_MATCH = 330, + TOK_NO = 331, + TOK_NOT = 332, + TOK_NOTNULL = 333, + TOK_NULL = 334, + TOK_ON = 335, + TOK_OR = 336, + TOK_OVER = 337, + TOK_PARTITION = 338, + TOK_PRECEDING = 339, + TOK_PRIMARY = 340, + TOK_RAISE = 341, + TOK_RANGE = 342, + TOK_REFERENCES = 343, + TOK_REGEXP = 344, + TOK_REPLACE = 345, + TOK_RESTRICT = 346, + TOK_ROLLBACK = 347, + TOK_ROWID = 348, + TOK_ROWS = 349, + TOK_SELECT = 350, + TOK_SET = 351, + TOK_STORED = 352, + TOK_TABLE = 353, + TOK_TEMP = 354, + TOK_TEMPORARY = 355, + TOK_THEN = 356, + TOK_TRUE = 357, + TOK_UNBOUNDED = 358, + TOK_UNIQUE = 359, + TOK_UPDATE = 360, + TOK_USING = 361, + TOK_VIRTUAL = 362, + TOK_WHEN = 363, + TOK_WHERE = 364, + TOK_WITHOUT = 365, + TOK_IDENTIFIER = 366, + TOK_NUMERIC = 367, + TOK_STRINGLITERAL = 368, + TOK_QUOTEDLITERAL = 369, + TOK_BLOBLITERAL = 370, + TOK_BINDPARAMETER = 371 }; }; @@ -762,7 +792,7 @@ namespace sqlb { namespace parser { enum { empty_symbol = -2 }; /// Internal symbol number for tokens (subsumed by symbol_number_type). - typedef unsigned char token_number_type; + typedef signed char token_number_type; /// A complete symbol. /// @@ -994,179 +1024,184 @@ namespace sqlb { namespace parser { // Type destructor. switch (yytype) { - case 153: // columnconstraint + case 158: // columnconstraint value.template destroy< ColumnConstraintInfo > (); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.template destroy< ColumnConstraintInfoVector > (); break; - case 155: // columndef + case 160: // columndef value.template destroy< ColumndefData > (); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.template destroy< bool > (); break; - case 163: // tableconstraint + case 168: // tableconstraint value.template destroy< sqlb::ConstraintPtr > (); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.template destroy< sqlb::ConstraintSet > (); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.template destroy< sqlb::IndexPtr > (); break; - case 144: // indexed_column + case 147: // indexed_column value.template destroy< sqlb::IndexedColumn > (); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.template destroy< sqlb::IndexedColumnVector > (); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.template destroy< sqlb::StringVector > (); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.template destroy< sqlb::TablePtr > (); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.template destroy< std::string > (); break; - case 156: // columndef_list + case 161: // columndef_list value.template destroy< std::vector > (); break; @@ -1226,9 +1261,6 @@ switch (yytype) /// \a empty when empty. symbol_number_type type_get () const YY_NOEXCEPT; - /// The token. - token_type token () const YY_NOEXCEPT; - /// The symbol type. /// \a empty_symbol when empty. /// An int, not token_number_type, to be able to store empty_symbol. @@ -1249,26 +1281,26 @@ switch (yytype) symbol_type (int tok, location_type l) : super_type(token_type (tok), std::move (l)) { - YYASSERT (tok == token::TOK_EOF || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN || tok == token::TOK_DOT || tok == token::TOK_COMMA || tok == token::TOK_SEMI || tok == token::TOK_PLUS || tok == token::TOK_MINUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_TILDE || tok == token::TOK_AMPERSAND || tok == token::TOK_PERCENT || tok == token::TOK_BITOR || tok == token::TOK_OROP || tok == token::TOK_EQUAL || tok == token::TOK_EQUAL2 || tok == token::TOK_GREATER || tok == token::TOK_GREATEREQUAL || tok == token::TOK_LOWER || tok == token::TOK_LOWEREQUAL || tok == token::TOK_UNEQUAL || tok == token::TOK_UNEQUAL2 || tok == token::TOK_BITWISELEFT || tok == token::TOK_BITWISERIGHT); + YY_ASSERT (tok == token::TOK_EOF || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN || tok == token::TOK_DOT || tok == token::TOK_COMMA || tok == token::TOK_SEMI || tok == token::TOK_PLUS || tok == token::TOK_MINUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_TILDE || tok == token::TOK_AMPERSAND || tok == token::TOK_PERCENT || tok == token::TOK_BITOR || tok == token::TOK_OROP || tok == token::TOK_EQUAL || tok == token::TOK_EQUAL2 || tok == token::TOK_GREATER || tok == token::TOK_GREATEREQUAL || tok == token::TOK_LOWER || tok == token::TOK_LOWEREQUAL || tok == token::TOK_UNEQUAL || tok == token::TOK_UNEQUAL2 || tok == token::TOK_BITWISELEFT || tok == token::TOK_BITWISERIGHT); } #else symbol_type (int tok, const location_type& l) : super_type(token_type (tok), l) { - YYASSERT (tok == token::TOK_EOF || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN || tok == token::TOK_DOT || tok == token::TOK_COMMA || tok == token::TOK_SEMI || tok == token::TOK_PLUS || tok == token::TOK_MINUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_TILDE || tok == token::TOK_AMPERSAND || tok == token::TOK_PERCENT || tok == token::TOK_BITOR || tok == token::TOK_OROP || tok == token::TOK_EQUAL || tok == token::TOK_EQUAL2 || tok == token::TOK_GREATER || tok == token::TOK_GREATEREQUAL || tok == token::TOK_LOWER || tok == token::TOK_LOWEREQUAL || tok == token::TOK_UNEQUAL || tok == token::TOK_UNEQUAL2 || tok == token::TOK_BITWISELEFT || tok == token::TOK_BITWISERIGHT); + YY_ASSERT (tok == token::TOK_EOF || tok == token::TOK_LPAREN || tok == token::TOK_RPAREN || tok == token::TOK_DOT || tok == token::TOK_COMMA || tok == token::TOK_SEMI || tok == token::TOK_PLUS || tok == token::TOK_MINUS || tok == token::TOK_STAR || tok == token::TOK_SLASH || tok == token::TOK_TILDE || tok == token::TOK_AMPERSAND || tok == token::TOK_PERCENT || tok == token::TOK_BITOR || tok == token::TOK_OROP || tok == token::TOK_EQUAL || tok == token::TOK_EQUAL2 || tok == token::TOK_GREATER || tok == token::TOK_GREATEREQUAL || tok == token::TOK_LOWER || tok == token::TOK_LOWEREQUAL || tok == token::TOK_UNEQUAL || tok == token::TOK_UNEQUAL2 || tok == token::TOK_BITWISELEFT || tok == token::TOK_BITWISERIGHT); } #endif #if 201103L <= YY_CPLUSPLUS symbol_type (int tok, std::string v, location_type l) : super_type(token_type (tok), std::move (v), std::move (l)) { - YYASSERT (tok == token::TOK_ABORT || tok == token::TOK_ACTION || tok == token::TOK_AND || tok == token::TOK_AND_BETWEEN || tok == token::TOK_AS || tok == token::TOK_ASC || tok == token::TOK_AUTOINCREMENT || tok == token::TOK_BETWEEN || tok == token::TOK_CASCADE || tok == token::TOK_CASE || tok == token::TOK_CAST || tok == token::TOK_CHECK || tok == token::TOK_COLLATE || tok == token::TOK_CONFLICT || tok == token::TOK_CONSTRAINT || tok == token::TOK_CREATE || tok == token::TOK_CURRENT_DATE || tok == token::TOK_CURRENT_TIME || tok == token::TOK_CURRENT_TIMESTAMP || tok == token::TOK_DEFAULT || tok == token::TOK_DEFERRABLE || tok == token::TOK_DEFERRED || tok == token::TOK_DELETE || tok == token::TOK_DESC || tok == token::TOK_DISTINCT || tok == token::TOK_ELSE || tok == token::TOK_END || tok == token::TOK_ESCAPE || tok == token::TOK_EXISTS || tok == token::TOK_FAIL || tok == token::TOK_FALSE || tok == token::TOK_FILTER || tok == token::TOK_FOLLOWING || tok == token::TOK_FOREIGN || tok == token::TOK_GLOB || tok == token::TOK_IF || tok == token::TOK_IGNORE || tok == token::TOK_IMMEDIATE || tok == token::TOK_IN || tok == token::TOK_INDEX || tok == token::TOK_INITIALLY || tok == token::TOK_INSERT || tok == token::TOK_IS || tok == token::TOK_ISNULL || tok == token::TOK_KEY || tok == token::TOK_LIKE || tok == token::TOK_MATCH || tok == token::TOK_NO || tok == token::TOK_NOT || tok == token::TOK_NOTNULL || tok == token::TOK_NULL || tok == token::TOK_ON || tok == token::TOK_OR || tok == token::TOK_OVER || tok == token::TOK_PARTITION || tok == token::TOK_PRECEDING || tok == token::TOK_PRIMARY || tok == token::TOK_RAISE || tok == token::TOK_RANGE || tok == token::TOK_REFERENCES || tok == token::TOK_REGEXP || tok == token::TOK_REPLACE || tok == token::TOK_RESTRICT || tok == token::TOK_ROLLBACK || tok == token::TOK_ROWID || tok == token::TOK_ROWS || tok == token::TOK_SELECT || tok == token::TOK_SET || tok == token::TOK_TABLE || tok == token::TOK_TEMP || tok == token::TOK_TEMPORARY || tok == token::TOK_THEN || tok == token::TOK_TRUE || tok == token::TOK_UNBOUNDED || tok == token::TOK_UNIQUE || tok == token::TOK_UPDATE || tok == token::TOK_USING || tok == token::TOK_VIRTUAL || tok == token::TOK_WHEN || tok == token::TOK_WHERE || tok == token::TOK_WITHOUT || tok == token::TOK_IDENTIFIER || tok == token::TOK_NUMERIC || tok == token::TOK_STRINGLITERAL || tok == token::TOK_QUOTEDLITERAL || tok == token::TOK_BLOBLITERAL || tok == token::TOK_BINDPARAMETER); + YY_ASSERT (tok == token::TOK_ABORT || tok == token::TOK_ACTION || tok == token::TOK_ALWAYS || tok == token::TOK_AND || tok == token::TOK_AND_BETWEEN || tok == token::TOK_AS || tok == token::TOK_ASC || tok == token::TOK_AUTOINCREMENT || tok == token::TOK_BETWEEN || tok == token::TOK_CASCADE || tok == token::TOK_CASE || tok == token::TOK_CAST || tok == token::TOK_CHECK || tok == token::TOK_COLLATE || tok == token::TOK_CONFLICT || tok == token::TOK_CONSTRAINT || tok == token::TOK_CREATE || tok == token::TOK_CURRENT_DATE || tok == token::TOK_CURRENT_TIME || tok == token::TOK_CURRENT_TIMESTAMP || tok == token::TOK_DEFAULT || tok == token::TOK_DEFERRABLE || tok == token::TOK_DEFERRED || tok == token::TOK_DELETE || tok == token::TOK_DESC || tok == token::TOK_DISTINCT || tok == token::TOK_ELSE || tok == token::TOK_END || tok == token::TOK_ESCAPE || tok == token::TOK_EXISTS || tok == token::TOK_FAIL || tok == token::TOK_FALSE || tok == token::TOK_FILTER || tok == token::TOK_FOLLOWING || tok == token::TOK_FOREIGN || tok == token::TOK_GENERATED || tok == token::TOK_GLOB || tok == token::TOK_IF || tok == token::TOK_IGNORE || tok == token::TOK_IMMEDIATE || tok == token::TOK_IN || tok == token::TOK_INDEX || tok == token::TOK_INITIALLY || tok == token::TOK_INSERT || tok == token::TOK_IS || tok == token::TOK_ISNULL || tok == token::TOK_KEY || tok == token::TOK_LIKE || tok == token::TOK_MATCH || tok == token::TOK_NO || tok == token::TOK_NOT || tok == token::TOK_NOTNULL || tok == token::TOK_NULL || tok == token::TOK_ON || tok == token::TOK_OR || tok == token::TOK_OVER || tok == token::TOK_PARTITION || tok == token::TOK_PRECEDING || tok == token::TOK_PRIMARY || tok == token::TOK_RAISE || tok == token::TOK_RANGE || tok == token::TOK_REFERENCES || tok == token::TOK_REGEXP || tok == token::TOK_REPLACE || tok == token::TOK_RESTRICT || tok == token::TOK_ROLLBACK || tok == token::TOK_ROWID || tok == token::TOK_ROWS || tok == token::TOK_SELECT || tok == token::TOK_SET || tok == token::TOK_STORED || tok == token::TOK_TABLE || tok == token::TOK_TEMP || tok == token::TOK_TEMPORARY || tok == token::TOK_THEN || tok == token::TOK_TRUE || tok == token::TOK_UNBOUNDED || tok == token::TOK_UNIQUE || tok == token::TOK_UPDATE || tok == token::TOK_USING || tok == token::TOK_VIRTUAL || tok == token::TOK_WHEN || tok == token::TOK_WHERE || tok == token::TOK_WITHOUT || tok == token::TOK_IDENTIFIER || tok == token::TOK_NUMERIC || tok == token::TOK_STRINGLITERAL || tok == token::TOK_QUOTEDLITERAL || tok == token::TOK_BLOBLITERAL || tok == token::TOK_BINDPARAMETER); } #else symbol_type (int tok, const std::string& v, const location_type& l) : super_type(token_type (tok), v, l) { - YYASSERT (tok == token::TOK_ABORT || tok == token::TOK_ACTION || tok == token::TOK_AND || tok == token::TOK_AND_BETWEEN || tok == token::TOK_AS || tok == token::TOK_ASC || tok == token::TOK_AUTOINCREMENT || tok == token::TOK_BETWEEN || tok == token::TOK_CASCADE || tok == token::TOK_CASE || tok == token::TOK_CAST || tok == token::TOK_CHECK || tok == token::TOK_COLLATE || tok == token::TOK_CONFLICT || tok == token::TOK_CONSTRAINT || tok == token::TOK_CREATE || tok == token::TOK_CURRENT_DATE || tok == token::TOK_CURRENT_TIME || tok == token::TOK_CURRENT_TIMESTAMP || tok == token::TOK_DEFAULT || tok == token::TOK_DEFERRABLE || tok == token::TOK_DEFERRED || tok == token::TOK_DELETE || tok == token::TOK_DESC || tok == token::TOK_DISTINCT || tok == token::TOK_ELSE || tok == token::TOK_END || tok == token::TOK_ESCAPE || tok == token::TOK_EXISTS || tok == token::TOK_FAIL || tok == token::TOK_FALSE || tok == token::TOK_FILTER || tok == token::TOK_FOLLOWING || tok == token::TOK_FOREIGN || tok == token::TOK_GLOB || tok == token::TOK_IF || tok == token::TOK_IGNORE || tok == token::TOK_IMMEDIATE || tok == token::TOK_IN || tok == token::TOK_INDEX || tok == token::TOK_INITIALLY || tok == token::TOK_INSERT || tok == token::TOK_IS || tok == token::TOK_ISNULL || tok == token::TOK_KEY || tok == token::TOK_LIKE || tok == token::TOK_MATCH || tok == token::TOK_NO || tok == token::TOK_NOT || tok == token::TOK_NOTNULL || tok == token::TOK_NULL || tok == token::TOK_ON || tok == token::TOK_OR || tok == token::TOK_OVER || tok == token::TOK_PARTITION || tok == token::TOK_PRECEDING || tok == token::TOK_PRIMARY || tok == token::TOK_RAISE || tok == token::TOK_RANGE || tok == token::TOK_REFERENCES || tok == token::TOK_REGEXP || tok == token::TOK_REPLACE || tok == token::TOK_RESTRICT || tok == token::TOK_ROLLBACK || tok == token::TOK_ROWID || tok == token::TOK_ROWS || tok == token::TOK_SELECT || tok == token::TOK_SET || tok == token::TOK_TABLE || tok == token::TOK_TEMP || tok == token::TOK_TEMPORARY || tok == token::TOK_THEN || tok == token::TOK_TRUE || tok == token::TOK_UNBOUNDED || tok == token::TOK_UNIQUE || tok == token::TOK_UPDATE || tok == token::TOK_USING || tok == token::TOK_VIRTUAL || tok == token::TOK_WHEN || tok == token::TOK_WHERE || tok == token::TOK_WITHOUT || tok == token::TOK_IDENTIFIER || tok == token::TOK_NUMERIC || tok == token::TOK_STRINGLITERAL || tok == token::TOK_QUOTEDLITERAL || tok == token::TOK_BLOBLITERAL || tok == token::TOK_BINDPARAMETER); + YY_ASSERT (tok == token::TOK_ABORT || tok == token::TOK_ACTION || tok == token::TOK_ALWAYS || tok == token::TOK_AND || tok == token::TOK_AND_BETWEEN || tok == token::TOK_AS || tok == token::TOK_ASC || tok == token::TOK_AUTOINCREMENT || tok == token::TOK_BETWEEN || tok == token::TOK_CASCADE || tok == token::TOK_CASE || tok == token::TOK_CAST || tok == token::TOK_CHECK || tok == token::TOK_COLLATE || tok == token::TOK_CONFLICT || tok == token::TOK_CONSTRAINT || tok == token::TOK_CREATE || tok == token::TOK_CURRENT_DATE || tok == token::TOK_CURRENT_TIME || tok == token::TOK_CURRENT_TIMESTAMP || tok == token::TOK_DEFAULT || tok == token::TOK_DEFERRABLE || tok == token::TOK_DEFERRED || tok == token::TOK_DELETE || tok == token::TOK_DESC || tok == token::TOK_DISTINCT || tok == token::TOK_ELSE || tok == token::TOK_END || tok == token::TOK_ESCAPE || tok == token::TOK_EXISTS || tok == token::TOK_FAIL || tok == token::TOK_FALSE || tok == token::TOK_FILTER || tok == token::TOK_FOLLOWING || tok == token::TOK_FOREIGN || tok == token::TOK_GENERATED || tok == token::TOK_GLOB || tok == token::TOK_IF || tok == token::TOK_IGNORE || tok == token::TOK_IMMEDIATE || tok == token::TOK_IN || tok == token::TOK_INDEX || tok == token::TOK_INITIALLY || tok == token::TOK_INSERT || tok == token::TOK_IS || tok == token::TOK_ISNULL || tok == token::TOK_KEY || tok == token::TOK_LIKE || tok == token::TOK_MATCH || tok == token::TOK_NO || tok == token::TOK_NOT || tok == token::TOK_NOTNULL || tok == token::TOK_NULL || tok == token::TOK_ON || tok == token::TOK_OR || tok == token::TOK_OVER || tok == token::TOK_PARTITION || tok == token::TOK_PRECEDING || tok == token::TOK_PRIMARY || tok == token::TOK_RAISE || tok == token::TOK_RANGE || tok == token::TOK_REFERENCES || tok == token::TOK_REGEXP || tok == token::TOK_REPLACE || tok == token::TOK_RESTRICT || tok == token::TOK_ROLLBACK || tok == token::TOK_ROWID || tok == token::TOK_ROWS || tok == token::TOK_SELECT || tok == token::TOK_SET || tok == token::TOK_STORED || tok == token::TOK_TABLE || tok == token::TOK_TEMP || tok == token::TOK_TEMPORARY || tok == token::TOK_THEN || tok == token::TOK_TRUE || tok == token::TOK_UNBOUNDED || tok == token::TOK_UNIQUE || tok == token::TOK_UPDATE || tok == token::TOK_USING || tok == token::TOK_VIRTUAL || tok == token::TOK_WHEN || tok == token::TOK_WHERE || tok == token::TOK_WITHOUT || tok == token::TOK_IDENTIFIER || tok == token::TOK_NUMERIC || tok == token::TOK_STRINGLITERAL || tok == token::TOK_QUOTEDLITERAL || tok == token::TOK_BLOBLITERAL || tok == token::TOK_BINDPARAMETER); } #endif }; @@ -1713,6 +1745,21 @@ switch (yytype) return symbol_type (token::TOK_ACTION, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_ALWAYS (std::string v, location_type l) + { + return symbol_type (token::TOK_ALWAYS, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_ALWAYS (const std::string& v, const location_type& l) + { + return symbol_type (token::TOK_ALWAYS, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -2193,6 +2240,21 @@ switch (yytype) return symbol_type (token::TOK_FOREIGN, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_GENERATED (std::string v, location_type l) + { + return symbol_type (token::TOK_GENERATED, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_GENERATED (const std::string& v, const location_type& l) + { + return symbol_type (token::TOK_GENERATED, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -2703,6 +2765,21 @@ switch (yytype) return symbol_type (token::TOK_SET, v, l); } #endif +#if 201103L <= YY_CPLUSPLUS + static + symbol_type + make_STORED (std::string v, location_type l) + { + return symbol_type (token::TOK_STORED, std::move (v), std::move (l)); + } +#else + static + symbol_type + make_STORED (const std::string& v, const location_type& l) + { + return symbol_type (token::TOK_STORED, v, l); + } +#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -2995,8 +3072,8 @@ switch (yytype) parser (const parser&); parser& operator= (const parser&); - /// State numbers. - typedef int state_type; + /// Stored state numbers (used for stacks). + typedef short state_type; /// Generate an error message. /// \param yystate the state where the error occurred. @@ -3007,7 +3084,7 @@ switch (yytype) /// Compute post-reduction state. /// \param yystate the current state /// \param yysym the nonterminal to push on the stack - state_type yy_lr_goto_state_ (state_type yystate, int yysym); + static state_type yy_lr_goto_state_ (state_type yystate, int yysym); /// Whether the given \c yypact_ value indicates a defaulted state. /// \param yyvalue the value to check @@ -3021,40 +3098,42 @@ switch (yytype) static const short yytable_ninf_; /// Convert a scanner token number \a t to a symbol number. - static token_number_type yytranslate_ (token_type t); + /// In theory \a t should be a token_type, but character literals + /// are valid, yet not members of the token_type enum. + static token_number_type yytranslate_ (int t); // Tables. - // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - // STATE-NUM. - static const short yypact_[]; + // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + // STATE-NUM. + static const short yypact_[]; - // 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 unsigned short yydefact_[]; + // 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 short yydefact_[]; - // YYPGOTO[NTERM-NUM]. - static const short yypgoto_[]; + // YYPGOTO[NTERM-NUM]. + static const short yypgoto_[]; - // YYDEFGOTO[NTERM-NUM]. - static const short yydefgoto_[]; + // YYDEFGOTO[NTERM-NUM]. + static const short yydefgoto_[]; - // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - // positive, shift that token. If negative, reduce the rule whose - // number is the opposite. If YYTABLE_NINF, syntax error. - static const short yytable_[]; + // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + // positive, shift that token. If negative, reduce the rule whose + // number is the opposite. If YYTABLE_NINF, syntax error. + static const short yytable_[]; - static const short yycheck_[]; + static const short yycheck_[]; - // YYSTOS[STATE-NUM] -- The (internal number of the) accessing - // symbol of state STATE-NUM. - static const unsigned char yystos_[]; + // YYSTOS[STATE-NUM] -- The (internal number of the) accessing + // symbol of state STATE-NUM. + static const unsigned char yystos_[]; - // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const unsigned char yyr1_[]; + // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. + static const unsigned char yyr1_[]; - // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. - static const unsigned char yyr2_[]; + // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. + static const signed char yyr2_[]; /// Convert the symbol name \a n to a form suitable for a diagnostic. @@ -3064,8 +3143,8 @@ switch (yytype) /// For a symbol, its name in clear. static const char* const yytname_[]; #if YYDEBUG - // YYRLINE[YYN] -- Source line where rule number YYN was defined. - static const unsigned short yyrline_[]; + // YYRLINE[YYN] -- Source line where rule number YYN was defined. + static const short yyrline_[]; /// Report on the debug stream that the rule \a r is going to be reduced. virtual void yy_reduce_print_ (int r); /// Print the state stack on the debug stream. @@ -3117,7 +3196,8 @@ switch (yytype) symbol_number_type type_get () const YY_NOEXCEPT; /// The state number used to denote an empty symbol. - enum { empty_state = -1 }; + /// We use the initial state, as it does not have a value. + enum { empty_state = 0 }; /// The state. /// \a empty when empty. @@ -3139,6 +3219,10 @@ switch (yytype) /// Assignment, needed by push_back by some old implementations. /// Moves the contents of that. stack_symbol_type& operator= (stack_symbol_type& that); + + /// Assignment, needed by push_back by other implementations. + /// Needed by some other old implementations. + stack_symbol_type& operator= (const stack_symbol_type& that); #endif }; @@ -3151,6 +3235,7 @@ switch (yytype) typedef typename S::reverse_iterator iterator; typedef typename S::const_reverse_iterator const_iterator; typedef typename S::size_type size_type; + typedef typename std::ptrdiff_t index_type; stack (size_type n = 200) : seq_ (n) @@ -3159,37 +3244,19 @@ switch (yytype) /// Random access. /// /// Index 0 returns the topmost element. - T& - operator[] (size_type i) + const T& + operator[] (index_type i) const { - return seq_[size () - 1 - i]; + return seq_[size_type (size () - 1 - i)]; } /// Random access. /// /// Index 0 returns the topmost element. T& - operator[] (int i) + operator[] (index_type i) { - return operator[] (size_type (i)); - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const - { - return seq_[size () - 1 - i]; - } - - /// Random access. - /// - /// Index 0 returns the topmost element. - const T& - operator[] (int i) const - { - return operator[] (size_type (i)); + return seq_[size_type (size () - 1 - i)]; } /// Steal the contents of \a t. @@ -3204,7 +3271,7 @@ switch (yytype) /// Pop elements from the stack. void - pop (int n = 1) YY_NOEXCEPT + pop (std::ptrdiff_t n = 1) YY_NOEXCEPT { for (; 0 < n; --n) seq_.pop_back (); @@ -3218,10 +3285,16 @@ switch (yytype) } /// Number of elements on the stack. - size_type + index_type size () const YY_NOEXCEPT { - return seq_.size (); + return index_type (seq_.size ()); + } + + std::ptrdiff_t + ssize () const YY_NOEXCEPT + { + return std::ptrdiff_t (size ()); } /// Iterator on top of the stack (going downwards). @@ -3242,20 +3315,20 @@ switch (yytype) class slice { public: - slice (const stack& stack, int range) + slice (const stack& stack, index_type range) : stack_ (stack) , range_ (range) {} const T& - operator[] (int i) const + operator[] (index_type i) const { return stack_[range_ - i]; } private: const stack& stack_; - int range_; + index_type range_; }; private: @@ -3290,16 +3363,18 @@ switch (yytype) /// Pop \a n symbols from the stack. void yypop_ (int n = 1); + /// Some specific tokens. + static const token_number_type yy_error_token_ = 1; + static const token_number_type yy_undef_token_ = 2; + /// Constants. enum { yyeof_ = 0, - yylast_ = 3191, ///< Last index in yytable_. - yynnts_ = 53, ///< Number of nonterminal symbols. + yylast_ = 3407, ///< Last index in yytable_. + yynnts_ = 55, ///< Number of nonterminal symbols. yyfinal_ = 13, ///< Termination state number. - yyterror_ = 1, - yyerrcode_ = 256, - yyntokens_ = 114 ///< Number of tokens. + yyntokens_ = 117 ///< Number of tokens. }; @@ -3310,7 +3385,7 @@ switch (yytype) inline parser::token_number_type - parser::yytranslate_ (token_type t) + parser::yytranslate_ (int t) { // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to // TOKEN-NUM as returned by yylex. @@ -3354,17 +3429,17 @@ switch (yytype) 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113 + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116 }; - const unsigned user_token_number_max_ = 368; - const token_number_type undef_token_ = 2; + const int user_token_number_max_ = 371; - if (static_cast (t) <= yyeof_) + if (t <= 0) return yyeof_; - else if (static_cast (t) <= user_token_number_max_) + else if (t <= user_token_number_max_) return translate_table[t]; else - return undef_token_; + return yy_undef_token_; } // basic_symbol. @@ -3377,179 +3452,184 @@ switch (yytype) { switch (this->type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.move< ColumnConstraintInfo > (std::move (that.value)); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.move< ColumnConstraintInfoVector > (std::move (that.value)); break; - case 155: // columndef + case 160: // columndef value.move< ColumndefData > (std::move (that.value)); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.move< bool > (std::move (that.value)); break; - case 163: // tableconstraint + case 168: // tableconstraint value.move< sqlb::ConstraintPtr > (std::move (that.value)); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.move< sqlb::ConstraintSet > (std::move (that.value)); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.move< sqlb::IndexPtr > (std::move (that.value)); break; - case 144: // indexed_column + case 147: // indexed_column value.move< sqlb::IndexedColumn > (std::move (that.value)); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.move< sqlb::IndexedColumnVector > (std::move (that.value)); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.move< sqlb::StringVector > (std::move (that.value)); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.move< sqlb::TablePtr > (std::move (that.value)); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.move< std::string > (std::move (that.value)); break; - case 156: // columndef_list + case 161: // columndef_list value.move< std::vector > (std::move (that.value)); break; @@ -3568,179 +3648,184 @@ switch (yytype) { switch (this->type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.copy< ColumnConstraintInfo > (YY_MOVE (that.value)); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.copy< ColumnConstraintInfoVector > (YY_MOVE (that.value)); break; - case 155: // columndef + case 160: // columndef value.copy< ColumndefData > (YY_MOVE (that.value)); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.copy< bool > (YY_MOVE (that.value)); break; - case 163: // tableconstraint + case 168: // tableconstraint value.copy< sqlb::ConstraintPtr > (YY_MOVE (that.value)); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.copy< sqlb::ConstraintSet > (YY_MOVE (that.value)); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.copy< sqlb::IndexPtr > (YY_MOVE (that.value)); break; - case 144: // indexed_column + case 147: // indexed_column value.copy< sqlb::IndexedColumn > (YY_MOVE (that.value)); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.copy< sqlb::IndexedColumnVector > (YY_MOVE (that.value)); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.copy< sqlb::StringVector > (YY_MOVE (that.value)); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.copy< sqlb::TablePtr > (YY_MOVE (that.value)); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.copy< std::string > (YY_MOVE (that.value)); break; - case 156: // columndef_list + case 161: // columndef_list value.copy< std::vector > (YY_MOVE (that.value)); break; @@ -3766,179 +3851,184 @@ switch (yytype) super_type::move (s); switch (this->type_get ()) { - case 153: // columnconstraint + case 158: // columnconstraint value.move< ColumnConstraintInfo > (YY_MOVE (s.value)); break; - case 154: // columnconstraint_list + case 159: // columnconstraint_list value.move< ColumnConstraintInfoVector > (YY_MOVE (s.value)); break; - case 155: // columndef + case 160: // columndef value.move< ColumndefData > (YY_MOVE (s.value)); break; - case 139: // optional_if_not_exists - case 141: // optional_unique - case 149: // optional_temporary - case 150: // optional_withoutrowid + case 142: // optional_if_not_exists + case 144: // optional_unique + case 152: // optional_temporary + case 153: // optional_withoutrowid + case 157: // optional_always_generated value.move< bool > (YY_MOVE (s.value)); break; - case 163: // tableconstraint + case 168: // tableconstraint value.move< sqlb::ConstraintPtr > (YY_MOVE (s.value)); break; - case 164: // tableconstraint_list - case 165: // optional_tableconstraint_list + case 169: // tableconstraint_list + case 170: // optional_tableconstraint_list value.move< sqlb::ConstraintSet > (YY_MOVE (s.value)); break; - case 146: // createindex_stmt + case 149: // createindex_stmt value.move< sqlb::IndexPtr > (YY_MOVE (s.value)); break; - case 144: // indexed_column + case 147: // indexed_column value.move< sqlb::IndexedColumn > (YY_MOVE (s.value)); break; - case 145: // indexed_column_list + case 148: // indexed_column_list value.move< sqlb::IndexedColumnVector > (YY_MOVE (s.value)); break; - case 158: // columnid_list - case 159: // optional_columnid_with_paren_list + case 163: // columnid_list + case 164: // optional_columnid_with_paren_list value.move< sqlb::StringVector > (YY_MOVE (s.value)); break; - case 148: // createvirtualtable_stmt - case 166: // createtable_stmt + case 151: // createvirtualtable_stmt + case 171: // createtable_stmt value.move< sqlb::TablePtr > (YY_MOVE (s.value)); break; case 27: // "ABORT" case 28: // "ACTION" - case 29: // "AND" - case 30: // "AND BETWEEN" - case 31: // "AS" - case 32: // "ASC" - case 33: // "AUTOINCREMENT" - case 34: // "BETWEEN" - case 35: // "CASCADE" - case 36: // "CASE" - case 37: // "CAST" - case 38: // "CHECK" - case 39: // "COLLATE" - case 40: // "CONFLICT" - case 41: // "CONSTRAINT" - case 42: // "CREATE" - case 43: // "CURRENT_DATE" - case 44: // "CURRENT_TIME" - case 45: // "CURRENT_TIMESTAMP" - case 46: // "DEFAULT" - case 47: // "DEFERRABLE" - case 48: // "DEFERRED" - case 49: // "DELETE" - case 50: // "DESC" - case 51: // "DISTINCT" - case 52: // "ELSE" - case 53: // "END" - case 54: // "ESCAPE" - case 55: // "EXISTS" - case 56: // "FAIL" - case 57: // "FALSE" - case 58: // "FILTER" - case 59: // "FOLLOWING" - case 60: // "FOREIGN" - case 61: // "GLOB" - case 62: // "IF" - case 63: // "IGNORE" - case 64: // "IMMEDIATE" - case 65: // "IN" - case 66: // "INDEX" - case 67: // "INITIALLY" - case 68: // "INSERT" - case 69: // "IS" - case 70: // "ISNULL" - case 71: // "KEY" - case 72: // "LIKE" - case 73: // "MATCH" - case 74: // "NO" - case 75: // "NOT" - case 76: // "NOTNULL" - case 77: // "NULL" - case 78: // "ON" - case 79: // "OR" - case 80: // "OVER" - case 81: // "PARTITION" - case 82: // "PRECEDING" - case 83: // "PRIMARY" - case 84: // "RAISE" - case 85: // "RANGE" - case 86: // "REFERENCES" - case 87: // "REGEXP" - case 88: // "REPLACE" - case 89: // "RESTRICT" - case 90: // "ROLLBACK" - case 91: // "ROWID" - case 92: // "ROWS" - case 93: // "SELECT" - case 94: // "SET" - case 95: // "TABLE" - case 96: // "TEMP" - case 97: // "TEMPORARY" - case 98: // "THEN" - case 99: // "TRUE" - case 100: // "UNBOUNDED" - case 101: // "UNIQUE" - case 102: // "UPDATE" - case 103: // "USING" - case 104: // "VIRTUAL" - case 105: // "WHEN" - case 106: // "WHERE" - case 107: // "WITHOUT" - case 108: // "identifier" - case 109: // "numeric" - case 110: // "string literal" - case 111: // "quoted literal" - case 112: // "blob literal" - case 113: // "bind parameter" - case 117: // literalvalue - case 118: // id - case 119: // allowed_keywords_as_identifier - case 120: // tableid - case 121: // columnid - case 122: // signednumber - case 123: // signednumber_or_numeric - case 124: // typename_namelist - case 125: // type_name - case 126: // unary_expr - case 127: // binary_expr - case 128: // like_expr - case 129: // exprlist_expr - case 130: // function_expr - case 131: // isnull_expr - case 132: // between_expr - case 133: // in_expr - case 134: // whenthenlist_expr - case 135: // case_expr - case 136: // raise_expr - case 137: // expr - case 138: // select_stmt - case 140: // optional_sort_order - case 142: // optional_where - case 143: // tableid_with_uninteresting_schema - case 147: // optional_exprlist_with_paren - case 151: // optional_conflictclause - case 152: // optional_typename - case 157: // optional_constraintname - case 160: // fk_clause_part - case 161: // fk_clause_part_list - case 162: // optional_fk_clause + case 29: // "ALWAYS" + case 30: // "AND" + case 31: // "AND BETWEEN" + case 32: // "AS" + case 33: // "ASC" + case 34: // "AUTOINCREMENT" + case 35: // "BETWEEN" + case 36: // "CASCADE" + case 37: // "CASE" + case 38: // "CAST" + case 39: // "CHECK" + case 40: // "COLLATE" + case 41: // "CONFLICT" + case 42: // "CONSTRAINT" + case 43: // "CREATE" + case 44: // "CURRENT_DATE" + case 45: // "CURRENT_TIME" + case 46: // "CURRENT_TIMESTAMP" + case 47: // "DEFAULT" + case 48: // "DEFERRABLE" + case 49: // "DEFERRED" + case 50: // "DELETE" + case 51: // "DESC" + case 52: // "DISTINCT" + case 53: // "ELSE" + case 54: // "END" + case 55: // "ESCAPE" + case 56: // "EXISTS" + case 57: // "FAIL" + case 58: // "FALSE" + case 59: // "FILTER" + case 60: // "FOLLOWING" + case 61: // "FOREIGN" + case 62: // "GENERATED" + case 63: // "GLOB" + case 64: // "IF" + case 65: // "IGNORE" + case 66: // "IMMEDIATE" + case 67: // "IN" + case 68: // "INDEX" + case 69: // "INITIALLY" + case 70: // "INSERT" + case 71: // "IS" + case 72: // "ISNULL" + case 73: // "KEY" + case 74: // "LIKE" + case 75: // "MATCH" + case 76: // "NO" + case 77: // "NOT" + case 78: // "NOTNULL" + case 79: // "NULL" + case 80: // "ON" + case 81: // "OR" + case 82: // "OVER" + case 83: // "PARTITION" + case 84: // "PRECEDING" + case 85: // "PRIMARY" + case 86: // "RAISE" + case 87: // "RANGE" + case 88: // "REFERENCES" + case 89: // "REGEXP" + case 90: // "REPLACE" + case 91: // "RESTRICT" + case 92: // "ROLLBACK" + case 93: // "ROWID" + case 94: // "ROWS" + case 95: // "SELECT" + case 96: // "SET" + case 97: // "STORED" + case 98: // "TABLE" + case 99: // "TEMP" + case 100: // "TEMPORARY" + case 101: // "THEN" + case 102: // "TRUE" + case 103: // "UNBOUNDED" + case 104: // "UNIQUE" + case 105: // "UPDATE" + case 106: // "USING" + case 107: // "VIRTUAL" + case 108: // "WHEN" + case 109: // "WHERE" + case 110: // "WITHOUT" + case 111: // "identifier" + case 112: // "numeric" + case 113: // "string literal" + case 114: // "quoted literal" + case 115: // "blob literal" + case 116: // "bind parameter" + case 120: // literalvalue + case 121: // id + case 122: // allowed_keywords_as_identifier + case 123: // tableid + case 124: // columnid + case 125: // signednumber + case 126: // signednumber_or_numeric + case 127: // typename_namelist + case 128: // type_name + case 129: // unary_expr + case 130: // binary_expr + case 131: // like_expr + case 132: // exprlist_expr + case 133: // function_expr + case 134: // isnull_expr + case 135: // between_expr + case 136: // in_expr + case 137: // whenthenlist_expr + case 138: // case_expr + case 139: // raise_expr + case 140: // expr + case 141: // select_stmt + case 143: // optional_sort_order + case 145: // optional_where + case 146: // tableid_with_uninteresting_schema + case 150: // optional_exprlist_with_paren + case 154: // optional_conflictclause + case 155: // optional_typename + case 156: // optional_storage_identifier + case 162: // optional_constraintname + case 165: // fk_clause_part + case 166: // fk_clause_part_list + case 167: // optional_fk_clause value.move< std::string > (YY_MOVE (s.value)); break; - case 156: // columndef_list + case 161: // columndef_list value.move< std::vector > (YY_MOVE (s.value)); break; @@ -3996,35 +4086,9 @@ switch (yytype) return type; } - inline - parser::token_type - parser::by_type::token () const YY_NOEXCEPT - { - // YYTOKNUM[NUM] -- (External) token number corresponding to the - // (internal) symbol number NUM (which must be that of a token). */ - static - const unsigned short - yytoken_number_[] = - { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368 - }; - return token_type (yytoken_number_[type]); - } - #line 10 "sqlite3_parser.yy" } } // sqlb::parser -#line 4028 "sqlite3_parser.hpp" +#line 4092 "sqlite3_parser.hpp" diff --git a/src/sql/parser/sqlite3_parser.yy b/src/sql/parser/sqlite3_parser.yy index 3127457f..81389d19 100644 --- a/src/sql/parser/sqlite3_parser.yy +++ b/src/sql/parser/sqlite3_parser.yy @@ -39,6 +39,7 @@ if(is_table_constraint) table_constraint = other.table_constraint; text = other.text; + generated_constraint = other.generated_constraint; return *this; } @@ -58,6 +59,7 @@ Default, Collate, ForeignKey, + Generated, }; ConstraintType type; @@ -66,6 +68,7 @@ sqlb::ConstraintPtr table_constraint; std::string text; + sqlb::GeneratedColumnConstraint generated_constraint; }; using ColumnConstraintInfoVector = std::vector; @@ -135,6 +138,7 @@ %token ABORT "ABORT" %token ACTION "ACTION" +%token ALWAYS "ALWAYS" %token AND "AND" %token AND_BETWEEN "AND BETWEEN" %token AS "AS" @@ -167,6 +171,7 @@ %token FILTER "FILTER" %token FOLLOWING "FOLLOWING" %token FOREIGN "FOREIGN" +%token GENERATED "GENERATED" %token GLOB "GLOB" %token IF "IF" %token IGNORE "IGNORE" @@ -201,6 +206,7 @@ %token ROWS "ROWS" %token SELECT "SELECT" %token SET "SET" +%token STORED "STORED" %token TABLE "TABLE" %token TEMP "TEMP" %token TEMPORARY "TEMPORARY" @@ -261,6 +267,8 @@ %type createvirtualtable_stmt %type optional_typename +%type optional_storage_identifier +%type optional_always_generated %type columnconstraint_list %type columnconstraint %type columndef @@ -333,6 +341,7 @@ id: allowed_keywords_as_identifier: ABORT | ACTION + | ALWAYS | ASC | CASCADE | CAST @@ -343,6 +352,7 @@ allowed_keywords_as_identifier: | FAIL | FILTER | FOLLOWING + | GENERATED | GLOB | KEY | LIKE @@ -362,6 +372,7 @@ allowed_keywords_as_identifier: | ROLLBACK | ROWID | ROWS + | STORED | TEMPORARY | TEMP | UNBOUNDED @@ -662,6 +673,17 @@ optional_typename: | type_name { $$ = $1; } ; +optional_storage_identifier: + %empty { $$ = "VIRTUAL"; } + | STORED { $$ = "STORED"; } + | VIRTUAL { $$ = "VIRTUAL"; } + ; + +optional_always_generated: + %empty { $$ = false; } + | GENERATED ALWAYS { $$ = true; } + ; + columnconstraint: optional_constraintname PRIMARY KEY optional_sort_order optional_conflictclause { $$.type = ColumnConstraintInfo::PrimaryKey; @@ -757,6 +779,14 @@ columnconstraint: $$.table_constraint = sqlb::ConstraintPtr(fk); $$.fully_parsed = true; } + | optional_constraintname optional_always_generated AS "(" expr ")" optional_storage_identifier { // TODO Solve shift/reduce conflict. + $$.type = ColumnConstraintInfo::Generated; + $$.is_table_constraint = false; + $$.generated_constraint.setExpression($5); + $$.generated_constraint.setStorage($7); + $$.generated_constraint.setName($1); + $$.fully_parsed = true; + } ; columnconstraint_list: @@ -795,6 +825,20 @@ columndef: f.setDefaultValue(c.text); } else if(c.type == ColumnConstraintInfo::Collate) { f.setCollation(c.text); + } else if(c.type == ColumnConstraintInfo::Generated) { + f.setGenerated(c.generated_constraint); + + // This is a hack which removes any "GENERATED ALWAYS" from the end of the type name. + // As of now these are shifted to the type instead of reducing the type when seeing the GENERATED identifier. + // TODO Remove this once the grammar is conflict free + const std::string generated_always = "GENERATED ALWAYS"; + if(f.type().size() >= generated_always.size() && f.type().compare(f.type().size() - generated_always.size(), generated_always.size(), generated_always) == 0) + { + std::string type = f.type().substr(0, f.type().size()-generated_always.size()); + if(type.back() == ' ') + type.pop_back(); + f.setType(type); + } } else { fully_parsed = false; } diff --git a/src/sql/sqlitetypes.cpp b/src/sql/sqlitetypes.cpp index 2f5543df..881d2292 100644 --- a/src/sql/sqlitetypes.cpp +++ b/src/sql/sqlitetypes.cpp @@ -224,6 +224,16 @@ std::string CheckConstraint::toSql() const return result; } +std::string GeneratedColumnConstraint::toSql() const +{ + std::string result; + if(!m_name.empty()) + result = "CONSTRAINT " + escapeIdentifier(m_name) + " "; + result += "GENERATED ALWAYS AS (" + m_expression + ")" + " " + storage(); + + return result; +} + bool Field::operator==(const Field& rhs) const { if(m_name != rhs.m_name) @@ -257,6 +267,8 @@ std::string Field::toString(const std::string& indent, const std::string& sep) c str += " UNIQUE"; if(!m_collation.empty()) str += " COLLATE " + m_collation; + if(!m_generated.expression().empty()) + str += " " + m_generated.toSql(); return str; } diff --git a/src/sql/sqlitetypes.h b/src/sql/sqlitetypes.h index 2a0c1bc3..781c81b5 100644 --- a/src/sql/sqlitetypes.h +++ b/src/sql/sqlitetypes.h @@ -139,6 +139,7 @@ public: UniqueConstraintType, ForeignKeyConstraintType, CheckConstraintType, + GeneratedColumnConstraintType, NoType = 999, }; @@ -270,6 +271,30 @@ private: std::string m_expression; }; +class GeneratedColumnConstraint : public Constraint +{ +public: + explicit GeneratedColumnConstraint(const std::string& expr = std::string(), const std::string& storage = "VIRTUAL") + : m_expression(expr), + m_storage(storage) + { + } + + void setExpression(const std::string& expr) { m_expression = expr; } + const std::string& expression() const { return m_expression; } + + void setStorage(const std::string& storage) { m_storage = storage; } + std::string storage() const { return m_storage.empty() ? "VIRTUAL" : m_storage; } + + std::string toSql() const override; + + ConstraintTypes type() const override { return GeneratedColumnConstraintType; } + +private: + std::string m_expression; + std::string m_storage; +}; + class Field { public: @@ -331,6 +356,10 @@ public: bool unique() const { return m_unique; } const std::string& collation() const { return m_collation; } + const GeneratedColumnConstraint& generated() const { return m_generated; } + GeneratedColumnConstraint& generated() { return m_generated; } + void setGenerated(const GeneratedColumnConstraint& gen) { m_generated = gen; } + private: std::string m_name; std::string m_type; @@ -339,6 +368,7 @@ private: std::string m_defaultvalue; bool m_unique; std::string m_collation; + GeneratedColumnConstraint m_generated; }; class Table : public Object