diff options
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser')
12 files changed, 891 insertions, 850 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp index cc773bb..2c48119 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp @@ -60,7 +60,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents() else if (scale.userType() == QVariant::LongLong) builder.withInteger(scale.toLongLong()); else if (scale.userType() == QVariant::Double) - builder.withFloat(scale.toDouble()); + builder.withFloat(scale); else builder.withOther(scale.toString()); @@ -72,7 +72,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents() else if (precision.userType() == QVariant::LongLong) builder.withInteger(precision.toLongLong()); else if (precision.userType() == QVariant::Double) - builder.withFloat(precision.toDouble()); + builder.withFloat(precision); else builder.withOther(precision.toString()); } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp index 3009b4b..5dc830b 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp @@ -124,6 +124,21 @@ void SqliteExpr::initSubExpr(SqliteExpr *expr) expr->setParent(this); } +void SqliteExpr::initRowValue(const QList<SqliteExpr*> &exprList) +{ + if (exprList.size() == 1) + { + initSubExpr(exprList.first()); + return; + } + + mode = SqliteExpr::Mode::ROW_VALUE; + this->exprList = exprList; + + for (SqliteExpr* expr : exprList) + expr->setParent(this); +} + void SqliteExpr::initBindParam(const QString& value) { mode = SqliteExpr::Mode::BIND_PARAM; @@ -158,7 +173,7 @@ void SqliteExpr::initFunction(const QString& fnName, int distinct, const QList<S else if (distinct == 2) allKw = true; - foreach (SqliteExpr* expr, exprList) + for (SqliteExpr* expr : exprList) expr->setParent(this); } @@ -496,6 +511,9 @@ TokenList SqliteExpr::rebuildTokensFromContents() case SqliteExpr::Mode::IN: builder.withTokens(rebuildIn()); break; + case SqliteExpr::Mode::ROW_VALUE: + builder.withParLeft().withStatementList(exprList).withParRight(); + break; case SqliteExpr::Mode::EXISTS: builder.withKeyword("EXISTS").withParLeft().withStatement(select).withParRight(); break; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h index f57004f..4d5bb03 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h @@ -24,6 +24,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement BINARY_OP, FUNCTION, SUB_EXPR, + ROW_VALUE, CAST, COLLATE, // in Sqlite2 exists only in expr of sortlist LIKE, @@ -69,6 +70,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement void initNull(); void initCTime(const QString& name); void initSubExpr(SqliteExpr* expr); + void initRowValue(const QList<SqliteExpr*>& exprList); void initId(const QString& db, const QString& table, const QString& column); void initId(const QString& table, const QString& column); void initId(const QString& column); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp index 6be7528..77036f7 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp @@ -1,5 +1,6 @@ #include "lexer.h" #include "keywords.h" +#include "log.h" #include "lexer_low_lev.h" #include "sqlite2_parse.h" #include "sqlite3_parse.h" diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp index 894afd1..0f9aa91 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp @@ -315,7 +315,7 @@ int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tole ) { i += 2; - while ( charAt(z, i+2).isDigit() ) + while ( charAt(z, i).isDigit() ) i++; token->lemonType = v3 ? TK3_FLOAT : TK2_FLOAT; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp index 43cc4a0..3884655 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp @@ -243,602 +243,600 @@ static const YYMINORTYPE yyzerominor = { 0 }; ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. */ -#define YY_ACTTAB_COUNT (2285) +#define YY_ACTTAB_COUNT (2271) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 432, 49, 49, 48, 48, 48, 47, 216, 717, 340, - /* 10 */ 644, 426, 52, 52, 52, 52, 45, 50, 50, 50, - /* 20 */ 50, 49, 49, 48, 48, 48, 47, 216, 722, 1027, - /* 30 */ 1027, 644, 131, 581, 52, 52, 52, 52, 412, 50, - /* 40 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216, - /* 50 */ 580, 81, 59, 644, 157, 686, 302, 283, 1027, 1027, - /* 60 */ 42, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 70 */ 1027, 1027, 564, 1027, 1027, 1027, 1027, 39, 40, 1027, - /* 80 */ 1027, 1027, 1027, 1027, 41, 432, 529, 386, 717, 596, - /* 90 */ 595, 281, 4, 378, 717, 631, 426, 643, 609, 423, - /* 100 */ 13, 134, 688, 430, 563, 610, 484, 691, 332, 280, - /* 110 */ 715, 714, 565, 566, 643, 690, 689, 688, 235, 507, - /* 120 */ 61, 321, 611, 412, 48, 48, 48, 47, 216, 122, - /* 130 */ 243, 213, 247, 60, 1143, 1143, 487, 610, 608, 604, - /* 140 */ 686, 307, 486, 585, 717, 42, 508, 510, 643, 509, - /* 150 */ 677, 9, 643, 144, 95, 282, 380, 277, 379, 132, - /* 160 */ 298, 717, 39, 40, 602, 200, 199, 7, 356, 41, - /* 170 */ 885, 308, 1135, 275, 249, 717, 18, 4, 885, 1135, - /* 180 */ 57, 718, 643, 432, 423, 885, 330, 688, 430, 717, - /* 190 */ 688, 644, 691, 688, 426, 691, 715, 714, 691, 643, - /* 200 */ 690, 689, 688, 690, 689, 688, 690, 689, 688, 98, - /* 210 */ 683, 240, 644, 218, 411, 885, 487, 885, 885, 484, - /* 220 */ 717, 412, 239, 885, 304, 583, 513, 582, 885, 885, - /* 230 */ 885, 885, 885, 643, 644, 677, 9, 643, 686, 217, - /* 240 */ 245, 674, 102, 42, 288, 301, 715, 714, 67, 303, - /* 250 */ 148, 308, 1134, 151, 307, 485, 81, 716, 97, 1134, - /* 260 */ 39, 40, 552, 715, 714, 772, 130, 41, 947, 377, - /* 270 */ 374, 373, 448, 47, 216, 4, 947, 715, 714, 335, - /* 280 */ 643, 683, 423, 947, 607, 688, 430, 372, 449, 448, - /* 290 */ 691, 715, 714, 305, 265, 146, 268, 643, 690, 689, - /* 300 */ 688, 288, 68, 678, 692, 255, 363, 259, 360, 693, - /* 310 */ 1028, 1028, 683, 947, 716, 947, 947, 448, 699, 234, - /* 320 */ 387, 716, 715, 714, 774, 652, 947, 947, 947, 947, - /* 330 */ 110, 643, 318, 677, 9, 643, 222, 678, 300, 53, - /* 340 */ 54, 427, 290, 1028, 1028, 676, 676, 51, 51, 52, - /* 350 */ 52, 52, 52, 717, 50, 50, 50, 50, 49, 49, - /* 360 */ 48, 48, 48, 47, 216, 432, 429, 341, 717, 336, - /* 370 */ 672, 671, 288, 284, 717, 138, 426, 209, 219, 431, - /* 380 */ 269, 396, 652, 683, 337, 716, 716, 687, 187, 53, - /* 390 */ 54, 427, 290, 716, 453, 676, 676, 51, 51, 52, - /* 400 */ 52, 52, 52, 412, 50, 50, 50, 50, 49, 49, - /* 410 */ 48, 48, 48, 47, 216, 91, 954, 717, 620, 713, - /* 420 */ 686, 404, 383, 130, 711, 42, 377, 374, 373, 712, - /* 430 */ 233, 954, 395, 312, 210, 594, 667, 385, 429, 17, - /* 440 */ 317, 660, 39, 40, 372, 231, 230, 717, 89, 41, - /* 450 */ 932, 431, 717, 659, 717, 715, 714, 4, 932, 687, - /* 460 */ 92, 143, 643, 359, 423, 932, 675, 688, 430, 15, - /* 470 */ 715, 714, 691, 131, 457, 552, 715, 714, 954, 643, - /* 480 */ 690, 689, 688, 669, 668, 210, 594, 459, 385, 458, - /* 490 */ 577, 88, 1028, 1028, 14, 932, 673, 932, 932, 55, - /* 500 */ 576, 679, 43, 369, 38, 402, 36, 382, 932, 1, - /* 510 */ 932, 932, 642, 643, 635, 677, 9, 643, 662, 715, - /* 520 */ 714, 53, 54, 427, 290, 1028, 1028, 676, 676, 51, - /* 530 */ 51, 52, 52, 52, 52, 661, 50, 50, 50, 50, - /* 540 */ 49, 49, 48, 48, 48, 47, 216, 658, 649, 715, - /* 550 */ 714, 497, 543, 570, 715, 714, 715, 714, 657, 692, - /* 560 */ 544, 615, 321, 31, 693, 28, 717, 586, 275, 683, - /* 570 */ 160, 1028, 1028, 427, 290, 694, 614, 676, 676, 51, - /* 580 */ 51, 52, 52, 52, 52, 399, 50, 50, 50, 50, - /* 590 */ 49, 49, 48, 48, 48, 47, 216, 1026, 1026, 81, - /* 600 */ 53, 54, 427, 290, 1028, 1028, 676, 676, 51, 51, - /* 610 */ 52, 52, 52, 52, 497, 50, 50, 50, 50, 49, - /* 620 */ 49, 48, 48, 48, 47, 216, 1026, 1026, 1026, 1026, - /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 640 */ 717, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 650 */ 1026, 1026, 1028, 1028, 358, 50, 50, 50, 50, 49, - /* 660 */ 49, 48, 48, 48, 47, 216, 289, 553, 715, 714, - /* 670 */ 496, 683, 299, 663, 347, 153, 539, 69, 695, 716, - /* 680 */ 716, 53, 54, 427, 290, 1028, 1028, 676, 676, 51, - /* 690 */ 51, 52, 52, 52, 52, 1095, 50, 50, 50, 50, - /* 700 */ 49, 49, 48, 48, 48, 47, 216, 53, 54, 427, - /* 710 */ 290, 419, 512, 676, 676, 51, 51, 52, 52, 52, - /* 720 */ 52, 159, 50, 50, 50, 50, 49, 49, 48, 48, - /* 730 */ 48, 47, 216, 491, 955, 316, 483, 483, 664, 554, - /* 740 */ 215, 651, 715, 714, 81, 53, 54, 427, 290, 955, - /* 750 */ 415, 676, 676, 51, 51, 52, 52, 52, 52, 398, - /* 760 */ 50, 50, 50, 50, 49, 49, 48, 48, 48, 47, - /* 770 */ 216, 158, 1095, 22, 717, 628, 460, 717, 1080, 717, - /* 780 */ 648, 1046, 140, 89, 717, 1150, 154, 436, 2, 716, - /* 790 */ 425, 672, 671, 397, 461, 462, 955, 53, 54, 427, - /* 800 */ 290, 574, 717, 676, 676, 51, 51, 52, 52, 52, - /* 810 */ 52, 322, 50, 50, 50, 50, 49, 49, 48, 48, - /* 820 */ 48, 47, 216, 432, 1109, 81, 206, 205, 204, 53, - /* 830 */ 54, 427, 290, 717, 426, 676, 676, 51, 51, 52, - /* 840 */ 52, 52, 52, 345, 50, 50, 50, 50, 49, 49, - /* 850 */ 48, 48, 48, 47, 216, 598, 716, 667, 601, 463, - /* 860 */ 667, 412, 32, 717, 658, 90, 13, 895, 721, 669, - /* 870 */ 668, 610, 725, 435, 81, 657, 715, 714, 686, 715, - /* 880 */ 714, 715, 714, 42, 529, 273, 715, 714, 611, 350, - /* 890 */ 529, 451, 89, 678, 13, 634, 634, 339, 637, 610, - /* 900 */ 39, 40, 650, 610, 715, 714, 717, 41, 1143, 1143, - /* 910 */ 717, 525, 683, 582, 717, 4, 611, 469, 61, 451, - /* 920 */ 643, 208, 423, 507, 61, 688, 430, 678, 33, 109, - /* 930 */ 691, 610, 501, 502, 353, 715, 714, 643, 690, 689, - /* 940 */ 688, 429, 901, 901, 468, 467, 553, 466, 422, 384, - /* 950 */ 508, 510, 142, 509, 431, 441, 69, 1143, 1143, 716, - /* 960 */ 445, 723, 687, 182, 647, 715, 714, 646, 231, 230, - /* 970 */ 438, 643, 357, 677, 9, 643, 418, 445, 53, 54, - /* 980 */ 427, 290, 91, 91, 676, 676, 51, 51, 52, 52, - /* 990 */ 52, 52, 645, 50, 50, 50, 50, 49, 49, 48, - /* 1000 */ 48, 48, 47, 216, 1035, 445, 669, 668, 715, 714, - /* 1010 */ 91, 454, 715, 714, 683, 642, 715, 714, 325, 202, - /* 1020 */ 53, 54, 427, 290, 447, 681, 676, 676, 51, 51, - /* 1030 */ 52, 52, 52, 52, 640, 50, 50, 50, 50, 49, - /* 1040 */ 49, 48, 48, 48, 47, 216, 606, 53, 54, 427, - /* 1050 */ 290, 717, 447, 676, 676, 51, 51, 52, 52, 52, - /* 1060 */ 52, 460, 50, 50, 50, 50, 49, 49, 48, 48, - /* 1070 */ 48, 47, 216, 454, 716, 37, 664, 424, 215, 461, - /* 1080 */ 342, 370, 593, 53, 54, 427, 290, 639, 89, 676, - /* 1090 */ 676, 51, 51, 52, 52, 52, 52, 32, 50, 50, - /* 1100 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 414, - /* 1110 */ 724, 2, 12, 53, 54, 427, 290, 34, 589, 676, - /* 1120 */ 676, 51, 51, 52, 52, 52, 52, 625, 50, 50, - /* 1130 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 516, - /* 1140 */ 716, 538, 30, 91, 343, 667, 140, 136, 572, 53, - /* 1150 */ 54, 427, 290, 715, 714, 676, 676, 51, 51, 52, - /* 1160 */ 52, 52, 52, 549, 50, 50, 50, 50, 49, 49, - /* 1170 */ 48, 48, 48, 47, 216, 91, 717, 234, 387, 53, - /* 1180 */ 54, 427, 290, 339, 272, 676, 676, 51, 51, 52, - /* 1190 */ 52, 52, 52, 334, 50, 50, 50, 50, 49, 49, - /* 1200 */ 48, 48, 48, 47, 216, 533, 8, 518, 697, 87, - /* 1210 */ 137, 53, 54, 427, 290, 23, 558, 676, 676, 51, - /* 1220 */ 51, 52, 52, 52, 52, 135, 50, 50, 50, 50, - /* 1230 */ 49, 49, 48, 48, 48, 47, 216, 81, 1110, 91, - /* 1240 */ 717, 91, 53, 54, 427, 290, 616, 723, 676, 676, - /* 1250 */ 51, 51, 52, 52, 52, 52, 605, 50, 50, 50, - /* 1260 */ 50, 49, 49, 48, 48, 48, 47, 216, 99, 1108, - /* 1270 */ 391, 505, 389, 492, 53, 54, 427, 290, 715, 714, - /* 1280 */ 676, 676, 51, 51, 52, 52, 52, 52, 621, 50, - /* 1290 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216, - /* 1300 */ 683, 53, 58, 427, 290, 683, 600, 676, 676, 51, - /* 1310 */ 51, 52, 52, 52, 52, 429, 50, 50, 50, 50, - /* 1320 */ 49, 49, 48, 48, 48, 47, 216, 432, 431, 717, - /* 1330 */ 5, 621, 226, 633, 492, 632, 687, 187, 426, 54, - /* 1340 */ 427, 290, 715, 714, 676, 676, 51, 51, 52, 52, - /* 1350 */ 52, 52, 717, 50, 50, 50, 50, 49, 49, 48, - /* 1360 */ 48, 48, 47, 216, 553, 412, 288, 599, 287, 717, - /* 1370 */ 404, 388, 429, 698, 69, 613, 252, 716, 429, 716, - /* 1380 */ 405, 716, 686, 30, 209, 431, 209, 42, 626, 317, - /* 1390 */ 489, 431, 597, 687, 187, 429, 223, 309, 540, 687, - /* 1400 */ 187, 329, 683, 717, 39, 40, 11, 683, 431, 287, - /* 1410 */ 432, 41, 621, 654, 91, 592, 687, 92, 556, 4, - /* 1420 */ 571, 426, 716, 625, 643, 537, 423, 404, 406, 688, - /* 1430 */ 430, 715, 714, 333, 691, 717, 716, 429, 717, 591, - /* 1440 */ 717, 643, 690, 689, 688, 107, 317, 652, 412, 531, - /* 1450 */ 431, 590, 317, 717, 715, 714, 612, 830, 687, 187, - /* 1460 */ 429, 225, 326, 717, 541, 686, 526, 417, 20, 642, - /* 1470 */ 42, 715, 714, 431, 683, 643, 717, 677, 9, 643, - /* 1480 */ 531, 687, 187, 526, 562, 717, 621, 39, 40, 327, - /* 1490 */ 376, 65, 64, 432, 41, 274, 19, 266, 371, 535, - /* 1500 */ 535, 267, 4, 271, 426, 715, 714, 643, 421, 423, - /* 1510 */ 716, 407, 688, 430, 286, 400, 717, 691, 717, 280, - /* 1520 */ 717, 63, 129, 429, 643, 690, 689, 688, 367, 717, - /* 1530 */ 603, 412, 520, 534, 317, 515, 431, 715, 714, 156, - /* 1540 */ 715, 714, 715, 714, 687, 192, 717, 209, 686, 520, - /* 1550 */ 480, 465, 515, 42, 717, 715, 714, 3, 643, 717, - /* 1560 */ 677, 9, 643, 717, 716, 715, 714, 480, 138, 125, - /* 1570 */ 39, 40, 85, 476, 79, 432, 683, 41, 715, 714, - /* 1580 */ 27, 429, 473, 511, 717, 4, 426, 715, 714, 517, - /* 1590 */ 643, 532, 423, 408, 431, 688, 430, 642, 26, 719, - /* 1600 */ 691, 717, 687, 181, 77, 476, 506, 643, 690, 689, - /* 1610 */ 688, 620, 716, 412, 354, 470, 706, 439, 715, 714, - /* 1620 */ 715, 714, 715, 714, 261, 288, 717, 473, 221, 504, - /* 1630 */ 686, 715, 714, 704, 439, 42, 717, 716, 716, 568, - /* 1640 */ 83, 643, 140, 677, 9, 643, 498, 1036, 715, 714, - /* 1650 */ 702, 284, 39, 40, 254, 642, 715, 714, 432, 41, - /* 1660 */ 328, 715, 714, 429, 716, 715, 714, 4, 1038, 426, - /* 1670 */ 119, 10, 643, 503, 423, 707, 431, 688, 430, 470, - /* 1680 */ 429, 161, 691, 251, 687, 163, 715, 714, 716, 643, - /* 1690 */ 690, 689, 688, 431, 717, 429, 412, 152, 479, 456, - /* 1700 */ 455, 687, 172, 715, 714, 72, 652, 705, 431, 429, - /* 1710 */ 630, 312, 111, 686, 530, 338, 687, 190, 42, 437, - /* 1720 */ 716, 622, 431, 643, 96, 677, 9, 643, 715, 714, - /* 1730 */ 687, 188, 209, 717, 207, 39, 40, 642, 715, 714, - /* 1740 */ 432, 224, 41, 617, 86, 429, 703, 717, 203, 429, - /* 1750 */ 4, 426, 320, 720, 642, 643, 150, 423, 431, 716, - /* 1760 */ 688, 430, 431, 700, 429, 691, 687, 196, 475, 642, - /* 1770 */ 687, 195, 643, 690, 689, 688, 716, 431, 412, 717, - /* 1780 */ 319, 710, 717, 642, 522, 687, 197, 709, 708, 258, - /* 1790 */ 499, 429, 434, 220, 500, 686, 715, 714, 625, 16, - /* 1800 */ 42, 717, 716, 257, 431, 717, 643, 256, 677, 9, - /* 1810 */ 643, 716, 687, 201, 717, 351, 716, 39, 40, 642, - /* 1820 */ 149, 248, 432, 642, 41, 482, 147, 246, 433, 442, - /* 1830 */ 368, 478, 4, 426, 716, 715, 714, 643, 642, 423, - /* 1840 */ 716, 717, 715, 430, 82, 701, 429, 691, 685, 715, - /* 1850 */ 714, 145, 495, 234, 643, 690, 689, 688, 429, 431, - /* 1860 */ 412, 559, 244, 284, 352, 642, 474, 687, 232, 18, - /* 1870 */ 242, 431, 401, 429, 471, 716, 716, 686, 295, 687, - /* 1880 */ 291, 715, 714, 716, 715, 714, 431, 294, 643, 696, - /* 1890 */ 677, 9, 643, 542, 687, 191, 528, 293, 680, 39, - /* 1900 */ 40, 717, 716, 715, 714, 429, 41, 715, 714, 429, - /* 1910 */ 490, 716, 292, 29, 4, 493, 715, 714, 431, 643, - /* 1920 */ 642, 423, 431, 227, 688, 430, 687, 194, 429, 691, - /* 1930 */ 687, 193, 642, 429, 477, 429, 643, 690, 689, 688, - /* 1940 */ 429, 431, 717, 715, 714, 429, 431, 642, 431, 687, - /* 1950 */ 185, 717, 403, 431, 687, 189, 687, 315, 431, 717, - /* 1960 */ 216, 687, 314, 429, 409, 684, 687, 313, 717, 429, - /* 1970 */ 643, 56, 677, 9, 643, 44, 431, 716, 717, 642, - /* 1980 */ 638, 627, 431, 642, 687, 184, 623, 420, 236, 653, - /* 1990 */ 687, 171, 323, 716, 716, 641, 229, 66, 214, 716, - /* 2000 */ 429, 716, 642, 715, 714, 618, 35, 642, 228, 642, - /* 2010 */ 429, 133, 394, 431, 642, 524, 276, 429, 716, 642, - /* 2020 */ 429, 687, 170, 431, 716, 716, 636, 569, 416, 716, - /* 2030 */ 431, 687, 183, 431, 429, 550, 429, 642, 687, 169, - /* 2040 */ 716, 687, 186, 642, 715, 714, 429, 431, 716, 431, - /* 2050 */ 141, 429, 108, 715, 714, 687, 168, 687, 167, 431, - /* 2060 */ 139, 715, 714, 270, 431, 519, 429, 687, 93, 390, - /* 2070 */ 715, 714, 687, 166, 642, 717, 716, 429, 584, 431, - /* 2080 */ 715, 714, 481, 429, 642, 717, 381, 687, 164, 717, - /* 2090 */ 431, 642, 444, 579, 642, 578, 431, 387, 687, 174, - /* 2100 */ 429, 263, 429, 472, 687, 173, 429, 331, 642, 278, - /* 2110 */ 642, 574, 575, 431, 716, 431, 429, 361, 464, 431, - /* 2120 */ 642, 687, 175, 687, 178, 642, 429, 687, 94, 431, - /* 2130 */ 716, 429, 573, 429, 555, 548, 348, 687, 177, 431, - /* 2140 */ 642, 547, 546, 545, 431, 429, 431, 687, 176, 716, - /* 2150 */ 393, 642, 687, 180, 687, 179, 443, 642, 431, 536, - /* 2160 */ 428, 128, 285, 431, 311, 310, 687, 165, 80, 716, - /* 2170 */ 264, 687, 70, 716, 642, 716, 642, 715, 714, 366, - /* 2180 */ 642, 649, 253, 716, 106, 250, 127, 715, 714, 241, - /* 2190 */ 642, 715, 714, 237, 126, 716, 238, 262, 716, 355, - /* 2200 */ 642, 212, 716, 25, 124, 642, 716, 642, 527, 716, - /* 2210 */ 364, 78, 105, 123, 121, 155, 84, 514, 104, 642, - /* 2220 */ 120, 349, 494, 624, 642, 346, 103, 118, 76, 344, - /* 2230 */ 117, 75, 116, 115, 74, 73, 114, 521, 324, 113, - /* 2240 */ 24, 452, 450, 21, 101, 100, 112, 446, 62, 440, - /* 2250 */ 162, 296, 670, 666, 656, 413, 279, 619, 570, 198, - /* 2260 */ 629, 375, 523, 260, 362, 306, 6, 71, 682, 665, - /* 2270 */ 655, 557, 211, 297, 410, 567, 365, 46, 551, 561, - /* 2280 */ 560, 488, 588, 81, 587, + /* 0 */ 432, 565, 566, 717, 50, 50, 49, 49, 49, 48, + /* 10 */ 215, 420, 53, 53, 53, 53, 28, 51, 51, 51, + /* 20 */ 51, 50, 50, 49, 49, 49, 48, 215, 717, 1026, + /* 30 */ 1026, 336, 666, 665, 53, 53, 53, 53, 425, 51, + /* 40 */ 51, 51, 51, 50, 50, 49, 49, 49, 48, 215, + /* 50 */ 722, 81, 205, 204, 203, 672, 592, 592, 1026, 1026, + /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 70 */ 1026, 1026, 639, 1026, 1026, 1026, 1026, 38, 39, 1026, + /* 80 */ 1026, 1026, 1026, 1026, 40, 432, 529, 285, 717, 56, + /* 90 */ 108, 684, 3, 717, 668, 301, 420, 678, 661, 417, + /* 100 */ 716, 67, 688, 430, 552, 715, 714, 691, 130, 331, + /* 110 */ 60, 377, 374, 373, 678, 690, 689, 688, 674, 507, + /* 120 */ 61, 216, 717, 425, 49, 49, 49, 48, 215, 372, + /* 130 */ 715, 714, 212, 131, 1143, 1143, 242, 629, 246, 674, + /* 140 */ 672, 421, 685, 48, 215, 41, 508, 510, 678, 509, + /* 150 */ 9, 678, 33, 669, 144, 95, 281, 380, 276, 379, + /* 160 */ 132, 674, 38, 39, 609, 229, 228, 7, 356, 40, + /* 170 */ 885, 717, 403, 717, 274, 484, 685, 3, 885, 529, + /* 180 */ 248, 610, 678, 68, 417, 885, 411, 688, 430, 209, + /* 190 */ 715, 714, 691, 684, 457, 715, 714, 717, 209, 678, + /* 200 */ 690, 689, 688, 663, 662, 432, 453, 459, 460, 458, + /* 210 */ 306, 486, 507, 61, 717, 885, 420, 885, 885, 492, + /* 220 */ 725, 716, 320, 885, 715, 714, 461, 462, 885, 885, + /* 230 */ 885, 885, 885, 678, 297, 9, 678, 772, 669, 508, + /* 240 */ 510, 687, 509, 425, 717, 339, 244, 51, 51, 51, + /* 250 */ 51, 50, 50, 49, 49, 49, 48, 215, 543, 570, + /* 260 */ 672, 357, 713, 283, 688, 41, 544, 711, 448, 691, + /* 270 */ 445, 577, 712, 715, 714, 715, 714, 690, 689, 688, + /* 280 */ 492, 576, 38, 39, 449, 448, 512, 445, 487, 40, + /* 290 */ 947, 463, 661, 389, 497, 603, 602, 3, 947, 715, + /* 300 */ 714, 230, 678, 684, 417, 947, 13, 688, 430, 723, + /* 310 */ 17, 617, 691, 448, 513, 445, 715, 714, 81, 678, + /* 320 */ 690, 689, 688, 307, 1135, 679, 460, 654, 618, 360, + /* 330 */ 774, 1135, 1028, 1028, 89, 947, 1, 947, 947, 716, + /* 340 */ 110, 595, 716, 617, 461, 342, 715, 714, 947, 947, + /* 350 */ 947, 947, 1080, 678, 692, 9, 678, 497, 669, 693, + /* 360 */ 717, 54, 55, 427, 295, 1028, 1028, 681, 681, 52, + /* 370 */ 52, 53, 53, 53, 53, 717, 51, 51, 51, 51, + /* 380 */ 50, 50, 49, 49, 49, 48, 215, 432, 496, 382, + /* 390 */ 717, 553, 347, 254, 363, 258, 298, 139, 420, 218, + /* 400 */ 539, 69, 286, 287, 716, 684, 143, 231, 390, 343, + /* 410 */ 661, 54, 55, 427, 295, 716, 716, 681, 681, 52, + /* 420 */ 52, 53, 53, 53, 53, 425, 51, 51, 51, 51, + /* 430 */ 50, 50, 49, 49, 49, 48, 215, 684, 954, 608, + /* 440 */ 628, 692, 672, 663, 662, 585, 693, 41, 429, 207, + /* 450 */ 601, 491, 388, 954, 130, 652, 499, 377, 374, 373, + /* 460 */ 500, 431, 715, 714, 38, 39, 651, 199, 198, 673, + /* 470 */ 186, 40, 932, 699, 685, 372, 717, 715, 714, 3, + /* 480 */ 932, 351, 57, 653, 678, 616, 417, 932, 135, 688, + /* 490 */ 430, 59, 688, 157, 691, 717, 680, 691, 340, 1046, + /* 500 */ 954, 678, 690, 689, 688, 690, 689, 688, 685, 419, + /* 510 */ 666, 665, 724, 2, 1028, 1028, 636, 932, 208, 932, + /* 520 */ 932, 43, 386, 141, 294, 615, 611, 264, 284, 267, + /* 530 */ 932, 139, 932, 932, 122, 678, 400, 9, 678, 684, + /* 540 */ 669, 716, 142, 54, 55, 427, 295, 1028, 1028, 681, + /* 550 */ 681, 52, 52, 53, 53, 53, 53, 339, 51, 51, + /* 560 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 652, + /* 570 */ 91, 299, 483, 483, 628, 717, 661, 717, 715, 714, + /* 580 */ 651, 18, 717, 605, 717, 37, 677, 399, 311, 717, + /* 590 */ 34, 535, 535, 1028, 1028, 427, 295, 715, 714, 681, + /* 600 */ 681, 52, 52, 53, 53, 53, 53, 234, 51, 51, + /* 610 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 1027, + /* 620 */ 1027, 723, 54, 55, 427, 295, 1028, 1028, 681, 681, + /* 630 */ 52, 52, 53, 53, 53, 53, 42, 51, 51, 51, + /* 640 */ 51, 50, 50, 49, 49, 49, 48, 215, 1027, 1027, + /* 650 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 660 */ 1027, 1027, 717, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 670 */ 1027, 1027, 1027, 1027, 1028, 1028, 718, 715, 714, 715, + /* 680 */ 714, 454, 324, 201, 715, 714, 715, 714, 321, 695, + /* 690 */ 315, 715, 714, 658, 554, 214, 676, 46, 568, 32, + /* 700 */ 81, 88, 675, 54, 55, 427, 295, 1028, 1028, 681, + /* 710 */ 681, 52, 52, 53, 53, 53, 53, 1095, 51, 51, + /* 720 */ 51, 51, 50, 50, 49, 49, 49, 48, 215, 54, + /* 730 */ 55, 427, 295, 667, 423, 681, 681, 52, 52, 53, + /* 740 */ 53, 53, 53, 454, 51, 51, 51, 51, 50, 50, + /* 750 */ 49, 49, 49, 48, 215, 358, 955, 656, 643, 1150, + /* 760 */ 154, 436, 2, 487, 715, 714, 350, 54, 55, 427, + /* 770 */ 295, 955, 484, 681, 681, 52, 52, 53, 53, 53, + /* 780 */ 53, 160, 51, 51, 51, 51, 50, 50, 49, 49, + /* 790 */ 49, 48, 215, 600, 1095, 22, 717, 280, 307, 1134, + /* 800 */ 34, 717, 501, 502, 353, 629, 1134, 306, 485, 697, + /* 810 */ 268, 717, 229, 228, 337, 279, 717, 558, 955, 54, + /* 820 */ 55, 427, 295, 716, 717, 681, 681, 52, 52, 53, + /* 830 */ 53, 53, 53, 655, 51, 51, 51, 51, 50, 50, + /* 840 */ 49, 49, 49, 48, 215, 432, 1109, 81, 717, 225, + /* 850 */ 663, 662, 54, 55, 427, 295, 420, 153, 681, 681, + /* 860 */ 52, 52, 53, 53, 53, 53, 641, 51, 51, 51, + /* 870 */ 51, 50, 50, 49, 49, 49, 48, 215, 586, 89, + /* 880 */ 717, 231, 390, 425, 15, 717, 694, 413, 13, 895, + /* 890 */ 721, 207, 601, 617, 388, 435, 81, 574, 715, 714, + /* 900 */ 672, 272, 553, 715, 714, 41, 529, 537, 89, 14, + /* 910 */ 618, 698, 69, 715, 714, 716, 13, 209, 715, 714, + /* 920 */ 359, 617, 38, 39, 159, 617, 715, 714, 645, 40, + /* 930 */ 1143, 1143, 717, 345, 222, 674, 540, 3, 618, 469, + /* 940 */ 61, 285, 678, 625, 417, 473, 716, 688, 430, 45, + /* 950 */ 715, 714, 691, 617, 716, 416, 674, 402, 581, 678, + /* 960 */ 690, 689, 688, 429, 901, 901, 468, 467, 284, 466, + /* 970 */ 629, 81, 706, 633, 495, 580, 431, 526, 674, 1143, + /* 980 */ 1143, 716, 715, 714, 673, 92, 716, 715, 714, 91, + /* 990 */ 473, 401, 438, 678, 526, 9, 678, 370, 669, 409, + /* 1000 */ 54, 55, 427, 295, 89, 505, 681, 681, 52, 52, + /* 1010 */ 53, 53, 53, 53, 620, 51, 51, 51, 51, 50, + /* 1020 */ 50, 49, 49, 49, 48, 215, 717, 638, 311, 717, + /* 1030 */ 406, 658, 418, 214, 715, 714, 90, 642, 131, 334, + /* 1040 */ 415, 644, 54, 55, 427, 295, 451, 640, 681, 681, + /* 1050 */ 52, 52, 53, 53, 53, 53, 158, 51, 51, 51, + /* 1060 */ 51, 50, 50, 49, 49, 49, 48, 215, 369, 54, + /* 1070 */ 55, 427, 295, 12, 451, 681, 681, 52, 52, 53, + /* 1080 */ 53, 53, 53, 633, 51, 51, 51, 51, 50, 50, + /* 1090 */ 49, 49, 49, 48, 215, 36, 716, 8, 209, 54, + /* 1100 */ 55, 427, 295, 34, 589, 681, 681, 52, 52, 53, + /* 1110 */ 53, 53, 53, 704, 51, 51, 51, 51, 50, 50, + /* 1120 */ 49, 49, 49, 48, 215, 87, 138, 320, 715, 714, + /* 1130 */ 412, 715, 714, 274, 572, 54, 55, 427, 295, 30, + /* 1140 */ 624, 681, 681, 52, 52, 53, 53, 53, 53, 326, + /* 1150 */ 51, 51, 51, 51, 50, 50, 49, 49, 49, 48, + /* 1160 */ 215, 408, 717, 137, 91, 54, 55, 427, 295, 614, + /* 1170 */ 271, 681, 681, 52, 52, 53, 53, 53, 53, 465, + /* 1180 */ 51, 51, 51, 51, 50, 50, 49, 49, 49, 48, + /* 1190 */ 215, 136, 716, 538, 612, 91, 99, 54, 55, 427, + /* 1200 */ 295, 23, 607, 681, 681, 52, 52, 53, 53, 53, + /* 1210 */ 53, 395, 51, 51, 51, 51, 50, 50, 49, 49, + /* 1220 */ 49, 48, 215, 533, 1110, 516, 717, 91, 54, 55, + /* 1230 */ 427, 295, 141, 393, 681, 681, 52, 52, 53, 53, + /* 1240 */ 53, 53, 5, 51, 51, 51, 51, 50, 50, 49, + /* 1250 */ 49, 49, 48, 215, 717, 1108, 606, 91, 717, 476, + /* 1260 */ 54, 55, 427, 295, 715, 714, 681, 681, 52, 52, + /* 1270 */ 53, 53, 53, 53, 684, 51, 51, 51, 51, 50, + /* 1280 */ 50, 49, 49, 49, 48, 215, 684, 54, 58, 427, + /* 1290 */ 295, 476, 717, 681, 681, 52, 52, 53, 53, 53, + /* 1300 */ 53, 633, 51, 51, 51, 51, 50, 50, 49, 49, + /* 1310 */ 49, 48, 215, 432, 716, 251, 518, 604, 1035, 11, + /* 1320 */ 107, 629, 36, 531, 420, 55, 427, 295, 715, 714, + /* 1330 */ 681, 681, 52, 52, 53, 53, 53, 53, 224, 51, + /* 1340 */ 51, 51, 51, 50, 50, 49, 49, 49, 48, 215, + /* 1350 */ 91, 425, 717, 583, 531, 582, 715, 714, 429, 20, + /* 1360 */ 715, 714, 429, 684, 429, 619, 384, 352, 672, 562, + /* 1370 */ 387, 431, 623, 41, 489, 431, 684, 431, 657, 673, + /* 1380 */ 186, 308, 717, 673, 186, 673, 186, 622, 684, 470, + /* 1390 */ 38, 39, 599, 597, 715, 714, 432, 40, 719, 683, + /* 1400 */ 91, 830, 634, 596, 91, 3, 571, 420, 541, 591, + /* 1410 */ 678, 716, 417, 391, 385, 688, 430, 332, 707, 333, + /* 1420 */ 691, 525, 429, 582, 717, 65, 429, 678, 690, 689, + /* 1430 */ 688, 716, 316, 717, 425, 431, 316, 564, 316, 431, + /* 1440 */ 717, 590, 376, 673, 186, 64, 429, 673, 186, 429, + /* 1450 */ 273, 672, 19, 470, 715, 714, 41, 371, 378, 431, + /* 1460 */ 684, 678, 431, 9, 678, 684, 669, 673, 186, 563, + /* 1470 */ 673, 92, 717, 38, 39, 63, 648, 391, 383, 432, + /* 1480 */ 40, 391, 392, 129, 715, 714, 717, 279, 3, 270, + /* 1490 */ 420, 367, 613, 678, 705, 417, 316, 534, 688, 430, + /* 1500 */ 316, 404, 4, 691, 717, 553, 717, 716, 156, 284, + /* 1510 */ 678, 690, 689, 688, 441, 69, 325, 425, 716, 630, + /* 1520 */ 316, 717, 716, 642, 125, 79, 715, 714, 703, 27, + /* 1530 */ 26, 85, 517, 77, 672, 715, 714, 520, 447, 41, + /* 1540 */ 717, 716, 715, 714, 678, 549, 9, 678, 717, 669, + /* 1550 */ 511, 329, 700, 506, 520, 354, 38, 39, 504, 702, + /* 1560 */ 83, 432, 684, 40, 265, 716, 447, 286, 266, 226, + /* 1570 */ 141, 3, 420, 556, 715, 714, 678, 716, 417, 696, + /* 1580 */ 716, 688, 430, 515, 686, 422, 691, 717, 715, 714, + /* 1590 */ 498, 429, 716, 678, 690, 689, 688, 716, 716, 425, + /* 1600 */ 515, 480, 335, 439, 431, 253, 715, 714, 715, 714, + /* 1610 */ 119, 479, 673, 194, 250, 260, 672, 717, 480, 220, + /* 1620 */ 439, 41, 717, 715, 714, 10, 152, 678, 716, 9, + /* 1630 */ 678, 161, 669, 1036, 286, 594, 456, 455, 38, 39, + /* 1640 */ 72, 111, 715, 714, 432, 40, 635, 716, 646, 429, + /* 1650 */ 715, 714, 338, 3, 1038, 420, 437, 209, 678, 716, + /* 1660 */ 417, 202, 431, 688, 430, 642, 429, 96, 691, 221, + /* 1670 */ 673, 181, 631, 717, 223, 678, 690, 689, 688, 431, + /* 1680 */ 717, 429, 425, 206, 86, 716, 717, 673, 185, 715, + /* 1690 */ 714, 319, 626, 257, 431, 429, 522, 219, 720, 672, + /* 1700 */ 530, 559, 673, 189, 41, 716, 716, 318, 431, 678, + /* 1710 */ 710, 9, 678, 717, 669, 646, 673, 187, 490, 715, + /* 1720 */ 714, 38, 39, 642, 715, 714, 432, 150, 40, 134, + /* 1730 */ 709, 542, 429, 717, 149, 429, 3, 420, 708, 286, + /* 1740 */ 642, 678, 716, 417, 434, 431, 688, 430, 431, 286, + /* 1750 */ 429, 691, 716, 673, 195, 642, 673, 193, 678, 690, + /* 1760 */ 689, 688, 716, 431, 425, 398, 256, 621, 368, 642, + /* 1770 */ 255, 673, 196, 147, 328, 715, 714, 429, 716, 716, + /* 1780 */ 716, 672, 715, 714, 327, 82, 41, 433, 715, 714, + /* 1790 */ 431, 16, 678, 701, 9, 678, 598, 669, 673, 200, + /* 1800 */ 503, 532, 145, 38, 39, 215, 642, 232, 432, 642, + /* 1810 */ 40, 47, 671, 247, 31, 715, 714, 482, 3, 420, + /* 1820 */ 646, 275, 475, 678, 642, 417, 716, 528, 715, 430, + /* 1830 */ 646, 569, 429, 691, 716, 715, 714, 550, 231, 291, + /* 1840 */ 678, 690, 689, 688, 716, 431, 425, 524, 245, 18, + /* 1850 */ 716, 642, 478, 673, 233, 98, 290, 239, 243, 217, + /* 1860 */ 429, 716, 474, 672, 717, 241, 35, 405, 238, 471, + /* 1870 */ 303, 716, 289, 431, 678, 288, 9, 678, 716, 669, + /* 1880 */ 235, 673, 296, 670, 322, 38, 39, 414, 102, 44, + /* 1890 */ 717, 300, 40, 716, 407, 302, 148, 66, 227, 151, + /* 1900 */ 3, 213, 81, 269, 97, 678, 642, 417, 410, 140, + /* 1910 */ 688, 430, 717, 262, 429, 691, 716, 361, 109, 348, + /* 1920 */ 394, 390, 678, 690, 689, 688, 716, 431, 584, 429, + /* 1930 */ 716, 429, 716, 429, 642, 673, 192, 593, 133, 304, + /* 1940 */ 717, 146, 431, 381, 431, 579, 431, 429, 277, 429, + /* 1950 */ 673, 184, 673, 172, 673, 163, 678, 578, 9, 678, + /* 1960 */ 431, 669, 431, 330, 429, 575, 715, 714, 673, 171, + /* 1970 */ 673, 183, 717, 574, 717, 573, 429, 431, 317, 310, + /* 1980 */ 548, 555, 443, 547, 546, 673, 188, 429, 642, 431, + /* 1990 */ 545, 309, 715, 714, 536, 716, 128, 673, 314, 428, + /* 2000 */ 431, 80, 127, 642, 519, 642, 429, 642, 673, 313, + /* 2010 */ 366, 429, 716, 341, 715, 714, 717, 106, 429, 431, + /* 2020 */ 211, 642, 261, 642, 431, 472, 493, 673, 312, 126, + /* 2030 */ 717, 431, 673, 170, 355, 429, 282, 25, 642, 673, + /* 2040 */ 93, 429, 715, 714, 124, 527, 429, 263, 431, 716, + /* 2050 */ 642, 429, 252, 78, 431, 105, 673, 169, 249, 431, + /* 2060 */ 716, 642, 673, 168, 431, 716, 429, 673, 166, 429, + /* 2070 */ 84, 716, 673, 165, 715, 714, 715, 714, 717, 431, + /* 2080 */ 642, 717, 431, 429, 123, 642, 444, 673, 182, 429, + /* 2090 */ 673, 164, 642, 240, 236, 364, 431, 717, 121, 464, + /* 2100 */ 429, 717, 431, 477, 673, 190, 716, 716, 717, 642, + /* 2110 */ 673, 191, 442, 431, 429, 642, 155, 429, 715, 714, + /* 2120 */ 642, 673, 174, 717, 429, 642, 514, 431, 429, 237, + /* 2130 */ 431, 429, 715, 714, 429, 673, 173, 431, 673, 175, + /* 2140 */ 642, 431, 716, 642, 431, 673, 178, 431, 429, 673, + /* 2150 */ 94, 349, 673, 177, 429, 673, 176, 642, 104, 120, + /* 2160 */ 494, 431, 103, 642, 429, 346, 118, 431, 344, 673, + /* 2170 */ 180, 117, 76, 75, 642, 673, 179, 431, 647, 116, + /* 2180 */ 715, 714, 74, 715, 714, 673, 167, 115, 642, 73, + /* 2190 */ 114, 642, 481, 643, 323, 113, 397, 24, 642, 715, + /* 2200 */ 714, 452, 642, 715, 714, 642, 21, 450, 642, 431, + /* 2210 */ 715, 714, 101, 100, 446, 112, 62, 673, 70, 440, + /* 2220 */ 162, 292, 642, 664, 552, 715, 714, 570, 642, 632, + /* 2230 */ 426, 650, 637, 627, 278, 197, 375, 660, 642, 259, + /* 2240 */ 362, 523, 6, 305, 682, 659, 649, 557, 210, 521, + /* 2250 */ 29, 365, 424, 293, 71, 567, 561, 560, 488, 588, + /* 2260 */ 587, 81, 551, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + /* 2270 */ 642, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 4, 81, 82, 83, 84, 85, 86, 87, 4, 58, - /* 10 */ 5, 15, 72, 73, 74, 75, 76, 77, 78, 79, - /* 20 */ 80, 81, 82, 83, 84, 85, 86, 87, 89, 33, - /* 30 */ 34, 26, 34, 28, 72, 73, 74, 75, 42, 77, + /* 0 */ 4, 110, 111, 4, 81, 82, 83, 84, 85, 86, + /* 10 */ 87, 15, 72, 73, 74, 75, 76, 77, 78, 79, + /* 20 */ 80, 81, 82, 83, 84, 85, 86, 87, 4, 33, + /* 30 */ 34, 194, 195, 196, 72, 73, 74, 75, 42, 77, /* 40 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 50 */ 45, 55, 96, 48, 98, 59, 93, 104, 62, 63, + /* 50 */ 89, 55, 124, 125, 126, 59, 33, 34, 62, 63, /* 60 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - /* 70 */ 74, 75, 14, 77, 78, 79, 80, 81, 82, 83, - /* 80 */ 84, 85, 86, 87, 88, 4, 185, 134, 4, 136, - /* 90 */ 137, 111, 96, 35, 4, 104, 15, 101, 104, 103, - /* 100 */ 96, 107, 106, 107, 46, 101, 61, 111, 64, 129, - /* 110 */ 106, 107, 110, 111, 118, 119, 120, 121, 167, 218, - /* 120 */ 219, 123, 118, 42, 83, 84, 85, 86, 87, 104, - /* 130 */ 51, 87, 53, 142, 138, 139, 61, 133, 144, 145, - /* 140 */ 59, 96, 97, 59, 4, 64, 245, 246, 152, 248, - /* 150 */ 154, 155, 156, 109, 110, 111, 112, 113, 114, 115, - /* 160 */ 97, 4, 81, 82, 83, 81, 82, 266, 267, 88, - /* 170 */ 89, 96, 97, 129, 95, 4, 151, 96, 97, 104, - /* 180 */ 96, 91, 101, 4, 103, 104, 128, 106, 107, 4, - /* 190 */ 106, 5, 111, 106, 15, 111, 106, 107, 111, 118, - /* 200 */ 119, 120, 121, 119, 120, 121, 119, 120, 121, 8, - /* 210 */ 4, 10, 26, 12, 28, 134, 61, 136, 137, 61, - /* 220 */ 4, 42, 21, 142, 23, 214, 45, 216, 147, 148, - /* 230 */ 149, 150, 151, 152, 48, 154, 155, 156, 59, 96, - /* 240 */ 161, 97, 41, 64, 177, 44, 106, 107, 104, 48, - /* 250 */ 49, 96, 97, 52, 96, 97, 55, 190, 57, 104, - /* 260 */ 81, 82, 105, 106, 107, 99, 109, 88, 89, 112, - /* 270 */ 113, 114, 101, 86, 87, 96, 97, 106, 107, 212, - /* 280 */ 101, 4, 103, 104, 144, 106, 107, 130, 117, 118, - /* 290 */ 111, 106, 107, 92, 51, 94, 53, 118, 119, 120, - /* 300 */ 121, 177, 96, 118, 135, 124, 125, 126, 177, 140, - /* 310 */ 33, 34, 106, 134, 190, 136, 137, 146, 102, 138, - /* 320 */ 139, 190, 106, 107, 99, 258, 147, 148, 149, 150, - /* 330 */ 99, 152, 131, 154, 155, 156, 212, 152, 95, 62, - /* 340 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - /* 350 */ 73, 74, 75, 4, 77, 78, 79, 80, 81, 82, - /* 360 */ 83, 84, 85, 86, 87, 4, 177, 166, 4, 194, - /* 370 */ 195, 196, 177, 177, 4, 98, 15, 252, 247, 190, - /* 380 */ 177, 185, 258, 106, 181, 190, 190, 198, 199, 62, - /* 390 */ 63, 64, 65, 190, 269, 68, 69, 70, 71, 72, - /* 400 */ 73, 74, 75, 42, 77, 78, 79, 80, 81, 82, - /* 410 */ 83, 84, 85, 86, 87, 219, 89, 4, 141, 19, - /* 420 */ 59, 232, 233, 109, 24, 64, 112, 113, 114, 29, - /* 430 */ 225, 104, 236, 237, 220, 221, 261, 223, 177, 234, - /* 440 */ 251, 97, 81, 82, 130, 81, 82, 4, 104, 88, - /* 450 */ 89, 190, 4, 258, 4, 106, 107, 96, 97, 198, - /* 460 */ 199, 99, 101, 249, 103, 104, 111, 106, 107, 71, - /* 470 */ 106, 107, 111, 34, 110, 105, 106, 107, 151, 118, - /* 480 */ 119, 120, 121, 119, 120, 220, 221, 123, 223, 125, - /* 490 */ 19, 43, 33, 34, 96, 134, 97, 136, 137, 40, - /* 500 */ 29, 152, 96, 64, 158, 244, 160, 83, 147, 96, - /* 510 */ 149, 150, 251, 152, 101, 154, 155, 156, 97, 106, - /* 520 */ 107, 62, 63, 64, 65, 66, 67, 68, 69, 70, - /* 530 */ 71, 72, 73, 74, 75, 97, 77, 78, 79, 80, - /* 540 */ 81, 82, 83, 84, 85, 86, 87, 9, 100, 106, - /* 550 */ 107, 101, 205, 206, 106, 107, 106, 107, 20, 135, - /* 560 */ 213, 118, 123, 104, 140, 123, 4, 190, 129, 4, - /* 570 */ 96, 33, 34, 64, 65, 198, 133, 68, 69, 70, - /* 580 */ 71, 72, 73, 74, 75, 143, 77, 78, 79, 80, - /* 590 */ 81, 82, 83, 84, 85, 86, 87, 33, 34, 55, - /* 600 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - /* 610 */ 72, 73, 74, 75, 164, 77, 78, 79, 80, 81, - /* 620 */ 82, 83, 84, 85, 86, 87, 62, 63, 64, 65, - /* 630 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - /* 640 */ 4, 77, 78, 79, 80, 81, 82, 83, 84, 85, - /* 650 */ 86, 87, 33, 34, 110, 77, 78, 79, 80, 81, - /* 660 */ 82, 83, 84, 85, 86, 87, 177, 177, 106, 107, - /* 670 */ 50, 106, 182, 108, 54, 104, 186, 187, 116, 190, - /* 680 */ 190, 62, 63, 64, 65, 66, 67, 68, 69, 70, - /* 690 */ 71, 72, 73, 74, 75, 12, 77, 78, 79, 80, - /* 700 */ 81, 82, 83, 84, 85, 86, 87, 62, 63, 64, - /* 710 */ 65, 98, 23, 68, 69, 70, 71, 72, 73, 74, - /* 720 */ 75, 96, 77, 78, 79, 80, 81, 82, 83, 84, - /* 730 */ 85, 86, 87, 113, 89, 188, 100, 101, 191, 192, - /* 740 */ 193, 97, 106, 107, 55, 62, 63, 64, 65, 104, - /* 750 */ 98, 68, 69, 70, 71, 72, 73, 74, 75, 30, - /* 760 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 770 */ 87, 96, 89, 38, 4, 97, 177, 4, 89, 4, - /* 780 */ 23, 161, 104, 104, 4, 170, 171, 172, 173, 190, - /* 790 */ 194, 195, 196, 64, 195, 196, 151, 62, 63, 64, - /* 800 */ 65, 122, 4, 68, 69, 70, 71, 72, 73, 74, - /* 810 */ 75, 179, 77, 78, 79, 80, 81, 82, 83, 84, - /* 820 */ 85, 86, 87, 4, 89, 55, 124, 125, 126, 62, - /* 830 */ 63, 64, 65, 4, 15, 68, 69, 70, 71, 72, - /* 840 */ 73, 74, 75, 177, 77, 78, 79, 80, 81, 82, - /* 850 */ 83, 84, 85, 86, 87, 97, 190, 261, 83, 260, - /* 860 */ 261, 42, 104, 4, 9, 98, 96, 97, 169, 119, - /* 870 */ 120, 101, 0, 174, 55, 20, 106, 107, 59, 106, - /* 880 */ 107, 106, 107, 64, 185, 97, 106, 107, 118, 257, - /* 890 */ 185, 118, 104, 118, 96, 33, 34, 25, 118, 101, - /* 900 */ 81, 82, 97, 133, 106, 107, 4, 88, 138, 139, - /* 910 */ 4, 214, 4, 216, 4, 96, 118, 218, 219, 146, - /* 920 */ 101, 96, 103, 218, 219, 106, 107, 152, 66, 67, - /* 930 */ 111, 133, 124, 125, 126, 106, 107, 118, 119, 120, - /* 940 */ 121, 177, 144, 145, 245, 246, 177, 248, 185, 185, - /* 950 */ 245, 246, 104, 248, 190, 186, 187, 138, 139, 190, - /* 960 */ 101, 89, 198, 199, 97, 106, 107, 97, 81, 82, - /* 970 */ 271, 152, 267, 154, 155, 156, 185, 118, 62, 63, - /* 980 */ 64, 65, 219, 219, 68, 69, 70, 71, 72, 73, - /* 990 */ 74, 75, 97, 77, 78, 79, 80, 81, 82, 83, - /* 1000 */ 84, 85, 86, 87, 158, 146, 119, 120, 106, 107, - /* 1010 */ 219, 101, 106, 107, 106, 251, 106, 107, 272, 273, - /* 1020 */ 62, 63, 64, 65, 118, 117, 68, 69, 70, 71, - /* 1030 */ 72, 73, 74, 75, 97, 77, 78, 79, 80, 81, - /* 1040 */ 82, 83, 84, 85, 86, 87, 144, 62, 63, 64, - /* 1050 */ 65, 4, 146, 68, 69, 70, 71, 72, 73, 74, - /* 1060 */ 75, 177, 77, 78, 79, 80, 81, 82, 83, 84, - /* 1070 */ 85, 86, 87, 163, 190, 159, 191, 192, 193, 195, - /* 1080 */ 196, 97, 97, 62, 63, 64, 65, 97, 104, 68, - /* 1090 */ 69, 70, 71, 72, 73, 74, 75, 104, 77, 78, - /* 1100 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 185, - /* 1110 */ 172, 173, 13, 62, 63, 64, 65, 159, 97, 68, - /* 1120 */ 69, 70, 71, 72, 73, 74, 75, 177, 77, 78, - /* 1130 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 97, - /* 1140 */ 190, 185, 104, 219, 260, 261, 104, 97, 97, 62, - /* 1150 */ 63, 64, 65, 106, 107, 68, 69, 70, 71, 72, - /* 1160 */ 73, 74, 75, 116, 77, 78, 79, 80, 81, 82, - /* 1170 */ 83, 84, 85, 86, 87, 219, 4, 138, 139, 62, - /* 1180 */ 63, 64, 65, 25, 97, 68, 69, 70, 71, 72, - /* 1190 */ 73, 74, 75, 243, 77, 78, 79, 80, 81, 82, - /* 1200 */ 83, 84, 85, 86, 87, 185, 13, 185, 197, 96, - /* 1210 */ 13, 62, 63, 64, 65, 98, 205, 68, 69, 70, - /* 1220 */ 71, 72, 73, 74, 75, 97, 77, 78, 79, 80, - /* 1230 */ 81, 82, 83, 84, 85, 86, 87, 55, 89, 219, - /* 1240 */ 4, 219, 62, 63, 64, 65, 30, 89, 68, 69, - /* 1250 */ 70, 71, 72, 73, 74, 75, 144, 77, 78, 79, - /* 1260 */ 80, 81, 82, 83, 84, 85, 86, 87, 99, 89, - /* 1270 */ 99, 89, 104, 101, 62, 63, 64, 65, 106, 107, - /* 1280 */ 68, 69, 70, 71, 72, 73, 74, 75, 191, 77, - /* 1290 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 1300 */ 4, 62, 63, 64, 65, 4, 83, 68, 69, 70, - /* 1310 */ 71, 72, 73, 74, 75, 177, 77, 78, 79, 80, - /* 1320 */ 81, 82, 83, 84, 85, 86, 87, 4, 190, 4, - /* 1330 */ 96, 191, 235, 201, 162, 201, 198, 199, 15, 63, - /* 1340 */ 64, 65, 106, 107, 68, 69, 70, 71, 72, 73, - /* 1350 */ 74, 75, 4, 77, 78, 79, 80, 81, 82, 83, - /* 1360 */ 84, 85, 86, 87, 177, 42, 177, 97, 177, 4, - /* 1370 */ 232, 233, 177, 186, 187, 235, 97, 190, 177, 190, - /* 1380 */ 185, 190, 59, 104, 252, 190, 252, 64, 152, 251, - /* 1390 */ 97, 190, 135, 198, 199, 177, 209, 104, 211, 198, - /* 1400 */ 199, 212, 106, 4, 81, 82, 96, 106, 190, 177, - /* 1410 */ 4, 88, 191, 117, 219, 97, 198, 199, 117, 96, - /* 1420 */ 97, 15, 190, 177, 101, 100, 103, 232, 233, 106, - /* 1430 */ 107, 106, 107, 232, 111, 4, 190, 177, 4, 97, - /* 1440 */ 4, 118, 119, 120, 121, 17, 251, 258, 42, 101, - /* 1450 */ 190, 97, 251, 4, 106, 107, 235, 97, 198, 199, - /* 1460 */ 177, 38, 244, 4, 104, 59, 101, 276, 96, 251, - /* 1470 */ 64, 106, 107, 190, 4, 152, 4, 154, 155, 156, - /* 1480 */ 132, 198, 199, 118, 6, 4, 191, 81, 82, 243, - /* 1490 */ 38, 96, 96, 4, 88, 97, 96, 177, 38, 100, - /* 1500 */ 101, 181, 96, 97, 15, 106, 107, 101, 276, 103, - /* 1510 */ 190, 251, 106, 107, 254, 232, 4, 111, 4, 129, - /* 1520 */ 4, 96, 115, 177, 118, 119, 120, 121, 64, 4, - /* 1530 */ 235, 42, 101, 103, 251, 101, 190, 106, 107, 98, - /* 1540 */ 106, 107, 106, 107, 198, 199, 4, 252, 59, 118, - /* 1550 */ 101, 177, 118, 64, 4, 106, 107, 12, 152, 4, - /* 1560 */ 154, 155, 156, 4, 190, 106, 107, 118, 98, 123, - /* 1570 */ 81, 82, 128, 101, 142, 4, 106, 88, 106, 107, - /* 1580 */ 71, 177, 101, 89, 4, 96, 15, 106, 107, 139, - /* 1590 */ 101, 132, 103, 157, 190, 106, 107, 251, 71, 177, - /* 1600 */ 111, 4, 198, 199, 153, 133, 89, 118, 119, 120, - /* 1610 */ 121, 141, 190, 42, 22, 101, 91, 101, 106, 107, - /* 1620 */ 106, 107, 106, 107, 177, 177, 4, 146, 181, 47, - /* 1630 */ 59, 106, 107, 91, 118, 64, 4, 190, 190, 127, - /* 1640 */ 39, 152, 104, 154, 155, 156, 39, 158, 106, 107, - /* 1650 */ 91, 177, 81, 82, 161, 251, 106, 107, 4, 88, - /* 1660 */ 212, 106, 107, 177, 190, 106, 107, 96, 97, 15, - /* 1670 */ 123, 96, 101, 118, 103, 177, 190, 106, 107, 165, - /* 1680 */ 177, 96, 111, 95, 198, 199, 106, 107, 190, 118, - /* 1690 */ 119, 120, 121, 190, 4, 177, 42, 143, 103, 97, - /* 1700 */ 97, 198, 199, 106, 107, 95, 258, 177, 190, 177, - /* 1710 */ 236, 237, 93, 59, 164, 37, 198, 199, 64, 36, - /* 1720 */ 190, 141, 190, 152, 189, 154, 155, 156, 106, 107, - /* 1730 */ 198, 199, 252, 4, 238, 81, 82, 251, 106, 107, - /* 1740 */ 4, 204, 88, 146, 204, 177, 177, 4, 273, 177, - /* 1750 */ 96, 15, 275, 176, 251, 101, 90, 103, 190, 190, - /* 1760 */ 106, 107, 190, 177, 177, 111, 198, 199, 146, 251, - /* 1770 */ 198, 199, 118, 119, 120, 121, 190, 190, 42, 4, - /* 1780 */ 275, 176, 4, 251, 152, 198, 199, 176, 49, 177, - /* 1790 */ 7, 177, 176, 181, 11, 59, 106, 107, 177, 104, - /* 1800 */ 64, 4, 190, 177, 190, 4, 152, 181, 154, 155, - /* 1810 */ 156, 190, 198, 199, 4, 32, 190, 81, 82, 251, - /* 1820 */ 178, 177, 4, 251, 88, 181, 178, 177, 183, 100, - /* 1830 */ 60, 181, 96, 15, 190, 106, 107, 101, 251, 103, - /* 1840 */ 190, 4, 106, 107, 180, 184, 177, 111, 221, 106, - /* 1850 */ 107, 56, 162, 138, 118, 119, 120, 121, 177, 190, - /* 1860 */ 42, 118, 177, 177, 243, 251, 181, 198, 199, 151, - /* 1870 */ 177, 190, 148, 177, 181, 190, 190, 59, 227, 198, - /* 1880 */ 199, 106, 107, 190, 106, 107, 190, 228, 152, 177, - /* 1890 */ 154, 155, 156, 118, 198, 199, 118, 229, 177, 81, - /* 1900 */ 82, 4, 190, 106, 107, 177, 88, 106, 107, 177, - /* 1910 */ 100, 190, 230, 149, 96, 118, 106, 107, 190, 101, - /* 1920 */ 251, 103, 190, 237, 106, 107, 198, 199, 177, 111, - /* 1930 */ 198, 199, 251, 177, 133, 177, 118, 119, 120, 121, - /* 1940 */ 177, 190, 4, 106, 107, 177, 190, 251, 190, 198, - /* 1950 */ 199, 4, 147, 190, 198, 199, 198, 199, 190, 4, - /* 1960 */ 87, 198, 199, 177, 177, 231, 198, 199, 4, 177, - /* 1970 */ 152, 150, 154, 155, 156, 252, 190, 190, 4, 251, - /* 1980 */ 177, 177, 190, 251, 198, 199, 177, 203, 177, 152, - /* 1990 */ 198, 199, 181, 190, 190, 64, 259, 96, 87, 190, - /* 2000 */ 177, 190, 251, 106, 107, 177, 158, 251, 255, 251, - /* 2010 */ 177, 177, 177, 190, 251, 118, 177, 177, 190, 251, - /* 2020 */ 177, 198, 199, 190, 190, 190, 241, 177, 203, 190, - /* 2030 */ 190, 198, 199, 190, 177, 177, 177, 251, 198, 199, - /* 2040 */ 190, 198, 199, 251, 106, 107, 177, 190, 190, 190, - /* 2050 */ 99, 177, 99, 106, 107, 198, 199, 198, 199, 190, - /* 2060 */ 241, 106, 107, 177, 190, 118, 177, 198, 199, 223, - /* 2070 */ 106, 107, 198, 199, 251, 4, 190, 177, 200, 190, - /* 2080 */ 106, 107, 118, 177, 251, 4, 123, 198, 199, 4, - /* 2090 */ 190, 251, 118, 200, 251, 208, 190, 139, 198, 199, - /* 2100 */ 177, 177, 177, 165, 198, 199, 177, 31, 251, 200, - /* 2110 */ 251, 122, 202, 190, 190, 190, 177, 177, 163, 190, - /* 2120 */ 251, 198, 199, 198, 199, 251, 177, 198, 199, 190, - /* 2130 */ 190, 177, 200, 177, 208, 200, 177, 198, 199, 190, - /* 2140 */ 251, 200, 200, 200, 190, 177, 190, 198, 199, 190, - /* 2150 */ 177, 251, 198, 199, 198, 199, 177, 251, 190, 241, - /* 2160 */ 177, 99, 177, 190, 203, 203, 198, 199, 180, 190, - /* 2170 */ 177, 198, 199, 190, 251, 190, 251, 106, 107, 203, - /* 2180 */ 251, 100, 177, 190, 180, 177, 99, 106, 107, 177, - /* 2190 */ 251, 106, 107, 177, 99, 190, 177, 264, 190, 27, - /* 2200 */ 251, 241, 190, 158, 99, 251, 190, 251, 227, 190, - /* 2210 */ 265, 215, 62, 99, 99, 250, 96, 215, 180, 251, - /* 2220 */ 99, 241, 227, 152, 251, 241, 180, 99, 217, 60, - /* 2230 */ 99, 217, 99, 99, 217, 217, 99, 152, 241, 99, - /* 2240 */ 268, 18, 241, 268, 99, 99, 99, 241, 270, 16, - /* 2250 */ 224, 226, 261, 261, 201, 256, 201, 242, 206, 210, - /* 2260 */ 240, 202, 227, 242, 242, 175, 224, 239, 191, 191, - /* 2270 */ 191, 191, 262, 222, 216, 207, 263, 253, 211, 207, - /* 2280 */ 207, 274, 198, 55, 198, + /* 70 */ 74, 75, 104, 77, 78, 79, 80, 81, 82, 83, + /* 80 */ 84, 85, 86, 87, 88, 4, 185, 177, 4, 66, + /* 90 */ 67, 4, 96, 4, 97, 93, 15, 101, 261, 103, + /* 100 */ 190, 104, 106, 107, 105, 106, 107, 111, 109, 64, + /* 110 */ 142, 112, 113, 114, 118, 119, 120, 121, 5, 218, + /* 120 */ 219, 96, 4, 42, 83, 84, 85, 86, 87, 130, + /* 130 */ 106, 107, 87, 34, 138, 139, 51, 191, 53, 26, + /* 140 */ 59, 28, 118, 86, 87, 64, 245, 246, 152, 248, + /* 150 */ 154, 155, 123, 157, 109, 110, 111, 112, 113, 114, + /* 160 */ 115, 48, 81, 82, 83, 81, 82, 266, 267, 88, + /* 170 */ 89, 4, 143, 4, 129, 61, 152, 96, 97, 185, + /* 180 */ 95, 235, 101, 96, 103, 104, 276, 106, 107, 252, + /* 190 */ 106, 107, 111, 106, 110, 106, 107, 4, 252, 118, + /* 200 */ 119, 120, 121, 119, 120, 4, 269, 123, 177, 125, + /* 210 */ 96, 97, 218, 219, 4, 134, 15, 136, 137, 101, + /* 220 */ 0, 190, 123, 142, 106, 107, 195, 196, 147, 148, + /* 230 */ 149, 150, 151, 152, 97, 154, 155, 99, 157, 245, + /* 240 */ 246, 152, 248, 42, 4, 25, 161, 77, 78, 79, + /* 250 */ 80, 81, 82, 83, 84, 85, 86, 87, 205, 206, + /* 260 */ 59, 267, 19, 104, 106, 64, 213, 24, 101, 111, + /* 270 */ 101, 19, 29, 106, 107, 106, 107, 119, 120, 121, + /* 280 */ 162, 29, 81, 82, 117, 118, 23, 118, 61, 88, + /* 290 */ 89, 260, 261, 134, 101, 136, 137, 96, 97, 106, + /* 300 */ 107, 225, 101, 4, 103, 104, 96, 106, 107, 89, + /* 310 */ 234, 101, 111, 146, 45, 146, 106, 107, 55, 118, + /* 320 */ 119, 120, 121, 96, 97, 23, 177, 97, 118, 177, + /* 330 */ 99, 104, 33, 34, 104, 134, 96, 136, 137, 190, + /* 340 */ 99, 101, 190, 133, 195, 196, 106, 107, 147, 148, + /* 350 */ 149, 150, 89, 152, 135, 154, 155, 164, 157, 140, + /* 360 */ 4, 62, 63, 64, 65, 66, 67, 68, 69, 70, + /* 370 */ 71, 72, 73, 74, 75, 4, 77, 78, 79, 80, + /* 380 */ 81, 82, 83, 84, 85, 86, 87, 4, 50, 83, + /* 390 */ 4, 177, 54, 124, 125, 126, 182, 98, 15, 247, + /* 400 */ 186, 187, 177, 177, 190, 106, 99, 138, 139, 260, + /* 410 */ 261, 62, 63, 64, 65, 190, 190, 68, 69, 70, + /* 420 */ 71, 72, 73, 74, 75, 42, 77, 78, 79, 80, + /* 430 */ 81, 82, 83, 84, 85, 86, 87, 4, 89, 83, + /* 440 */ 141, 135, 59, 119, 120, 59, 140, 64, 177, 220, + /* 450 */ 221, 113, 223, 104, 109, 9, 7, 112, 113, 114, + /* 460 */ 11, 190, 106, 107, 81, 82, 20, 81, 82, 198, + /* 470 */ 199, 88, 89, 102, 118, 130, 4, 106, 107, 96, + /* 480 */ 97, 32, 96, 258, 101, 104, 103, 104, 107, 106, + /* 490 */ 107, 96, 106, 98, 111, 4, 111, 111, 58, 161, + /* 500 */ 151, 118, 119, 120, 121, 119, 120, 121, 152, 194, + /* 510 */ 195, 196, 172, 173, 33, 34, 97, 134, 96, 136, + /* 520 */ 137, 40, 251, 104, 253, 144, 145, 51, 177, 53, + /* 530 */ 147, 98, 149, 150, 104, 152, 185, 154, 155, 106, + /* 540 */ 157, 190, 104, 62, 63, 64, 65, 66, 67, 68, + /* 550 */ 69, 70, 71, 72, 73, 74, 75, 25, 77, 78, + /* 560 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 9, + /* 570 */ 219, 95, 100, 101, 141, 4, 261, 4, 106, 107, + /* 580 */ 20, 151, 4, 97, 4, 104, 97, 236, 237, 4, + /* 590 */ 104, 100, 101, 33, 34, 64, 65, 106, 107, 68, + /* 600 */ 69, 70, 71, 72, 73, 74, 75, 167, 77, 78, + /* 610 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 33, + /* 620 */ 34, 89, 62, 63, 64, 65, 66, 67, 68, 69, + /* 630 */ 70, 71, 72, 73, 74, 75, 96, 77, 78, 79, + /* 640 */ 80, 81, 82, 83, 84, 85, 86, 87, 62, 63, + /* 650 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + /* 660 */ 74, 75, 4, 77, 78, 79, 80, 81, 82, 83, + /* 670 */ 84, 85, 86, 87, 33, 34, 91, 106, 107, 106, + /* 680 */ 107, 101, 272, 273, 106, 107, 106, 107, 179, 116, + /* 690 */ 188, 106, 107, 191, 192, 193, 97, 158, 127, 160, + /* 700 */ 55, 43, 97, 62, 63, 64, 65, 66, 67, 68, + /* 710 */ 69, 70, 71, 72, 73, 74, 75, 12, 77, 78, + /* 720 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 62, + /* 730 */ 63, 64, 65, 97, 156, 68, 69, 70, 71, 72, + /* 740 */ 73, 74, 75, 163, 77, 78, 79, 80, 81, 82, + /* 750 */ 83, 84, 85, 86, 87, 110, 89, 97, 100, 170, + /* 760 */ 171, 172, 173, 61, 106, 107, 257, 62, 63, 64, + /* 770 */ 65, 104, 61, 68, 69, 70, 71, 72, 73, 74, + /* 780 */ 75, 96, 77, 78, 79, 80, 81, 82, 83, 84, + /* 790 */ 85, 86, 87, 97, 89, 38, 4, 111, 96, 97, + /* 800 */ 104, 4, 124, 125, 126, 191, 104, 96, 97, 197, + /* 810 */ 177, 4, 81, 82, 181, 129, 4, 205, 151, 62, + /* 820 */ 63, 64, 65, 190, 4, 68, 69, 70, 71, 72, + /* 830 */ 73, 74, 75, 97, 77, 78, 79, 80, 81, 82, + /* 840 */ 83, 84, 85, 86, 87, 4, 89, 55, 4, 235, + /* 850 */ 119, 120, 62, 63, 64, 65, 15, 104, 68, 69, + /* 860 */ 70, 71, 72, 73, 74, 75, 201, 77, 78, 79, + /* 870 */ 80, 81, 82, 83, 84, 85, 86, 87, 190, 104, + /* 880 */ 4, 138, 139, 42, 71, 4, 198, 98, 96, 97, + /* 890 */ 169, 220, 221, 101, 223, 174, 55, 122, 106, 107, + /* 900 */ 59, 97, 177, 106, 107, 64, 185, 100, 104, 96, + /* 910 */ 118, 186, 187, 106, 107, 190, 96, 252, 106, 107, + /* 920 */ 249, 101, 81, 82, 96, 133, 106, 107, 97, 88, + /* 930 */ 138, 139, 4, 177, 209, 5, 211, 96, 118, 218, + /* 940 */ 219, 177, 101, 146, 103, 101, 190, 106, 107, 159, + /* 950 */ 106, 107, 111, 133, 190, 185, 26, 30, 28, 118, + /* 960 */ 119, 120, 121, 177, 144, 145, 245, 246, 177, 248, + /* 970 */ 191, 55, 91, 177, 162, 45, 190, 101, 48, 138, + /* 980 */ 139, 190, 106, 107, 198, 199, 190, 106, 107, 219, + /* 990 */ 146, 64, 271, 152, 118, 154, 155, 97, 157, 98, + /* 1000 */ 62, 63, 64, 65, 104, 89, 68, 69, 70, 71, + /* 1010 */ 72, 73, 74, 75, 235, 77, 78, 79, 80, 81, + /* 1020 */ 82, 83, 84, 85, 86, 87, 4, 236, 237, 4, + /* 1030 */ 244, 191, 192, 193, 106, 107, 98, 251, 34, 243, + /* 1040 */ 276, 97, 62, 63, 64, 65, 118, 201, 68, 69, + /* 1050 */ 70, 71, 72, 73, 74, 75, 96, 77, 78, 79, + /* 1060 */ 80, 81, 82, 83, 84, 85, 86, 87, 64, 62, + /* 1070 */ 63, 64, 65, 13, 146, 68, 69, 70, 71, 72, + /* 1080 */ 73, 74, 75, 177, 77, 78, 79, 80, 81, 82, + /* 1090 */ 83, 84, 85, 86, 87, 104, 190, 13, 252, 62, + /* 1100 */ 63, 64, 65, 104, 97, 68, 69, 70, 71, 72, + /* 1110 */ 73, 74, 75, 91, 77, 78, 79, 80, 81, 82, + /* 1120 */ 83, 84, 85, 86, 87, 96, 13, 123, 106, 107, + /* 1130 */ 185, 106, 107, 129, 97, 62, 63, 64, 65, 159, + /* 1140 */ 30, 68, 69, 70, 71, 72, 73, 74, 75, 243, + /* 1150 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + /* 1160 */ 87, 185, 4, 97, 219, 62, 63, 64, 65, 144, + /* 1170 */ 97, 68, 69, 70, 71, 72, 73, 74, 75, 177, + /* 1180 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + /* 1190 */ 87, 97, 190, 185, 144, 219, 99, 62, 63, 64, + /* 1200 */ 65, 98, 83, 68, 69, 70, 71, 72, 73, 74, + /* 1210 */ 75, 99, 77, 78, 79, 80, 81, 82, 83, 84, + /* 1220 */ 85, 86, 87, 185, 89, 97, 4, 219, 62, 63, + /* 1230 */ 64, 65, 104, 104, 68, 69, 70, 71, 72, 73, + /* 1240 */ 74, 75, 96, 77, 78, 79, 80, 81, 82, 83, + /* 1250 */ 84, 85, 86, 87, 4, 89, 97, 219, 4, 101, + /* 1260 */ 62, 63, 64, 65, 106, 107, 68, 69, 70, 71, + /* 1270 */ 72, 73, 74, 75, 4, 77, 78, 79, 80, 81, + /* 1280 */ 82, 83, 84, 85, 86, 87, 4, 62, 63, 64, + /* 1290 */ 65, 133, 4, 68, 69, 70, 71, 72, 73, 74, + /* 1300 */ 75, 177, 77, 78, 79, 80, 81, 82, 83, 84, + /* 1310 */ 85, 86, 87, 4, 190, 97, 185, 135, 158, 96, + /* 1320 */ 17, 191, 104, 101, 15, 63, 64, 65, 106, 107, + /* 1330 */ 68, 69, 70, 71, 72, 73, 74, 75, 38, 77, + /* 1340 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + /* 1350 */ 219, 42, 4, 214, 132, 216, 106, 107, 177, 96, + /* 1360 */ 106, 107, 177, 4, 177, 235, 185, 243, 59, 6, + /* 1370 */ 185, 190, 118, 64, 97, 190, 106, 190, 108, 198, + /* 1380 */ 199, 104, 4, 198, 199, 198, 199, 133, 106, 101, + /* 1390 */ 81, 82, 97, 97, 106, 107, 4, 88, 177, 117, + /* 1400 */ 219, 97, 152, 97, 219, 96, 97, 15, 104, 97, + /* 1410 */ 101, 190, 103, 232, 233, 106, 107, 232, 177, 232, + /* 1420 */ 111, 214, 177, 216, 4, 96, 177, 118, 119, 120, + /* 1430 */ 121, 190, 251, 4, 42, 190, 251, 14, 251, 190, + /* 1440 */ 4, 97, 38, 198, 199, 96, 177, 198, 199, 177, + /* 1450 */ 97, 59, 96, 165, 106, 107, 64, 38, 35, 190, + /* 1460 */ 4, 152, 190, 154, 155, 106, 157, 198, 199, 46, + /* 1470 */ 198, 199, 4, 81, 82, 96, 117, 232, 233, 4, + /* 1480 */ 88, 232, 233, 115, 106, 107, 4, 129, 96, 97, + /* 1490 */ 15, 64, 144, 101, 177, 103, 251, 103, 106, 107, + /* 1500 */ 251, 232, 12, 111, 4, 177, 4, 190, 98, 177, + /* 1510 */ 118, 119, 120, 121, 186, 187, 244, 42, 190, 141, + /* 1520 */ 251, 4, 190, 251, 123, 142, 106, 107, 177, 71, + /* 1530 */ 71, 128, 139, 153, 59, 106, 107, 101, 118, 64, + /* 1540 */ 4, 190, 106, 107, 152, 116, 154, 155, 4, 157, + /* 1550 */ 89, 128, 177, 89, 118, 22, 81, 82, 47, 91, + /* 1560 */ 39, 4, 106, 88, 177, 190, 146, 177, 181, 237, + /* 1570 */ 104, 96, 15, 117, 106, 107, 101, 190, 103, 177, + /* 1580 */ 190, 106, 107, 101, 177, 177, 111, 4, 106, 107, + /* 1590 */ 39, 177, 190, 118, 119, 120, 121, 190, 190, 42, + /* 1600 */ 118, 101, 212, 101, 190, 161, 106, 107, 106, 107, + /* 1610 */ 123, 103, 198, 199, 95, 177, 59, 4, 118, 181, + /* 1620 */ 118, 64, 4, 106, 107, 96, 143, 152, 190, 154, + /* 1630 */ 155, 96, 157, 158, 177, 118, 97, 97, 81, 82, + /* 1640 */ 95, 93, 106, 107, 4, 88, 177, 190, 258, 177, + /* 1650 */ 106, 107, 37, 96, 97, 15, 36, 252, 101, 190, + /* 1660 */ 103, 273, 190, 106, 107, 251, 177, 189, 111, 212, + /* 1670 */ 198, 199, 177, 4, 204, 118, 119, 120, 121, 190, + /* 1680 */ 4, 177, 42, 238, 204, 190, 4, 198, 199, 106, + /* 1690 */ 107, 275, 177, 177, 190, 177, 152, 181, 176, 59, + /* 1700 */ 164, 118, 198, 199, 64, 190, 190, 275, 190, 152, + /* 1710 */ 176, 154, 155, 4, 157, 258, 198, 199, 100, 106, + /* 1720 */ 107, 81, 82, 251, 106, 107, 4, 90, 88, 177, + /* 1730 */ 176, 118, 177, 4, 178, 177, 96, 15, 49, 177, + /* 1740 */ 251, 101, 190, 103, 176, 190, 106, 107, 190, 177, + /* 1750 */ 177, 111, 190, 198, 199, 251, 198, 199, 118, 119, + /* 1760 */ 120, 121, 190, 190, 42, 177, 177, 177, 60, 251, + /* 1770 */ 181, 198, 199, 178, 212, 106, 107, 177, 190, 190, + /* 1780 */ 190, 59, 106, 107, 212, 180, 64, 183, 106, 107, + /* 1790 */ 190, 104, 152, 184, 154, 155, 64, 157, 198, 199, + /* 1800 */ 118, 132, 56, 81, 82, 87, 251, 254, 4, 251, + /* 1810 */ 88, 252, 221, 177, 158, 106, 107, 181, 96, 15, + /* 1820 */ 258, 177, 146, 101, 251, 103, 190, 118, 106, 107, + /* 1830 */ 258, 177, 177, 111, 190, 106, 107, 177, 138, 227, + /* 1840 */ 118, 119, 120, 121, 190, 190, 42, 118, 177, 151, + /* 1850 */ 190, 251, 181, 198, 199, 8, 228, 10, 177, 12, + /* 1860 */ 177, 190, 181, 59, 4, 177, 149, 148, 21, 181, + /* 1870 */ 23, 190, 229, 190, 152, 230, 154, 155, 190, 157, + /* 1880 */ 177, 198, 199, 231, 181, 81, 82, 203, 41, 150, + /* 1890 */ 4, 44, 88, 190, 147, 48, 49, 96, 259, 52, + /* 1900 */ 96, 87, 55, 177, 57, 101, 251, 103, 203, 241, + /* 1910 */ 106, 107, 4, 177, 177, 111, 190, 177, 99, 177, + /* 1920 */ 223, 139, 118, 119, 120, 121, 190, 190, 200, 177, + /* 1930 */ 190, 177, 190, 177, 251, 198, 199, 241, 99, 92, + /* 1940 */ 4, 94, 190, 123, 190, 200, 190, 177, 200, 177, + /* 1950 */ 198, 199, 198, 199, 198, 199, 152, 208, 154, 155, + /* 1960 */ 190, 157, 190, 31, 177, 202, 106, 107, 198, 199, + /* 1970 */ 198, 199, 4, 122, 4, 200, 177, 190, 131, 203, + /* 1980 */ 200, 208, 177, 200, 200, 198, 199, 177, 251, 190, + /* 1990 */ 200, 203, 106, 107, 241, 190, 99, 198, 199, 177, + /* 2000 */ 190, 180, 99, 251, 118, 251, 177, 251, 198, 199, + /* 2010 */ 203, 177, 190, 166, 106, 107, 4, 180, 177, 190, + /* 2020 */ 241, 251, 264, 251, 190, 165, 118, 198, 199, 99, + /* 2030 */ 4, 190, 198, 199, 27, 177, 177, 158, 251, 198, + /* 2040 */ 199, 177, 106, 107, 99, 227, 177, 177, 190, 190, + /* 2050 */ 251, 177, 177, 215, 190, 62, 198, 199, 177, 190, + /* 2060 */ 190, 251, 198, 199, 190, 190, 177, 198, 199, 177, + /* 2070 */ 96, 190, 198, 199, 106, 107, 106, 107, 4, 190, + /* 2080 */ 251, 4, 190, 177, 99, 251, 118, 198, 199, 177, + /* 2090 */ 198, 199, 251, 177, 177, 265, 190, 4, 99, 163, + /* 2100 */ 177, 4, 190, 133, 198, 199, 190, 190, 4, 251, + /* 2110 */ 198, 199, 100, 190, 177, 251, 250, 177, 106, 107, + /* 2120 */ 251, 198, 199, 4, 177, 251, 215, 190, 177, 177, + /* 2130 */ 190, 177, 106, 107, 177, 198, 199, 190, 198, 199, + /* 2140 */ 251, 190, 190, 251, 190, 198, 199, 190, 177, 198, + /* 2150 */ 199, 241, 198, 199, 177, 198, 199, 251, 180, 99, + /* 2160 */ 227, 190, 180, 251, 177, 241, 99, 190, 60, 198, + /* 2170 */ 199, 99, 217, 217, 251, 198, 199, 190, 152, 99, + /* 2180 */ 106, 107, 217, 106, 107, 198, 199, 99, 251, 217, + /* 2190 */ 99, 251, 118, 100, 241, 99, 177, 268, 251, 106, + /* 2200 */ 107, 18, 251, 106, 107, 251, 268, 241, 251, 190, + /* 2210 */ 106, 107, 99, 99, 241, 99, 270, 198, 199, 16, + /* 2220 */ 224, 226, 251, 261, 105, 106, 107, 206, 251, 152, + /* 2230 */ 255, 201, 240, 242, 201, 210, 202, 261, 251, 242, + /* 2240 */ 242, 227, 224, 175, 191, 191, 191, 191, 262, 152, + /* 2250 */ 256, 263, 216, 222, 239, 207, 207, 207, 274, 198, + /* 2260 */ 198, 55, 211, 277, 277, 277, 277, 277, 277, 277, + /* 2270 */ 251, }; -#define YY_SHIFT_USE_DFLT (-81) +#define YY_SHIFT_USE_DFLT (-110) #define YY_SHIFT_COUNT (435) -#define YY_SHIFT_MIN (-80) -#define YY_SHIFT_MAX (2233) +#define YY_SHIFT_MIN (-109) +#define YY_SHIFT_MAX (2206) static const short yy_shift_ofst[] = { - /* 0 */ 1158, -4, 201, 1182, 819, 1571, 1571, 689, 361, 1489, - /* 10 */ 1654, 1654, 1654, 770, 364, 364, 157, 81, 179, 1406, - /* 20 */ 1323, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - /* 30 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - /* 40 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - /* 50 */ 1654, 1654, 1654, 1654, 1654, 1654, 1736, 1654, 1818, 370, - /* 60 */ 798, 181, 370, 1837, 1837, 1837, 1837, 887, 887, 565, - /* 70 */ 277, 4, 1516, 1514, 1481, 1472, 1449, 1434, 1431, 1365, - /* 80 */ 1348, 448, 1399, 2071, 2071, 2085, 439, 2071, 2081, 1837, - /* 90 */ 565, 1039, 538, 538, 735, 84, 44, 171, 859, 775, - /* 100 */ 906, 773, 910, 636, 1172, 5, 450, 5, 443, 413, - /* 110 */ 185, 1729, 1974, 1955, 1938, 1622, 1801, 1964, 1810, 1797, - /* 120 */ 1690, 1947, 1632, 1897, 1778, 1555, 1550, 1459, 1325, 1775, - /* 130 */ 1047, 1512, 1743, 902, 140, 1470, 1470, 1597, 1580, 1470, - /* 140 */ 1236, 780, 1436, 349, 562, 216, 620, 1559, 1542, 1525, - /* 150 */ 90, 829, 829, 829, 872, 544, 2228, 2228, 2228, 2228, - /* 160 */ 2228, -81, -81, 459, 619, 619, 619, 619, 619, 619, - /* 170 */ 619, 619, 619, 645, 327, 683, 1180, 1149, 1117, 1087, - /* 180 */ 1051, 1021, 985, 958, 916, 767, 1239, 1212, 1276, 509, - /* 190 */ 509, -60, -38, -38, -38, -38, 578, -80, 314, 87, - /* 200 */ 87, 41, 155, 75, 58, 58, 58, -6, 186, 862, - /* 210 */ -47, 808, 1783, 1301, 1296, 206, 908, 424, 400, 25, - /* 220 */ 729, 729, 679, 1360, -2, 855, 729, 442, 346, 855, - /* 230 */ 750, 750, 187, -9, 169, 2233, 2147, 2146, 2145, 2223, - /* 240 */ 2223, 2140, 2137, 2169, 2134, 2169, 2133, 2169, 2131, 2169, - /* 250 */ 2128, 1770, 1718, 2121, 1770, 2150, 2120, 2115, 2114, 2150, - /* 260 */ 1718, 2105, 2045, 2172, 2095, 1770, 2087, 1901, 1770, 2062, - /* 270 */ 1901, 1963, 1963, 1963, 1963, 2076, 1901, 1963, 1989, 1963, - /* 280 */ 2076, 1963, 1963, 1958, 1953, 1951, 1848, 1901, 1911, 1901, - /* 290 */ 1931, 1873, 1821, 1805, 1764, 1724, 1718, 1715, 1795, 1695, - /* 300 */ 1770, 1739, 1739, 1666, 1666, 1666, 1666, -81, -81, -81, - /* 310 */ -81, -81, -81, -81, -81, -81, -81, 564, 79, 158, - /* 320 */ 45, 702, 243, -49, 398, 1293, 1279, 1042, 984, 788, - /* 330 */ 2, 471, -20, 758, 678, 344, 144, -44, 1683, 1678, - /* 340 */ 1619, 1610, 1603, 1602, 1595, 1585, 1554, 1588, 1575, 1547, - /* 350 */ 1493, 1607, 1538, 1601, 1582, 1592, 1517, 1494, 1450, 1451, - /* 360 */ 1527, 1509, 1444, 1432, 1545, 1446, 1441, 1430, 1464, 1390, - /* 370 */ 1407, 1425, 1460, 1400, 1396, 1398, 1395, 1452, 1478, 1372, - /* 380 */ 1423, 1428, 1354, 1342, 1318, 1168, 1257, 1310, 1270, 1234, - /* 390 */ 1168, 1223, 1171, 1169, 1112, 1128, 1050, 1216, 1197, 1113, - /* 400 */ 993, 1193, 1038, 1099, 993, 990, 937, 846, 895, 870, - /* 410 */ 848, 867, 825, 757, 805, 675, 652, 571, 644, 625, - /* 420 */ 613, 571, 438, 474, 421, 399, 406, 355, 362, 231, - /* 430 */ 225, 166, 143, 63, -37, -61, + /* 0 */ 532, -4, 1847, 841, 916, 1557, 1557, 263, 383, 1475, + /* 10 */ 1722, 1640, 1640, 792, 84, 84, -1, 81, 201, 1392, + /* 20 */ 1309, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + /* 30 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + /* 40 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + /* 50 */ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1804, 2119, + /* 60 */ 820, 269, 2119, 2026, 2026, 2026, 2026, 731, 731, 1270, + /* 70 */ 299, 210, 1502, 1288, 844, 1158, 1500, 1482, 1436, 876, + /* 80 */ 1222, 658, 491, 2077, 2077, 2097, 1004, 2077, 2093, 2026, + /* 90 */ 1270, 743, 560, 560, 757, 386, 45, 167, 169, 356, + /* 100 */ 1420, 928, 580, 472, 118, 930, 193, 930, 240, 1254, + /* 110 */ 24, 2012, 1968, 1936, 1860, 1676, 1970, 2074, 1618, 1908, + /* 120 */ 812, 1886, 1544, 1729, 1709, 1682, 1536, 1669, 807, 1613, + /* 130 */ 1429, 571, 1583, 1517, 1348, 1025, 433, 433, 797, 1378, + /* 140 */ 433, 1250, 578, 89, 573, 371, 338, 1468, 1022, 881, + /* 150 */ 585, 2104, 2104, 2104, 220, 645, 2206, 2206, 2206, 2206, + /* 160 */ 2206, -110, -110, 481, 641, 641, 641, 641, 641, 641, + /* 170 */ 641, 641, 641, 667, 349, 705, 1166, 1135, 1103, 1073, + /* 180 */ 1037, 1007, 980, 938, 790, 1225, 1198, 1262, 531, 531, + /* 190 */ -60, -38, -38, -38, -38, 170, -77, 345, 158, 158, + /* 200 */ 41, 702, 227, 1423, 1423, 1423, 381, 159, 113, 23, + /* 210 */ 678, 449, 1456, 1359, 87, 1282, 306, 243, 430, 927, + /* 220 */ 927, 775, 1304, 99, 446, 927, 29, 446, 324, 324, + /* 230 */ -32, 219, 539, 57, 2203, 2116, 2114, 2113, 2183, 2183, + /* 240 */ 2096, 2091, 2108, 2088, 2108, 2080, 2108, 2072, 2108, 2067, + /* 250 */ 1708, 1698, 2060, 1708, 1993, 1974, 1999, 1985, 1993, 1698, + /* 260 */ 1945, 1879, 2007, 1930, 1708, 1903, 1801, 1708, 1897, 1801, + /* 270 */ 1820, 1820, 1820, 1820, 1932, 1801, 1820, 1851, 1820, 1932, + /* 280 */ 1820, 1820, 1839, 1782, 1819, 1801, 1814, 1801, 1739, 1747, + /* 290 */ 1717, 1719, 1698, 1700, 1656, 1732, 1718, 1746, 1687, 1708, + /* 300 */ 1689, 1689, 1637, 1637, 1637, 1637, -110, -110, -110, -110, + /* 310 */ -110, -110, -110, -110, -110, -110, 586, 85, 711, 114, + /* 320 */ -72, 476, 440, 813, 1277, 1218, 1128, 900, 804, -109, + /* 330 */ 252, 686, 696, 486, 419, 230, -3, 395, 1620, 1615, + /* 340 */ 1548, 1545, 1540, 1539, 1508, 1535, 1483, 1519, 1529, 1487, + /* 350 */ 1444, 1551, 1466, 1521, 1511, 1533, 1464, 1461, 1393, 1380, + /* 360 */ 1459, 1458, 1403, 1383, 1490, 1401, 1410, 1394, 1427, 1358, + /* 370 */ 1368, 1379, 1419, 1356, 1349, 1353, 1329, 1404, 1363, 1263, + /* 380 */ 1300, 1303, 1344, 1312, 1306, 1296, 1160, 1295, 1129, 1182, + /* 390 */ 1223, 999, 1159, 1146, 1129, 1119, 1112, 1097, 1050, 1094, + /* 400 */ 1066, 1110, 1113, 1029, 999, 1084, 991, 1060, 944, 960, + /* 410 */ 901, 753, 831, 828, 789, 753, 736, 685, 660, 636, + /* 420 */ 540, 605, 599, 489, 438, 422, 302, 385, 307, 241, + /* 430 */ 231, 138, 25, 137, 2, -39, }; -#define YY_REDUCE_USE_DFLT (-100) -#define YY_REDUCE_COUNT (316) -#define YY_REDUCE_MIN (-99) -#define YY_REDUCE_MAX (2090) +#define YY_REDUCE_USE_DFLT (-164) +#define YY_REDUCE_COUNT (315) +#define YY_REDUCE_MIN (-163) +#define YY_REDUCE_MAX (2068) static const short yy_reduce_ofst[] = { - /* 0 */ 615, 1195, 699, -99, 764, 1138, 189, 705, 1283, 1260, - /* 10 */ 1218, 1201, 261, 196, 884, 599, 1187, 1973, 1968, 1956, - /* 20 */ 1954, 1949, 1939, 1929, 1925, 1923, 1906, 1900, 1889, 1874, - /* 30 */ 1869, 1859, 1857, 1843, 1840, 1833, 1823, 1792, 1786, 1768, - /* 40 */ 1763, 1758, 1756, 1751, 1732, 1728, 1696, 1681, 1669, 1614, - /* 50 */ 1587, 1572, 1568, 1532, 1518, 1503, 1486, 1404, 1346, 490, - /* 60 */ 1474, 214, 769, 1448, 1189, 124, 67, 596, 175, 547, - /* 70 */ 1295, 1686, 1811, 1693, 1685, 1650, 1644, 1626, 1612, 1447, - /* 80 */ 1320, 1232, 203, 1621, 1246, 131, 347, 950, 1191, 195, - /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2019, 2016, 1983, - /* 100 */ 1803, 1803, 2012, 2008, 2005, 697, 1993, 11, 1803, 1985, - /* 110 */ 1983, 1979, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1959, - /* 120 */ 1803, 1803, 1940, 1803, 1803, 1924, 1803, 1803, 1803, 1886, - /* 130 */ 1858, 1850, 1839, 1835, 1834, 1221, 1140, 1828, 1809, 1097, - /* 140 */ 1804, 1803, 1787, 1721, 1712, 1586, 632, 1569, 1530, 1498, - /* 150 */ 1422, 1374, 666, 489, 938, 1022, 1020, 956, 924, 791, - /* 160 */ 763, 746, 205, 1480, 1480, 1480, 1480, 1480, 1480, 1480, - /* 170 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, - /* 180 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, - /* 190 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 2067, 2086, - /* 200 */ 2084, 1480, 2007, 2007, 2073, 2072, 2068, 2028, 2058, 2024, - /* 210 */ 2051, 2013, 2010, 2080, 2079, 2078, 2077, 2042, 2090, 2035, - /* 220 */ 2022, 2021, 2059, 2049, 2052, 2055, 2015, 2020, 1999, 2053, - /* 230 */ 1992, 1991, 1480, 2025, 2026, 1978, 1918, 2006, 2001, 1975, - /* 240 */ 1972, 1997, 1918, 2018, 1918, 2017, 1918, 2014, 1918, 2011, - /* 250 */ 1984, 2046, 1995, 1980, 2038, 2002, 1965, 1918, 1918, 1996, - /* 260 */ 1981, 1918, 1945, 1933, 1960, 2004, 1918, 1976, 1988, 1918, - /* 270 */ 1962, 1943, 1942, 1941, 1935, 1926, 1961, 1932, 1910, 1909, - /* 280 */ 1887, 1893, 1878, 1846, 1819, 1785, 1753, 1825, 1737, 1784, - /* 290 */ 1723, 1480, 1734, 1682, 1668, 1659, 1651, 1627, 1661, 1645, - /* 300 */ 1664, 1648, 1642, 1616, 1611, 1605, 1577, 1505, 1477, 1475, - /* 310 */ 1540, 1537, 1496, 1480, 1480, 1480, 1535, + /* 0 */ 589, 1181, 721, 1185, -99, 1249, 1245, -6, 1269, 271, + /* 10 */ 1272, 1187, 786, 351, 149, 31, 725, 2019, 1987, 1977, + /* 20 */ 1971, 1957, 1954, 1951, 1947, 1940, 1937, 1923, 1912, 1906, + /* 30 */ 1892, 1889, 1874, 1869, 1864, 1858, 1841, 1834, 1829, 1810, + /* 40 */ 1799, 1787, 1772, 1770, 1756, 1754, 1752, 1737, 1683, 1655, + /* 50 */ 1600, 1573, 1558, 1555, 1518, 1504, 1489, 1472, 1414, 214, + /* 60 */ 791, 671, 1328, 1572, 1562, 1457, 1390, 315, -163, 502, + /* 70 */ -54, 1332, 1703, 1688, 1681, 1671, 1636, 1589, 1516, 1438, + /* 80 */ 1387, 764, 633, 1124, 906, 152, 53, 796, -90, 225, + /* 90 */ 840, 229, 846, 665, -63, 688, 612, 1952, 1917, 1822, + /* 100 */ 1590, 1590, 1916, 1881, 1875, 1207, 1870, 1139, 1859, 1590, + /* 110 */ 1822, 1805, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1742, + /* 120 */ 1590, 1590, 1740, 1590, 1590, 1736, 1590, 1590, 1590, 1726, + /* 130 */ 1660, 1654, 1644, 1590, 1588, 1552, 1130, 779, 1515, 1495, + /* 140 */ 614, 1469, 1408, 1407, 1402, 1375, 509, 1351, 1317, 1241, + /* 150 */ 1221, 1002, 756, 226, 340, 1131, 1038, 1008, 976, 945, + /* 160 */ 770, 410, 76, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + /* 170 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + /* 180 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1405, + /* 190 */ 1405, 1405, 1405, 1405, 1405, 1405, 1405, 2051, 2062, 2061, + /* 200 */ 1405, 1984, 1984, 2050, 2049, 2048, 2015, 2031, 2036, 1994, + /* 210 */ 1988, 1986, 2056, 2055, 2054, 2053, 2018, 2068, 2014, 1998, + /* 220 */ 1997, 2034, 2025, 2021, 2033, 1991, 1992, 2030, 1976, 1962, + /* 230 */ 1995, 1996, 1975, 1405, 1946, 1753, 1973, 1966, 1938, 1929, + /* 240 */ 1953, 1753, 1972, 1753, 1965, 1753, 1956, 1753, 1955, 1924, + /* 250 */ 1982, 1933, 1910, 1978, 1911, 1866, 1753, 1753, 1838, 1818, + /* 260 */ 1753, 1830, 1758, 1779, 1837, 1753, 1807, 1821, 1753, 1788, + /* 270 */ 1790, 1784, 1783, 1780, 1773, 1776, 1775, 1763, 1748, 1749, + /* 280 */ 1745, 1728, 1696, 1697, 1668, 1705, 1639, 1684, 1652, 1645, + /* 290 */ 1643, 1628, 1612, 1591, 1553, 1559, 1405, 1609, 1604, 1605, + /* 300 */ 1595, 1556, 1568, 1554, 1534, 1522, 1432, 1416, 1388, 1480, + /* 310 */ 1470, 1445, 1405, 1405, 1405, 1478, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 730, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027, - /* 10 */ 1027, 1027, 1027, 901, 1149, 1149, 1149, 1027, 1027, 1027, - /* 20 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 30 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 40 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 50 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1016, 1149, + /* 0 */ 730, 1038, 1143, 1026, 1143, 1026, 1026, 1143, 1026, 1026, + /* 10 */ 1026, 1026, 1026, 901, 1149, 1149, 1149, 1026, 1026, 1026, + /* 20 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 30 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 40 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 50 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 978, 1149, /* 60 */ 895, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 775, /* 70 */ 891, 901, 1149, 1149, 1149, 1149, 1149, 963, 950, 941, /* 80 */ 1149, 1149, 1149, 973, 973, 956, 843, 973, 1149, 1149, - /* 90 */ 1149, 1149, 929, 929, 1028, 1149, 767, 1113, 1118, 1014, - /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 902, 1149, - /* 110 */ 1014, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + /* 90 */ 1149, 1149, 929, 929, 1028, 1149, 767, 1113, 1118, 976, + /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 902, + /* 110 */ 976, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, /* 120 */ 1149, 964, 957, 951, 942, 1149, 1149, 1149, 1149, 1149, - /* 130 */ 1149, 1149, 1149, 1149, 1149, 891, 891, 1149, 1149, 891, - /* 140 */ 1149, 1149, 1149, 1015, 1149, 1149, 764, 1149, 1149, 1149, + /* 130 */ 1149, 1149, 1149, 1149, 1149, 1149, 891, 891, 1149, 1149, + /* 140 */ 891, 1149, 1149, 977, 1149, 1149, 764, 1149, 1149, 1149, /* 150 */ 736, 1059, 1149, 1149, 730, 1143, 1143, 1143, 1143, 1143, - /* 160 */ 1143, 1136, 881, 936, 907, 946, 934, 938, 1039, 1032, - /* 170 */ 1033, 1031, 937, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - /* 180 */ 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 989, 1001, - /* 190 */ 988, 996, 1005, 1000, 997, 991, 990, 992, 1149, 1149, - /* 200 */ 1149, 993, 1149, 1149, 1149, 1149, 1149, 894, 1149, 1149, - /* 210 */ 865, 1149, 1087, 1149, 1149, 777, 1149, 879, 739, 945, - /* 220 */ 919, 919, 810, 834, 799, 929, 919, 909, 1034, 929, - /* 230 */ 1149, 1149, 994, 892, 879, 1127, 910, 910, 910, 1112, - /* 240 */ 1112, 910, 910, 856, 910, 856, 910, 856, 910, 856, - /* 250 */ 910, 761, 945, 910, 761, 847, 969, 910, 910, 847, - /* 260 */ 945, 910, 1094, 1092, 910, 761, 910, 1047, 761, 910, - /* 270 */ 1047, 845, 845, 845, 845, 826, 1047, 845, 810, 845, - /* 280 */ 826, 845, 845, 1149, 910, 910, 1149, 1047, 1053, 1047, - /* 290 */ 1028, 995, 935, 923, 933, 930, 945, 1149, 758, 829, - /* 300 */ 761, 747, 747, 735, 735, 735, 735, 1140, 1140, 1136, - /* 310 */ 812, 812, 897, 1004, 1003, 1002, 786, 1040, 1149, 1149, - /* 320 */ 1149, 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, + /* 160 */ 1143, 1136, 881, 936, 1032, 1033, 907, 946, 1039, 934, + /* 170 */ 938, 937, 1031, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + /* 180 */ 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1001, 1013, 1000, + /* 190 */ 1008, 1009, 1012, 1003, 1017, 1002, 1004, 1149, 1149, 1149, + /* 200 */ 1005, 1149, 1149, 1149, 1149, 1149, 894, 865, 1149, 1149, + /* 210 */ 1149, 1087, 1149, 1149, 777, 1149, 879, 739, 945, 919, + /* 220 */ 919, 810, 834, 799, 929, 919, 909, 929, 1149, 1149, + /* 230 */ 892, 879, 1034, 1006, 1127, 910, 910, 910, 1112, 1112, + /* 240 */ 910, 910, 856, 910, 856, 910, 856, 910, 856, 910, + /* 250 */ 761, 945, 910, 761, 847, 969, 910, 910, 847, 945, + /* 260 */ 910, 1094, 1092, 910, 761, 910, 1047, 761, 910, 1047, + /* 270 */ 845, 845, 845, 845, 826, 1047, 845, 810, 845, 826, + /* 280 */ 845, 845, 910, 1149, 910, 1047, 1053, 1047, 935, 923, + /* 290 */ 933, 930, 945, 1149, 1149, 1028, 1007, 758, 829, 761, + /* 300 */ 747, 747, 735, 735, 735, 735, 1140, 1140, 1136, 812, + /* 310 */ 812, 897, 1016, 1015, 1014, 786, 1040, 1149, 1149, 1149, + /* 320 */ 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, 1149, /* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 731, /* 340 */ 1149, 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149, /* 350 */ 1149, 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149, /* 360 */ 1149, 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149, /* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - /* 380 */ 1149, 1149, 1149, 1149, 1149, 868, 870, 1149, 1149, 1149, - /* 390 */ 869, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - /* 400 */ 931, 1149, 924, 1149, 1037, 1149, 1018, 1026, 1149, 1149, - /* 410 */ 1149, 1149, 1149, 1017, 1149, 1149, 1149, 1145, 1149, 1149, - /* 420 */ 1149, 1144, 1149, 1149, 1149, 1149, 1149, 1029, 981, 1149, - /* 430 */ 980, 979, 770, 1149, 745, 1149, 727, 732, 1129, 1126, + /* 380 */ 1149, 1149, 1149, 1149, 1149, 980, 1027, 1149, 868, 870, + /* 390 */ 1149, 1037, 1149, 1149, 869, 1149, 1149, 1149, 1149, 1149, + /* 400 */ 1149, 1149, 1149, 1149, 931, 1149, 924, 1149, 1149, 1149, + /* 410 */ 1149, 1145, 1149, 1149, 1149, 1144, 1149, 1149, 1149, 1149, + /* 420 */ 1149, 1149, 1149, 1149, 1149, 1149, 979, 1029, 993, 1149, + /* 430 */ 992, 991, 770, 1149, 745, 1149, 727, 732, 1129, 1126, /* 440 */ 1128, 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115, /* 450 */ 1114, 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070, /* 460 */ 1069, 1068, 1064, 1062, 1066, 1060, 960, 948, 939, 863, @@ -854,16 +852,16 @@ static const YYACTIONTYPE yy_default[] = { /* 560 */ 817, 816, 823, 822, 821, 820, 819, 815, 818, 814, /* 570 */ 813, 805, 798, 797, 811, 796, 828, 827, 824, 795, /* 580 */ 851, 850, 849, 846, 794, 793, 792, 791, 790, 789, - /* 590 */ 987, 986, 1007, 978, 866, 873, 872, 871, 875, 876, - /* 600 */ 886, 884, 883, 882, 918, 917, 916, 915, 914, 913, - /* 610 */ 906, 904, 900, 899, 905, 903, 921, 922, 920, 898, - /* 620 */ 890, 888, 889, 887, 975, 972, 974, 971, 908, 896, - /* 630 */ 893, 880, 926, 925, 1030, 1019, 1009, 1020, 911, 1008, - /* 640 */ 1006, 1029, 1026, 1021, 1103, 1025, 1013, 1012, 1011, 1148, - /* 650 */ 1146, 1147, 1050, 1052, 1055, 1054, 1051, 928, 927, 1049, - /* 660 */ 1048, 1010, 985, 782, 780, 781, 1075, 1074, 1077, 1076, - /* 670 */ 1073, 784, 783, 779, 778, 999, 998, 983, 1022, 1023, - /* 680 */ 982, 1024, 984, 771, 874, 867, 977, 976, 809, 808, + /* 590 */ 999, 998, 1030, 1021, 982, 981, 1020, 1018, 1029, 1019, + /* 600 */ 990, 866, 873, 872, 871, 875, 876, 886, 884, 883, + /* 610 */ 882, 918, 917, 916, 915, 914, 913, 906, 904, 900, + /* 620 */ 899, 911, 905, 903, 921, 922, 920, 898, 890, 888, + /* 630 */ 889, 887, 975, 972, 974, 971, 908, 896, 893, 880, + /* 640 */ 926, 925, 1027, 1148, 1146, 1147, 1050, 1052, 1055, 1054, + /* 650 */ 1051, 928, 927, 1049, 1048, 1022, 997, 782, 780, 781, + /* 660 */ 1075, 1074, 1077, 1076, 1073, 784, 783, 779, 778, 995, + /* 670 */ 874, 867, 989, 988, 1103, 1024, 1025, 987, 983, 1023, + /* 680 */ 1011, 1010, 996, 986, 771, 984, 994, 985, 809, 808, /* 690 */ 807, 806, 878, 877, 788, 802, 787, 785, 765, 760, /* 700 */ 759, 754, 752, 749, 751, 748, 753, 750, 746, 744, /* 710 */ 743, 742, 741, 740, 774, 773, 772, 770, 738, 737, @@ -1130,8 +1128,8 @@ static const char *const yyTokenName[] = { "DISTINCT", "ID_ALIAS", "FROM", "USING", "JOIN", "ID_JOIN_OPTS", "ID_IDX", "ORDER", "GROUP", "HAVING", "LIMIT", "WHERE", - "ID_COL", "INTO", "VARIABLE", "CASE", - "ID_FN", "ID_ERR_MSG", "WHEN", "THEN", + "ID_COL", "INTO", "CASE", "ID_FN", + "ID_ERR_MSG", "VARIABLE", "WHEN", "THEN", "ELSE", "INDEX", "ID_IDX_NEW", "ID_PRAGMA", "ID_TRIG_NEW", "ID_TRIG", "ALTER", "ADD", "error", "cmd", "input", "cmdlist", @@ -1155,8 +1153,8 @@ static const char *const yyTokenName[] = { "joinconstr_opt", "dbnm", "indexed_opt", "inscollist", "sortlist", "delete_stmt", "update_stmt", "setlist", "insert_stmt", "insert_cmd", "inscollist_opt", "exprx", - "not_opt", "likeop", "case_operand", "case_exprlist", - "case_else", "uniqueflag", "idxlist_single", "collate", + "not_opt", "case_operand", "case_exprlist", "case_else", + "likeop", "uniqueflag", "idxlist_single", "collate", "nmnum", "number", "trigger_time", "trigger_event", "foreach_clause", "when_clause", "trigger_cmd_list", "trigger_cmd", "database_kw_opt", "key_opt", "kwcolumn_opt", "create_vtab", @@ -1420,58 +1418,58 @@ static const char *const yyRuleName[] = { /* 248 */ "inscollist ::=", /* 249 */ "inscollist ::= inscollist COMMA ID_COL", /* 250 */ "inscollist ::= ID_COL", - /* 251 */ "exprx ::= term", - /* 252 */ "exprx ::= CTIME_KW", - /* 253 */ "exprx ::= LP expr RP", - /* 254 */ "exprx ::= id", - /* 255 */ "exprx ::= JOIN_KW", - /* 256 */ "exprx ::= nm DOT nm", - /* 257 */ "exprx ::= nm DOT nm DOT nm", - /* 258 */ "exprx ::= VARIABLE", - /* 259 */ "exprx ::= expr COLLATE ids", - /* 260 */ "exprx ::= CAST LP expr AS typetoken RP", - /* 261 */ "exprx ::= ID LP distinct exprlist RP", - /* 262 */ "exprx ::= ID LP STAR RP", - /* 263 */ "exprx ::= expr AND expr", - /* 264 */ "exprx ::= expr OR expr", - /* 265 */ "exprx ::= expr LT|GT|GE|LE expr", - /* 266 */ "exprx ::= expr EQ|NE expr", - /* 267 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", - /* 268 */ "exprx ::= expr PLUS|MINUS expr", - /* 269 */ "exprx ::= expr STAR|SLASH|REM expr", - /* 270 */ "exprx ::= expr CONCAT expr", - /* 271 */ "exprx ::= expr not_opt likeop expr", - /* 272 */ "exprx ::= expr not_opt likeop expr ESCAPE expr", - /* 273 */ "exprx ::= expr ISNULL|NOTNULL", - /* 274 */ "exprx ::= expr NOT NULL", - /* 275 */ "exprx ::= expr IS not_opt expr", - /* 276 */ "exprx ::= NOT expr", - /* 277 */ "exprx ::= BITNOT expr", - /* 278 */ "exprx ::= MINUS expr", - /* 279 */ "exprx ::= PLUS expr", - /* 280 */ "exprx ::= expr not_opt BETWEEN expr AND expr", - /* 281 */ "exprx ::= expr not_opt IN LP exprlist RP", - /* 282 */ "exprx ::= LP select RP", - /* 283 */ "exprx ::= expr not_opt IN LP select RP", - /* 284 */ "exprx ::= expr not_opt IN nm dbnm", - /* 285 */ "exprx ::= EXISTS LP select RP", - /* 286 */ "exprx ::= CASE case_operand case_exprlist case_else END", - /* 287 */ "exprx ::= RAISE LP IGNORE RP", - /* 288 */ "exprx ::= RAISE LP raisetype COMMA nm RP", - /* 289 */ "exprx ::= nm DOT", - /* 290 */ "exprx ::= nm DOT nm DOT", - /* 291 */ "exprx ::= expr not_opt BETWEEN expr AND", - /* 292 */ "exprx ::= CASE case_operand case_exprlist case_else", - /* 293 */ "exprx ::= expr not_opt IN LP exprlist", - /* 294 */ "exprx ::= expr not_opt IN ID_DB", - /* 295 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", - /* 296 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", - /* 297 */ "exprx ::= nm DOT ID_TAB|ID_COL", - /* 298 */ "exprx ::= nm DOT nm DOT ID_COL", - /* 299 */ "exprx ::= expr COLLATE ID_COLLATE", - /* 300 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", - /* 301 */ "expr ::= exprx", - /* 302 */ "expr ::=", + /* 251 */ "exprx ::= nm DOT", + /* 252 */ "exprx ::= nm DOT nm DOT", + /* 253 */ "exprx ::= expr not_opt BETWEEN expr AND", + /* 254 */ "exprx ::= CASE case_operand case_exprlist case_else", + /* 255 */ "exprx ::= expr not_opt IN LP exprlist", + /* 256 */ "exprx ::= expr not_opt IN ID_DB", + /* 257 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", + /* 258 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", + /* 259 */ "exprx ::= nm DOT ID_TAB|ID_COL", + /* 260 */ "exprx ::= nm DOT nm DOT ID_COL", + /* 261 */ "exprx ::= expr COLLATE ID_COLLATE", + /* 262 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", + /* 263 */ "exprx ::= term", + /* 264 */ "exprx ::= CTIME_KW", + /* 265 */ "exprx ::= LP nexprlist RP", + /* 266 */ "exprx ::= id", + /* 267 */ "exprx ::= JOIN_KW", + /* 268 */ "exprx ::= nm DOT nm", + /* 269 */ "exprx ::= nm DOT nm DOT nm", + /* 270 */ "exprx ::= VARIABLE", + /* 271 */ "exprx ::= expr COLLATE ids", + /* 272 */ "exprx ::= CAST LP expr AS typetoken RP", + /* 273 */ "exprx ::= ID LP distinct exprlist RP", + /* 274 */ "exprx ::= ID LP STAR RP", + /* 275 */ "exprx ::= expr AND expr", + /* 276 */ "exprx ::= expr OR expr", + /* 277 */ "exprx ::= expr LT|GT|GE|LE expr", + /* 278 */ "exprx ::= expr EQ|NE expr", + /* 279 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr", + /* 280 */ "exprx ::= expr PLUS|MINUS expr", + /* 281 */ "exprx ::= expr STAR|SLASH|REM expr", + /* 282 */ "exprx ::= expr CONCAT expr", + /* 283 */ "exprx ::= expr not_opt likeop expr", + /* 284 */ "exprx ::= expr not_opt likeop expr ESCAPE expr", + /* 285 */ "exprx ::= expr ISNULL|NOTNULL", + /* 286 */ "exprx ::= expr NOT NULL", + /* 287 */ "exprx ::= expr IS not_opt expr", + /* 288 */ "exprx ::= NOT expr", + /* 289 */ "exprx ::= BITNOT expr", + /* 290 */ "exprx ::= MINUS expr", + /* 291 */ "exprx ::= PLUS expr", + /* 292 */ "exprx ::= expr not_opt BETWEEN expr AND expr", + /* 293 */ "exprx ::= expr not_opt IN LP exprlist RP", + /* 294 */ "exprx ::= LP select RP", + /* 295 */ "exprx ::= expr not_opt IN LP select RP", + /* 296 */ "exprx ::= expr not_opt IN nm dbnm", + /* 297 */ "exprx ::= EXISTS LP select RP", + /* 298 */ "exprx ::= CASE case_operand case_exprlist case_else END", + /* 299 */ "exprx ::= RAISE LP IGNORE RP", + /* 300 */ "exprx ::= RAISE LP raisetype COMMA nm RP", + /* 301 */ "expr ::=", + /* 302 */ "expr ::= exprx", /* 303 */ "not_opt ::=", /* 304 */ "not_opt ::= NOT", /* 305 */ "likeop ::= LIKE_KW|MATCH", @@ -1788,8 +1786,8 @@ delete (yypminor->yy4); case 227: /* where_opt */ case 229: /* having_opt */ case 251: /* exprx */ - case 254: /* case_operand */ - case 256: /* case_else */ + case 253: /* case_operand */ + case 255: /* case_else */ { delete (yypminor->yy490); } @@ -1879,7 +1877,7 @@ delete (yypminor->yy373); case 228: /* groupby_opt */ case 232: /* nexprlist */ case 233: /* exprlist */ - case 255: /* case_exprlist */ + case 254: /* case_exprlist */ { delete (yypminor->yy13); } @@ -1942,7 +1940,7 @@ delete (yypminor->yy381); delete (yypminor->yy250); } break; - case 253: /* likeop */ + case 256: /* likeop */ { delete (yypminor->yy374); } @@ -2477,6 +2475,18 @@ static const struct { { 243, 0 }, { 243, 3 }, { 243, 1 }, + { 251, 2 }, + { 251, 4 }, + { 251, 5 }, + { 251, 4 }, + { 251, 5 }, + { 251, 4 }, + { 251, 6 }, + { 251, 1 }, + { 251, 3 }, + { 251, 5 }, + { 251, 3 }, + { 251, 6 }, { 251, 1 }, { 251, 1 }, { 251, 3 }, @@ -2515,29 +2525,17 @@ static const struct { { 251, 5 }, { 251, 4 }, { 251, 6 }, - { 251, 2 }, - { 251, 4 }, - { 251, 5 }, - { 251, 4 }, - { 251, 5 }, - { 251, 4 }, - { 251, 6 }, - { 251, 1 }, - { 251, 3 }, - { 251, 5 }, - { 251, 3 }, - { 251, 6 }, - { 199, 1 }, { 199, 0 }, + { 199, 1 }, { 252, 0 }, { 252, 1 }, + { 256, 1 }, + { 254, 5 }, + { 254, 4 }, + { 255, 2 }, + { 255, 0 }, { 253, 1 }, - { 255, 5 }, - { 255, 4 }, - { 256, 2 }, - { 256, 0 }, - { 254, 1 }, - { 254, 0 }, + { 253, 0 }, { 233, 1 }, { 233, 0 }, { 232, 3 }, @@ -3382,7 +3380,7 @@ static void yy_reduce( case 179: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==179); case 180: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==180); case 181: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==181); - case 297: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==297); + case 259: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==259); case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==318); case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==319); case 332: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==332); @@ -3818,7 +3816,7 @@ static void yy_reduce( break; case 209: /* having_opt ::= HAVING expr */ case 221: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==221); - case 301: /* expr ::= exprx */ yytestcase(yyruleno==301); + case 302: /* expr ::= exprx */ yytestcase(yyruleno==302); case 308: /* case_else ::= ELSE expr */ yytestcase(yyruleno==308); case 310: /* case_operand ::= exprx */ yytestcase(yyruleno==310); case 370: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==370); @@ -4112,7 +4110,76 @@ static void yy_reduce( { yy_destructor(yypParser,243,&yymsp[-2].minor); } break; - case 251: /* exprx ::= term */ + case 251: /* exprx ::= nm DOT */ +{ + yygotominor.yy490 = new SqliteExpr(); + yygotominor.yy490->initId(*(yymsp[-1].minor.yy211), QString::null, QString::null); + delete yymsp[-1].minor.yy211; + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.>"); + } + break; + case 252: /* exprx ::= nm DOT nm DOT */ +{ + yygotominor.yy490 = new SqliteExpr(); + yygotominor.yy490->initId(*(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy211), QString::null); + delete yymsp[-3].minor.yy211; + delete yymsp[-1].minor.yy211; + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.nm.>"); + } + break; + case 253: /* exprx ::= expr not_opt BETWEEN expr AND */ +{ + yygotominor.yy490 = new SqliteExpr(); + delete yymsp[-3].minor.yy237; + delete yymsp[-4].minor.yy490; + delete yymsp[-1].minor.yy490; + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt BETWEEN expr AND>"); + } + break; + case 254: /* exprx ::= CASE case_operand case_exprlist case_else */ +{ + yygotominor.yy490 = new SqliteExpr(); + delete yymsp[-1].minor.yy13; + delete yymsp[-2].minor.yy490; + delete yymsp[0].minor.yy490; + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: CASE operand exprlist else>"); + } + break; + case 255: /* exprx ::= expr not_opt IN LP exprlist */ +{ + yygotominor.yy490 = new SqliteExpr(); + delete yymsp[-3].minor.yy237; + delete yymsp[0].minor.yy13; + delete yymsp[-4].minor.yy490; + objectForTokens = yygotominor.yy490; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt IN LP exprlist>"); + } + break; + case 256: /* exprx ::= expr not_opt IN ID_DB */ +{ yy_destructor(yypParser,199,&yymsp[-3].minor); +} + break; + case 257: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ + case 258: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==258); +{ yy_destructor(yypParser,199,&yymsp[-5].minor); + yy_destructor(yypParser,177,&yymsp[-2].minor); +} + break; + case 260: /* exprx ::= nm DOT nm DOT ID_COL */ +{ yy_destructor(yypParser,177,&yymsp[-4].minor); + yy_destructor(yypParser,177,&yymsp[-2].minor); +} + break; + case 261: /* exprx ::= expr COLLATE ID_COLLATE */ + case 262: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==262); +{ yy_destructor(yypParser,199,&yymsp[-2].minor); +} + break; + case 263: /* exprx ::= term */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initLiteral(*(yymsp[0].minor.yy21)); @@ -4120,21 +4187,22 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 252: /* exprx ::= CTIME_KW */ + case 264: /* exprx ::= CTIME_KW */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initCTime(yymsp[0].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 253: /* exprx ::= LP expr RP */ + case 265: /* exprx ::= LP nexprlist RP */ { yygotominor.yy490 = new SqliteExpr(); - yygotominor.yy490->initSubExpr(yymsp[-1].minor.yy490); + yygotominor.yy490->initRowValue(*(yymsp[-1].minor.yy13)); + delete yymsp[-1].minor.yy13; objectForTokens = yygotominor.yy490; } break; - case 254: /* exprx ::= id */ + case 266: /* exprx ::= id */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initId(*(yymsp[0].minor.yy211)); @@ -4142,14 +4210,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 255: /* exprx ::= JOIN_KW */ + case 267: /* exprx ::= JOIN_KW */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initId(yymsp[0].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 256: /* exprx ::= nm DOT nm */ + case 268: /* exprx ::= nm DOT nm */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initId(*(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy211)); @@ -4158,7 +4226,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 257: /* exprx ::= nm DOT nm DOT nm */ + case 269: /* exprx ::= nm DOT nm DOT nm */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initId(*(yymsp[-4].minor.yy211), *(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy211)); @@ -4168,14 +4236,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 258: /* exprx ::= VARIABLE */ + case 270: /* exprx ::= VARIABLE */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initBindParam(yymsp[0].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 259: /* exprx ::= expr COLLATE ids */ + case 271: /* exprx ::= expr COLLATE ids */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initCollate(yymsp[-2].minor.yy490, *(yymsp[0].minor.yy211)); @@ -4183,14 +4251,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 260: /* exprx ::= CAST LP expr AS typetoken RP */ + case 272: /* exprx ::= CAST LP expr AS typetoken RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initCast(yymsp[-3].minor.yy490, yymsp[-1].minor.yy299); objectForTokens = yygotominor.yy490; } break; - case 261: /* exprx ::= ID LP distinct exprlist RP */ + case 273: /* exprx ::= ID LP distinct exprlist RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initFunction(yymsp[-4].minor.yy0->value, *(yymsp[-2].minor.yy376), *(yymsp[-1].minor.yy13)); @@ -4199,28 +4267,28 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 262: /* exprx ::= ID LP STAR RP */ + case 274: /* exprx ::= ID LP STAR RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initFunction(yymsp[-3].minor.yy0->value, true); objectForTokens = yygotominor.yy490; } break; - case 263: /* exprx ::= expr AND expr */ - case 264: /* exprx ::= expr OR expr */ yytestcase(yyruleno==264); - case 265: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==265); - case 266: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==266); - case 267: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==267); - case 268: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==268); - case 269: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==269); - case 270: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==270); + case 275: /* exprx ::= expr AND expr */ + case 276: /* exprx ::= expr OR expr */ yytestcase(yyruleno==276); + case 277: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==277); + case 278: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==278); + case 279: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==279); + case 280: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==280); + case 281: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==281); + case 282: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==282); { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initBinOp(yymsp[-2].minor.yy490, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy490); objectForTokens = yygotominor.yy490; } break; - case 271: /* exprx ::= expr not_opt likeop expr */ + case 283: /* exprx ::= expr not_opt likeop expr */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initLike(yymsp[-3].minor.yy490, *(yymsp[-2].minor.yy237), *(yymsp[-1].minor.yy374), yymsp[0].minor.yy490); @@ -4229,7 +4297,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 272: /* exprx ::= expr not_opt likeop expr ESCAPE expr */ + case 284: /* exprx ::= expr not_opt likeop expr ESCAPE expr */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initLike(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), *(yymsp[-3].minor.yy374), yymsp[-2].minor.yy490, yymsp[0].minor.yy490); @@ -4238,21 +4306,21 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 273: /* exprx ::= expr ISNULL|NOTNULL */ + case 285: /* exprx ::= expr ISNULL|NOTNULL */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initNull(yymsp[-1].minor.yy490, yymsp[0].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 274: /* exprx ::= expr NOT NULL */ + case 286: /* exprx ::= expr NOT NULL */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initNull(yymsp[-2].minor.yy490, "NOT NULL"); objectForTokens = yygotominor.yy490; } break; - case 275: /* exprx ::= expr IS not_opt expr */ + case 287: /* exprx ::= expr IS not_opt expr */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initIs(yymsp[-3].minor.yy490, *(yymsp[-1].minor.yy237), yymsp[0].minor.yy490); @@ -4260,21 +4328,21 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 276: /* exprx ::= NOT expr */ + case 288: /* exprx ::= NOT expr */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initUnaryOp(yymsp[0].minor.yy490, yymsp[-1].minor.yy0->value); } break; - case 277: /* exprx ::= BITNOT expr */ - case 279: /* exprx ::= PLUS expr */ yytestcase(yyruleno==279); + case 289: /* exprx ::= BITNOT expr */ + case 291: /* exprx ::= PLUS expr */ yytestcase(yyruleno==291); { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initUnaryOp(yymsp[0].minor.yy490, yymsp[-1].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 278: /* exprx ::= MINUS expr */ + case 290: /* exprx ::= MINUS expr */ { yygotominor.yy490 = new SqliteExpr(); if (yymsp[0].minor.yy490->mode == SqliteExpr::Mode::LITERAL_VALUE && @@ -4291,7 +4359,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 280: /* exprx ::= expr not_opt BETWEEN expr AND expr */ + case 292: /* exprx ::= expr not_opt BETWEEN expr AND expr */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initBetween(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), yymsp[-2].minor.yy490, yymsp[0].minor.yy490); @@ -4299,7 +4367,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 281: /* exprx ::= expr not_opt IN LP exprlist RP */ + case 293: /* exprx ::= expr not_opt IN LP exprlist RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initIn(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), *(yymsp[-1].minor.yy13)); @@ -4308,14 +4376,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 282: /* exprx ::= LP select RP */ + case 294: /* exprx ::= LP select RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initSubSelect(yymsp[-1].minor.yy123); objectForTokens = yygotominor.yy490; } break; - case 283: /* exprx ::= expr not_opt IN LP select RP */ + case 295: /* exprx ::= expr not_opt IN LP select RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initIn(yymsp[-5].minor.yy490, *(yymsp[-4].minor.yy237), yymsp[-1].minor.yy123); @@ -4323,7 +4391,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 284: /* exprx ::= expr not_opt IN nm dbnm */ + case 296: /* exprx ::= expr not_opt IN nm dbnm */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initIn(yymsp[-4].minor.yy490, *(yymsp[-3].minor.yy237), *(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); @@ -4332,14 +4400,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 285: /* exprx ::= EXISTS LP select RP */ + case 297: /* exprx ::= EXISTS LP select RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initExists(yymsp[-1].minor.yy123); objectForTokens = yygotominor.yy490; } break; - case 286: /* exprx ::= CASE case_operand case_exprlist case_else END */ + case 298: /* exprx ::= CASE case_operand case_exprlist case_else END */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initCase(yymsp[-3].minor.yy490, *(yymsp[-2].minor.yy13), yymsp[-1].minor.yy490); @@ -4347,14 +4415,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 287: /* exprx ::= RAISE LP IGNORE RP */ + case 299: /* exprx ::= RAISE LP IGNORE RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initRaise(yymsp[-1].minor.yy0->value); objectForTokens = yygotominor.yy490; } break; - case 288: /* exprx ::= RAISE LP raisetype COMMA nm RP */ + case 300: /* exprx ::= RAISE LP raisetype COMMA nm RP */ { yygotominor.yy490 = new SqliteExpr(); yygotominor.yy490->initRaise(yymsp[-3].minor.yy0->value, *(yymsp[-1].minor.yy211)); @@ -4362,80 +4430,11 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; - case 289: /* exprx ::= nm DOT */ + case 301: /* expr ::= */ { yygotominor.yy490 = new SqliteExpr(); - yygotominor.yy490->initId(*(yymsp[-1].minor.yy211), QString::null, QString::null); - delete yymsp[-1].minor.yy211; objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 290: /* exprx ::= nm DOT nm DOT */ -{ - yygotominor.yy490 = new SqliteExpr(); - yygotominor.yy490->initId(*(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy211), QString::null); - delete yymsp[-3].minor.yy211; - delete yymsp[-1].minor.yy211; - objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 291: /* exprx ::= expr not_opt BETWEEN expr AND */ -{ - yygotominor.yy490 = new SqliteExpr(); - delete yymsp[-3].minor.yy237; - delete yymsp[-4].minor.yy490; - delete yymsp[-1].minor.yy490; - objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 292: /* exprx ::= CASE case_operand case_exprlist case_else */ -{ - yygotominor.yy490 = new SqliteExpr(); - delete yymsp[-1].minor.yy13; - delete yymsp[-2].minor.yy490; - delete yymsp[0].minor.yy490; - objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 293: /* exprx ::= expr not_opt IN LP exprlist */ -{ - yygotominor.yy490 = new SqliteExpr(); - delete yymsp[-3].minor.yy237; - delete yymsp[0].minor.yy13; - delete yymsp[-4].minor.yy490; - objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 294: /* exprx ::= expr not_opt IN ID_DB */ -{ yy_destructor(yypParser,199,&yymsp[-3].minor); -} - break; - case 295: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ - case 296: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==296); -{ yy_destructor(yypParser,199,&yymsp[-5].minor); - yy_destructor(yypParser,177,&yymsp[-2].minor); -} - break; - case 298: /* exprx ::= nm DOT nm DOT ID_COL */ -{ yy_destructor(yypParser,177,&yymsp[-4].minor); - yy_destructor(yypParser,177,&yymsp[-2].minor); -} - break; - case 299: /* exprx ::= expr COLLATE ID_COLLATE */ - case 300: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==300); -{ yy_destructor(yypParser,199,&yymsp[-2].minor); -} - break; - case 302: /* expr ::= */ -{ - yygotominor.yy490 = new SqliteExpr(); - objectForTokens = yygotominor.yy490; - parserContext->minorErrorAfterLastToken("Syntax error"); + parserContext->minorErrorAfterLastToken("Syntax error <expr>"); } break; case 305: /* likeop ::= LIKE_KW|MATCH */ diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h index d18c81c..92a40ca 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h @@ -151,10 +151,10 @@ #define TK3_WHERE 151 #define TK3_ID_COL 152 #define TK3_INTO 153 -#define TK3_VARIABLE 154 -#define TK3_CASE 155 -#define TK3_ID_FN 156 -#define TK3_ID_ERR_MSG 157 +#define TK3_CASE 154 +#define TK3_ID_FN 155 +#define TK3_ID_ERR_MSG 156 +#define TK3_VARIABLE 157 #define TK3_WHEN 158 #define TK3_THEN 159 #define TK3_ELSE 160 diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y index 932e965..0dc9154 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y @@ -1455,6 +1455,70 @@ inscollist ::= ID_COL. {} %type exprx {SqliteExpr*} %destructor exprx {delete $$;} + +exprx(X) ::= nm(N1) DOT. { + X = new SqliteExpr(); + X->initId(*(N1), QString::null, QString::null); + delete N1; + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.>"); + } +exprx(X) ::= nm(N1) DOT nm(N2) DOT. { + X = new SqliteExpr(); + X->initId(*(N1), *(N2), QString::null); + delete N1; + delete N2; + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: nm.nm.>"); + } +exprx(X) ::= expr(E1) not_opt(N) BETWEEN + expr(E2) AND. { + X = new SqliteExpr(); + delete N; + delete E1; + delete E2; + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt BETWEEN expr AND>"); + } +exprx(X) ::= CASE case_operand(O) + case_exprlist(L) + case_else(E). { + X = new SqliteExpr(); + delete L; + delete O; + delete E; + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: CASE operand exprlist else>"); + } +exprx(X) ::= expr(E) not_opt(N) IN LP + exprlist(L). [IN] { + X = new SqliteExpr(); + delete N; + delete L; + delete E; + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: expr not_opt IN LP exprlist>"); + } +/* +This introduces premature reduce for LP-expr and causes bug #2755 +exprx(X) ::= LP expr(E). { + X = new SqliteExpr(); + X->initSubExpr(E); + objectForTokens = X; + parserContext->minorErrorBeforeNextToken("Syntax error <exprx: LP expr>"); + } +*/ +exprx ::= expr not_opt IN ID_DB. [IN] {} +exprx ::= expr not_opt IN nm DOT + ID_TAB. [IN] {} +exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN. {} +exprx ::= nm DOT ID_TAB|ID_COL. {} +exprx ::= nm DOT nm DOT ID_COL. {} +exprx ::= expr COLLATE ID_COLLATE. {} +exprx ::= RAISE LP raisetype COMMA + ID_ERR_MSG RP. {} + + exprx(X) ::= term(T). { X = new SqliteExpr(); X->initLiteral(*(T)); @@ -1466,11 +1530,19 @@ exprx(X) ::= CTIME_KW(K). { X->initCTime(K->value); objectForTokens = X; } +exprx(X) ::= LP nexprlist(L) RP. { + X = new SqliteExpr(); + X->initRowValue(*(L)); + delete L; + objectForTokens = X; + } +/* exprx(X) ::= LP expr(E) RP. { X = new SqliteExpr(); X->initSubExpr(E); objectForTokens = X; } +*/ exprx(X) ::= id(N). { X = new SqliteExpr(); X->initId(*(N)); @@ -1697,77 +1769,15 @@ exprx(X) ::= RAISE LP raisetype(R) COMMA delete N; objectForTokens = X; } -exprx(X) ::= nm(N1) DOT. { - X = new SqliteExpr(); - X->initId(*(N1), QString::null, QString::null); - delete N1; - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -exprx(X) ::= nm(N1) DOT nm(N2) DOT. { - X = new SqliteExpr(); - X->initId(*(N1), *(N2), QString::null); - delete N1; - delete N2; - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -exprx(X) ::= expr(E1) not_opt(N) BETWEEN - expr(E2) AND. { - X = new SqliteExpr(); - delete N; - delete E1; - delete E2; - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -exprx(X) ::= CASE case_operand(O) - case_exprlist(L) - case_else(E). { - X = new SqliteExpr(); - delete L; - delete O; - delete E; - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -exprx(X) ::= expr(E) not_opt(N) IN LP - exprlist(L). [IN] { - X = new SqliteExpr(); - delete N; - delete L; - delete E; - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -/* -This introduces premature reduce for LP-expr and causes bug #2755 -exprx(X) ::= LP expr(E). { - X = new SqliteExpr(); - X->initSubExpr(E); - objectForTokens = X; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } -*/ - -exprx ::= expr not_opt IN ID_DB. [IN] {} -exprx ::= expr not_opt IN nm DOT - ID_TAB. [IN] {} -exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN. {} -exprx ::= nm DOT ID_TAB|ID_COL. {} -exprx ::= nm DOT nm DOT ID_COL. {} -exprx ::= expr COLLATE ID_COLLATE. {} -exprx ::= RAISE LP raisetype COMMA - ID_ERR_MSG RP. {} %type expr {SqliteExpr*} %destructor expr {delete $$;} -expr(X) ::= exprx(E). {X = E;} expr(X) ::= . { X = new SqliteExpr(); objectForTokens = X; - parserContext->minorErrorAfterLastToken("Syntax error"); + parserContext->minorErrorAfterLastToken("Syntax error <expr>"); } +expr(X) ::= exprx(E). {X = E;} %type not_opt {bool*} %destructor not_opt {delete $$;} diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp index a97b765..a0a0e3a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp @@ -72,7 +72,7 @@ StatementTokenBuilder& StatementTokenBuilder::withComment(const QString& value) return with(Token::COMMENT, value); } -StatementTokenBuilder& StatementTokenBuilder::withFloat(double value) +StatementTokenBuilder& StatementTokenBuilder::withFloat(const QVariant& value) { return with(Token::FLOAT, doubleToString(value)); } @@ -163,7 +163,7 @@ StatementTokenBuilder& StatementTokenBuilder::withLiteralValue(const QVariant& v value.toDouble(&ok); if (ok) { - withFloat(value.toDouble()); + withFloat(value); return *this; } } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h index 3d748ad..14856e7 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h @@ -131,7 +131,7 @@ class StatementTokenBuilder * @param value Value for the token. * @return Reference to the builder for the further building. */ - StatementTokenBuilder& withFloat(double value); + StatementTokenBuilder& withFloat(const QVariant &value); /** * @brief Add integer numer token. diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp index f2102c3..5396edd 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp @@ -490,6 +490,16 @@ TokenList TokenList::filter(Token::Type type) const return filtered; } +TokenList TokenList::filterOut(Token::Type type) const +{ + TokenList filtered; + foreach (TokenPtr token, *this) + if (token->type != type) + filtered << token; + + return filtered; +} + TokenList TokenList::filterWhiteSpaces(bool includeComments) const { TokenList filtered; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.h b/SQLiteStudio3/coreSQLiteStudio/parser/token.h index aecc7ec..aeb505c 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/token.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.h @@ -626,6 +626,7 @@ class API_EXPORT TokenList : public QList<TokenPtr> * @return List of tokens from this list matching given \p type. */ TokenList filter(Token::Type type) const; + TokenList filterOut(Token::Type type) const; /** * @brief Creates list of tokens from this list, letting through only tokens that are not a whitespace. |
