aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2015-01-30 17:00:24 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2015-01-30 17:00:24 -0500
commite4767514ed04e6a0bddf3f4a47f5f0b09e65e0ee (patch)
tree86cadc2137831d44fa29fd40a2964f7fb1326de4 /SQLiteStudio3/coreSQLiteStudio/parser
parent26ddfe11c2b7fac52e5f57dcd9f5223a50b2a9a7 (diff)
parent016003905ca0e8e459e3dc33e786beda8ec92f45 (diff)
Merge tag 'upstream/3.0.2'
Upstream version 3.0.2 # gpg: Signature made Fri 30 Jan 2015 05:00:11 PM EST using RSA key ID EBE9BD91 # gpg: Good signature from "Unit 193 <unit193@gmail.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.org>" # gpg: aka "Unit 193 <unit193@ubuntu.com>"
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp530
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp714
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y7
7 files changed, 656 insertions, 615 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
index 969f029..1429cef 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
@@ -457,7 +457,11 @@ TokenList SqliteExpr::rebuildTokensFromContents()
builder.withStatement(expr1).withSpace().withOperator(binaryOp).withSpace().withStatement(expr2);
break;
case SqliteExpr::Mode::FUNCTION:
- builder.withOther(function).withParLeft().withStatementList(exprList).withParRight();
+ builder.withOther(function).withParLeft();
+ if (distinctKw)
+ builder.withKeyword("DISTINCT");
+
+ builder.withStatementList(exprList).withParRight();
break;
case SqliteExpr::Mode::SUB_EXPR:
builder.withParLeft().withStatement(expr1).withParRight();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
index 039c9a5..9299c52 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
@@ -21,6 +21,7 @@ ParserIndexedBy::ParserIndexedBy(bool notIndexed)
ParserStubInsertOrReplace::ParserStubInsertOrReplace(bool replace)
{
this->replace = replace;
+ this->orConflict = SqliteConflictAlgo::null;
}
ParserStubInsertOrReplace::ParserStubInsertOrReplace(bool replace, SqliteConflictAlgo orConflict)
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
index 7394e75..e9444e5 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
@@ -27,7 +27,12 @@ void ParserContext::error(TokenPtr token, const QString &text)
void ParserContext::error(Token* token, const QString& text)
{
- error(getTokenPtr(token), text);
+ if (token->type != Token::INVALID)
+ error(getTokenPtr(token), text);
+ else if (managedTokens.size() > 0)
+ error(managedTokens.last(), text);
+ else
+ error(text);
}
void ParserContext::error(const QString &text)
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
index fa61c21..656444a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
@@ -165,7 +165,7 @@ typedef union {
#define sqlite2_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext
#define sqlite2_parseARG_STORE yypParser->parserContext = parserContext
#define YYNSTATE 584
-#define YYNRULE 352
+#define YYNRULE 353
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
@@ -241,16 +241,16 @@ static const YYMINORTYPE yyzerominor = { 0 };
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 338, 191, 186, 242, 476, 511, 576, 193, 332, 16,
/* 10 */ 511, 384, 189, 322, 239, 519, 518, 570, 337, 450,
- /* 20 */ 15, 851, 125, 58, 575, 179, 851, 574, 63, 143,
+ /* 20 */ 15, 852, 125, 58, 575, 179, 852, 574, 63, 143,
/* 30 */ 401, 581, 328, 26, 84, 569, 114, 322, 573, 519,
- /* 40 */ 518, 851, 851, 35, 851, 851, 851, 851, 851, 851,
- /* 50 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 32,
- /* 60 */ 33, 851, 851, 851, 851, 320, 379, 34, 240, 238,
+ /* 40 */ 518, 852, 852, 35, 852, 852, 852, 852, 852, 852,
+ /* 50 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 32,
+ /* 60 */ 33, 852, 852, 852, 852, 320, 379, 34, 240, 238,
/* 70 */ 121, 556, 291, 251, 57, 7, 217, 577, 265, 264,
/* 80 */ 523, 179, 555, 336, 335, 338, 569, 549, 548, 550,
/* 90 */ 271, 569, 10, 724, 199, 297, 203, 489, 459, 332,
/* 100 */ 568, 567, 451, 253, 158, 523, 449, 444, 443, 337,
- /* 110 */ 187, 870, 266, 187, 580, 517, 168, 328, 505, 343,
+ /* 110 */ 187, 871, 266, 187, 580, 517, 168, 328, 505, 343,
/* 120 */ 143, 235, 490, 108, 101, 489, 523, 164, 35, 531,
/* 130 */ 187, 13, 523, 252, 234, 547, 236, 119, 340, 232,
/* 140 */ 339, 120, 216, 155, 32, 33, 481, 547, 322, 215,
@@ -258,23 +258,23 @@ static const YYACTIONTYPE yy_action[] = {
/* 160 */ 7, 714, 400, 321, 251, 523, 714, 563, 336, 335,
/* 170 */ 500, 553, 549, 548, 550, 188, 465, 500, 401, 466,
/* 180 */ 366, 365, 552, 364, 293, 435, 39, 39, 39, 38,
- /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 852, 570,
- /* 200 */ 271, 714, 502, 852, 500, 714, 570, 714, 714, 714,
+ /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 853, 570,
+ /* 200 */ 271, 714, 502, 853, 500, 714, 570, 714, 714, 714,
/* 210 */ 714, 523, 569, 178, 531, 422, 13, 523, 44, 45,
- /* 220 */ 330, 42, 42, 530, 530, 223, 852, 852, 43, 43,
+ /* 220 */ 330, 42, 42, 530, 530, 223, 853, 853, 43, 43,
/* 230 */ 43, 43, 41, 41, 41, 41, 40, 40, 39, 39,
/* 240 */ 39, 38, 199, 297, 203, 55, 236, 92, 340, 232,
/* 250 */ 339, 120, 216, 500, 106, 570, 268, 19, 187, 215,
/* 260 */ 500, 105, 553, 41, 41, 41, 41, 40, 40, 39,
/* 270 */ 39, 39, 38, 552, 40, 40, 39, 39, 39, 38,
- /* 280 */ 852, 3, 568, 567, 187, 852, 512, 500, 219, 568,
+ /* 280 */ 853, 3, 568, 567, 187, 853, 512, 500, 219, 568,
/* 290 */ 567, 17, 496, 156, 322, 345, 519, 518, 569, 292,
- /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 852, 852,
+ /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 853, 853,
/* 310 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40,
- /* 320 */ 39, 39, 39, 38, 547, 533, 852, 100, 308, 306,
- /* 330 */ 305, 852, 448, 447, 418, 418, 316, 245, 568, 567,
- /* 340 */ 304, 937, 122, 344, 1, 582, 44, 45, 330, 42,
- /* 350 */ 42, 530, 530, 223, 852, 852, 43, 43, 43, 43,
+ /* 320 */ 39, 39, 39, 38, 547, 533, 853, 100, 308, 306,
+ /* 330 */ 305, 853, 448, 447, 418, 418, 316, 245, 568, 567,
+ /* 340 */ 304, 938, 122, 344, 1, 582, 44, 45, 330, 42,
+ /* 350 */ 42, 530, 530, 223, 853, 853, 43, 43, 43, 43,
/* 360 */ 41, 41, 41, 41, 40, 40, 39, 39, 39, 38,
/* 370 */ 338, 442, 44, 45, 330, 42, 42, 530, 530, 223,
/* 380 */ 524, 569, 43, 43, 43, 43, 41, 41, 41, 41,
@@ -287,14 +287,14 @@ static const YYACTIONTYPE yy_action[] = {
/* 450 */ 523, 524, 569, 336, 335, 285, 781, 549, 548, 550,
/* 460 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40,
/* 470 */ 39, 39, 39, 38, 332, 523, 332, 425, 470, 774,
- /* 480 */ 560, 774, 774, 850, 337, 426, 337, 455, 850, 613,
+ /* 480 */ 560, 774, 774, 851, 337, 426, 337, 455, 851, 613,
/* 490 */ 774, 181, 774, 774, 774, 143, 523, 143, 30, 531,
- /* 500 */ 614, 13, 523, 850, 850, 850, 850, 850, 850, 850,
- /* 510 */ 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
- /* 520 */ 850, 850, 850, 850, 850, 850, 850, 852, 500, 460,
- /* 530 */ 357, 320, 852, 318, 75, 570, 401, 570, 311, 251,
+ /* 500 */ 614, 13, 523, 851, 851, 851, 851, 851, 851, 851,
+ /* 510 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
+ /* 520 */ 851, 851, 851, 851, 851, 851, 851, 853, 500, 460,
+ /* 530 */ 357, 320, 853, 318, 75, 570, 401, 570, 311, 251,
/* 540 */ 569, 251, 446, 445, 570, 358, 359, 44, 45, 330,
- /* 550 */ 42, 42, 530, 530, 223, 852, 852, 43, 43, 43,
+ /* 550 */ 42, 42, 530, 530, 223, 853, 853, 43, 43, 43,
/* 560 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39,
/* 570 */ 38, 338, 44, 45, 330, 42, 42, 530, 530, 223,
/* 580 */ 615, 570, 43, 43, 43, 43, 41, 41, 41, 41,
@@ -305,14 +305,14 @@ static const YYACTIONTYPE yy_action[] = {
/* 630 */ 32, 33, 337, 356, 482, 355, 569, 85, 34, 759,
/* 640 */ 532, 111, 70, 78, 487, 483, 7, 759, 90, 494,
/* 650 */ 508, 523, 493, 160, 336, 335, 782, 528, 549, 548,
- /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 919,
+ /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 920,
/* 670 */ 214, 100, 308, 306, 305, 75, 523, 333, 337, 571,
/* 680 */ 759, 529, 759, 759, 304, 48, 177, 522, 31, 143,
/* 690 */ 29, 759, 568, 567, 759, 759, 159, 523, 568, 567,
/* 700 */ 531, 464, 13, 523, 44, 45, 330, 42, 42, 530,
/* 710 */ 530, 223, 568, 567, 43, 43, 43, 43, 41, 41,
/* 720 */ 41, 41, 40, 40, 39, 39, 39, 38, 463, 570,
- /* 730 */ 498, 919, 570, 323, 514, 570, 222, 44, 45, 330,
+ /* 730 */ 498, 920, 570, 323, 514, 570, 222, 44, 45, 330,
/* 740 */ 42, 42, 530, 530, 223, 393, 392, 43, 43, 43,
/* 750 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39,
/* 760 */ 38, 44, 45, 330, 42, 42, 530, 530, 223, 540,
@@ -324,7 +324,7 @@ static const YYACTIONTYPE yy_action[] = {
/* 820 */ 110, 570, 218, 44, 45, 330, 42, 42, 530, 530,
/* 830 */ 223, 27, 468, 43, 43, 43, 43, 41, 41, 41,
/* 840 */ 41, 40, 40, 39, 39, 39, 38, 486, 547, 44,
- /* 850 */ 45, 330, 42, 42, 530, 530, 223, 859, 212, 43,
+ /* 850 */ 45, 330, 42, 42, 530, 530, 223, 860, 212, 43,
/* 860 */ 43, 43, 43, 41, 41, 41, 41, 40, 40, 39,
/* 870 */ 39, 39, 38, 44, 47, 330, 42, 42, 530, 530,
/* 880 */ 223, 535, 284, 43, 43, 43, 43, 41, 41, 41,
@@ -339,7 +339,7 @@ static const YYACTIONTYPE yy_action[] = {
/* 970 */ 520, 569, 395, 547, 569, 569, 23, 328, 213, 254,
/* 980 */ 358, 275, 547, 75, 182, 32, 33, 310, 35, 569,
/* 990 */ 361, 66, 164, 34, 160, 396, 398, 317, 397, 293,
- /* 1000 */ 570, 7, 862, 516, 32, 33, 523, 570, 538, 336,
+ /* 1000 */ 570, 7, 863, 516, 32, 33, 523, 570, 538, 336,
/* 1010 */ 335, 522, 34, 549, 548, 550, 25, 4, 289, 338,
/* 1020 */ 7, 471, 395, 547, 12, 523, 568, 567, 336, 335,
/* 1030 */ 302, 523, 549, 548, 550, 75, 570, 404, 338, 276,
@@ -356,7 +356,7 @@ static const YYACTIONTYPE yy_action[] = {
/* 1140 */ 312, 391, 202, 523, 296, 523, 568, 567, 531, 198,
/* 1150 */ 13, 523, 569, 413, 345, 328, 568, 567, 532, 569,
/* 1160 */ 474, 570, 307, 570, 523, 495, 35, 531, 53, 13,
- /* 1170 */ 523, 496, 860, 456, 473, 568, 567, 570, 413, 532,
+ /* 1170 */ 523, 496, 861, 456, 473, 568, 567, 570, 413, 532,
/* 1180 */ 570, 485, 32, 33, 407, 439, 10, 568, 567, 500,
/* 1190 */ 34, 489, 730, 570, 568, 567, 431, 403, 7, 52,
/* 1200 */ 568, 567, 570, 523, 582, 234, 336, 335, 338, 407,
@@ -367,7 +367,7 @@ static const YYACTIONTYPE yy_action[] = {
/* 1250 */ 99, 35, 531, 124, 13, 523, 492, 368, 497, 148,
/* 1260 */ 568, 567, 570, 568, 567, 82, 376, 32, 33, 350,
/* 1270 */ 2, 570, 568, 567, 570, 34, 568, 567, 570, 73,
- /* 1280 */ 179, 259, 570, 7, 862, 568, 567, 417, 523, 338,
+ /* 1280 */ 179, 259, 570, 7, 863, 568, 567, 417, 523, 338,
/* 1290 */ 569, 336, 335, 22, 491, 549, 548, 550, 416, 69,
/* 1300 */ 568, 567, 371, 522, 568, 567, 570, 415, 405, 568,
/* 1310 */ 567, 261, 21, 523, 568, 567, 568, 567, 196, 368,
@@ -411,8 +411,8 @@ static const YYACTIONTYPE yy_action[] = {
/* 1690 */ 283, 402, 382, 117, 89, 87, 86, 116, 175, 280,
/* 1700 */ 347, 349, 173, 233, 113, 126, 230, 509, 541, 470,
/* 1710 */ 506, 537, 458, 282, 154, 410, 273, 190, 348, 438,
- /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 938, 37, 412,
- /* 1730 */ 165, 433, 938, 938, 938, 327, 299,
+ /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 939, 37, 412,
+ /* 1730 */ 165, 433, 939, 939, 939, 327, 299,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 4, 8, 195, 10, 80, 25, 5, 14, 156, 202,
@@ -664,61 +664,61 @@ static const short yy_reduce_ofst[] = {
/* 250 */ 1242,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 589, 936, 936, 862, 903, 851, 851, 851, 936, 936,
- /* 10 */ 730, 936, 851, 851, 851, 936, 851, 851, 851, 851,
- /* 20 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
- /* 30 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851,
- /* 40 */ 851, 851, 851, 851, 851, 851, 851, 841, 724, 608,
- /* 50 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- /* 60 */ 616, 720, 730, 936, 936, 936, 936, 790, 777, 768,
- /* 70 */ 936, 800, 800, 783, 679, 936, 800, 756, 752, 936,
- /* 80 */ 839, 936, 936, 731, 936, 839, 936, 936, 936, 936,
- /* 90 */ 936, 791, 784, 778, 769, 936, 936, 936, 936, 936,
- /* 100 */ 936, 936, 936, 936, 720, 720, 936, 720, 936, 936,
- /* 110 */ 936, 840, 594, 936, 882, 936, 936, 936, 936, 936,
- /* 120 */ 936, 605, 589, 936, 936, 936, 710, 736, 773, 761,
- /* 130 */ 863, 856, 857, 855, 852, 852, 852, 852, 852, 852,
- /* 140 */ 852, 852, 852, 852, 823, 816, 827, 815, 831, 826,
- /* 150 */ 818, 817, 819, 936, 936, 936, 936, 723, 936, 936,
- /* 160 */ 936, 820, 936, 789, 698, 936, 910, 693, 601, 618,
- /* 170 */ 936, 936, 936, 936, 936, 936, 936, 772, 670, 756,
- /* 180 */ 645, 738, 756, 858, 936, 936, 721, 708, 756, 934,
- /* 190 */ 931, 934, 739, 683, 739, 739, 739, 681, 739, 683,
- /* 200 */ 796, 739, 739, 683, 772, 739, 918, 915, 739, 739,
- /* 210 */ 871, 681, 681, 681, 681, 662, 936, 871, 681, 739,
- /* 220 */ 936, 739, 936, 852, 821, 752, 762, 748, 760, 757,
- /* 230 */ 772, 936, 681, 681, 662, 681, 681, 665, 593, 593,
+ /* 0 */ 589, 937, 937, 863, 904, 852, 852, 852, 937, 937,
+ /* 10 */ 730, 937, 852, 852, 852, 937, 852, 852, 852, 852,
+ /* 20 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852,
+ /* 30 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852,
+ /* 40 */ 852, 852, 852, 852, 852, 852, 852, 841, 724, 608,
+ /* 50 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937,
+ /* 60 */ 616, 720, 730, 937, 937, 937, 937, 790, 777, 768,
+ /* 70 */ 937, 800, 800, 783, 679, 937, 800, 756, 752, 937,
+ /* 80 */ 839, 937, 937, 731, 937, 839, 937, 937, 937, 937,
+ /* 90 */ 937, 791, 784, 778, 769, 937, 937, 937, 937, 937,
+ /* 100 */ 937, 937, 937, 937, 720, 720, 937, 720, 937, 937,
+ /* 110 */ 937, 840, 594, 937, 883, 937, 937, 937, 937, 937,
+ /* 120 */ 937, 605, 589, 937, 937, 937, 710, 736, 773, 761,
+ /* 130 */ 864, 857, 858, 856, 853, 853, 853, 853, 853, 844,
+ /* 140 */ 853, 853, 853, 853, 823, 816, 827, 815, 831, 826,
+ /* 150 */ 818, 817, 819, 937, 937, 937, 937, 723, 937, 937,
+ /* 160 */ 937, 820, 937, 789, 698, 937, 911, 693, 601, 618,
+ /* 170 */ 937, 937, 937, 937, 937, 937, 937, 772, 670, 756,
+ /* 180 */ 645, 738, 756, 859, 937, 937, 721, 708, 756, 935,
+ /* 190 */ 932, 935, 739, 683, 739, 739, 739, 681, 739, 683,
+ /* 200 */ 796, 739, 739, 683, 772, 739, 919, 916, 739, 739,
+ /* 210 */ 872, 681, 681, 681, 681, 662, 937, 872, 681, 739,
+ /* 220 */ 937, 739, 937, 853, 821, 752, 762, 748, 760, 757,
+ /* 230 */ 772, 937, 681, 681, 662, 681, 681, 665, 593, 593,
/* 240 */ 593, 681, 593, 649, 649, 726, 830, 829, 828, 822,
- /* 250 */ 629, 864, 936, 936, 936, 936, 936, 936, 936, 936,
- /* 260 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 763,
- /* 270 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 881,
- /* 280 */ 936, 936, 936, 936, 936, 936, 914, 913, 936, 936,
- /* 290 */ 936, 936, 936, 936, 936, 936, 936, 936, 902, 936,
- /* 300 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
- /* 310 */ 936, 936, 936, 936, 936, 936, 936, 936, 758, 936,
- /* 320 */ 861, 843, 701, 850, 936, 936, 936, 936, 936, 842,
- /* 330 */ 853, 810, 936, 749, 936, 809, 806, 808, 611, 936,
- /* 340 */ 936, 936, 936, 936, 586, 590, 935, 933, 932, 930,
- /* 350 */ 890, 889, 888, 886, 895, 894, 893, 892, 891, 887,
- /* 360 */ 885, 884, 883, 880, 787, 775, 766, 697, 929, 927,
- /* 370 */ 928, 879, 877, 878, 696, 695, 692, 691, 690, 869,
- /* 380 */ 868, 866, 865, 867, 604, 906, 909, 908, 907, 912,
- /* 390 */ 911, 904, 917, 916, 921, 925, 924, 923, 922, 920,
- /* 400 */ 901, 795, 794, 792, 797, 788, 793, 780, 786, 785,
- /* 410 */ 776, 779, 684, 771, 767, 770, 905, 694, 603, 741,
+ /* 250 */ 629, 865, 937, 937, 937, 937, 937, 937, 937, 937,
+ /* 260 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 763,
+ /* 270 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 882,
+ /* 280 */ 937, 937, 937, 937, 937, 937, 915, 914, 937, 937,
+ /* 290 */ 937, 937, 937, 937, 937, 937, 937, 937, 903, 937,
+ /* 300 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937,
+ /* 310 */ 937, 937, 937, 937, 937, 937, 937, 937, 758, 937,
+ /* 320 */ 862, 843, 701, 851, 937, 937, 937, 937, 937, 842,
+ /* 330 */ 854, 810, 937, 749, 937, 809, 806, 808, 611, 937,
+ /* 340 */ 937, 937, 937, 937, 586, 590, 936, 934, 933, 931,
+ /* 350 */ 891, 890, 889, 887, 896, 895, 894, 893, 892, 888,
+ /* 360 */ 886, 885, 884, 881, 787, 775, 766, 697, 930, 928,
+ /* 370 */ 929, 880, 878, 879, 696, 695, 692, 691, 690, 870,
+ /* 380 */ 869, 867, 866, 868, 604, 907, 910, 909, 908, 913,
+ /* 390 */ 912, 905, 918, 917, 922, 926, 925, 924, 923, 921,
+ /* 400 */ 902, 795, 794, 792, 797, 788, 793, 780, 786, 785,
+ /* 410 */ 776, 779, 684, 771, 767, 770, 906, 694, 603, 741,
/* 420 */ 602, 607, 668, 669, 677, 680, 675, 678, 674, 673,
/* 430 */ 672, 676, 671, 667, 610, 609, 623, 621, 622, 620,
/* 440 */ 619, 617, 639, 638, 635, 637, 634, 636, 633, 632,
- /* 450 */ 631, 630, 628, 661, 647, 646, 874, 876, 875, 873,
- /* 460 */ 872, 654, 653, 659, 658, 657, 656, 652, 655, 651,
+ /* 450 */ 631, 630, 628, 661, 647, 646, 875, 877, 876, 874,
+ /* 460 */ 873, 654, 653, 659, 658, 657, 656, 652, 655, 651,
/* 470 */ 650, 648, 644, 814, 813, 807, 835, 707, 706, 715,
/* 480 */ 713, 712, 711, 747, 746, 745, 744, 743, 742, 735,
/* 490 */ 733, 729, 728, 734, 732, 727, 719, 717, 718, 716,
/* 500 */ 612, 802, 799, 801, 798, 737, 725, 722, 709, 751,
- /* 510 */ 753, 854, 844, 834, 845, 740, 832, 833, 704, 703,
- /* 520 */ 702, 853, 850, 846, 926, 838, 849, 837, 836, 825,
- /* 530 */ 824, 812, 847, 848, 811, 750, 765, 898, 897, 900,
- /* 540 */ 899, 896, 764, 625, 624, 705, 700, 699, 805, 804,
+ /* 510 */ 753, 855, 845, 834, 846, 740, 832, 833, 704, 703,
+ /* 520 */ 702, 854, 851, 847, 927, 838, 850, 837, 836, 825,
+ /* 530 */ 824, 812, 848, 849, 811, 750, 765, 899, 898, 901,
+ /* 540 */ 900, 897, 764, 625, 624, 705, 700, 699, 805, 804,
/* 550 */ 803, 643, 755, 754, 642, 664, 663, 660, 641, 640,
/* 560 */ 627, 626, 606, 600, 599, 598, 597, 615, 614, 613,
/* 570 */ 611, 596, 595, 689, 688, 687, 686, 685, 682, 592,
@@ -1258,98 +1258,99 @@ static const char *const yyRuleName[] = {
/* 257 */ "exprx ::= expr not_opt BETWEEN expr AND",
/* 258 */ "exprx ::= CASE case_operand case_exprlist case_else",
/* 259 */ "exprx ::= expr not_opt IN LP exprlist",
- /* 260 */ "exprx ::= expr not_opt IN ID_DB",
- /* 261 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
- /* 262 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
- /* 263 */ "exprx ::= nm DOT ID_TAB|ID_COL",
- /* 264 */ "exprx ::= nm DOT nm DOT ID_COL",
- /* 265 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
- /* 266 */ "expr ::= exprx",
- /* 267 */ "expr ::=",
- /* 268 */ "not_opt ::=",
- /* 269 */ "not_opt ::= NOT",
- /* 270 */ "likeop ::= LIKE|GLOB",
- /* 271 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 272 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 273 */ "case_else ::= ELSE expr",
- /* 274 */ "case_else ::=",
- /* 275 */ "case_operand ::= exprx",
- /* 276 */ "case_operand ::=",
- /* 277 */ "exprlist ::= nexprlist",
- /* 278 */ "exprlist ::=",
- /* 279 */ "nexprlist ::= nexprlist COMMA expr",
- /* 280 */ "nexprlist ::= exprx",
- /* 281 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf",
- /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB",
- /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW",
- /* 284 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW",
- /* 285 */ "uniqueflag ::= UNIQUE",
- /* 286 */ "uniqueflag ::=",
- /* 287 */ "idxlist_opt ::=",
- /* 288 */ "idxlist_opt ::= LP idxlist RP",
- /* 289 */ "idxlist ::= idxlist COMMA idxlist_single",
- /* 290 */ "idxlist ::= idxlist_single",
- /* 291 */ "idxlist_single ::= nm sortorder",
- /* 292 */ "idxlist_single ::= ID_COL",
- /* 293 */ "cmd ::= DROP INDEX fullname",
- /* 294 */ "cmd ::= DROP INDEX nm DOT ID_IDX",
- /* 295 */ "cmd ::= DROP INDEX ID_DB|ID_IDX",
- /* 296 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING",
- /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm",
- /* 298 */ "cmd ::= VACUUM",
- /* 299 */ "cmd ::= VACUUM nm",
- /* 300 */ "cmd ::= PRAGMA ids",
- /* 301 */ "cmd ::= PRAGMA nm EQ nmnum",
- /* 302 */ "cmd ::= PRAGMA nm LP nmnum RP",
- /* 303 */ "cmd ::= PRAGMA nm EQ minus_num",
- /* 304 */ "cmd ::= PRAGMA nm LP minus_num RP",
- /* 305 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
- /* 306 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
- /* 307 */ "nmnum ::= plus_num",
- /* 308 */ "nmnum ::= nm",
- /* 309 */ "nmnum ::= ON",
- /* 310 */ "nmnum ::= DELETE",
- /* 311 */ "nmnum ::= DEFAULT",
- /* 312 */ "plus_num ::= PLUS number",
- /* 313 */ "plus_num ::= number",
- /* 314 */ "minus_num ::= MINUS number",
- /* 315 */ "number ::= INTEGER",
- /* 316 */ "number ::= FLOAT",
- /* 317 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END",
- /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause",
- /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list",
- /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB",
- /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB",
- /* 322 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW",
- /* 323 */ "trigger_time ::= BEFORE",
- /* 324 */ "trigger_time ::= AFTER",
- /* 325 */ "trigger_time ::= INSTEAD OF",
- /* 326 */ "trigger_time ::=",
- /* 327 */ "trigger_event ::= DELETE",
- /* 328 */ "trigger_event ::= INSERT",
- /* 329 */ "trigger_event ::= UPDATE",
- /* 330 */ "trigger_event ::= UPDATE OF inscollist",
- /* 331 */ "foreach_clause ::=",
- /* 332 */ "foreach_clause ::= FOR EACH ROW",
- /* 333 */ "foreach_clause ::= FOR EACH STATEMENT",
- /* 334 */ "when_clause ::=",
- /* 335 */ "when_clause ::= WHEN expr",
- /* 336 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 337 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 338 */ "trigger_cmd ::= update_stmt",
- /* 339 */ "trigger_cmd ::= insert_stmt",
- /* 340 */ "trigger_cmd ::= delete_stmt",
- /* 341 */ "trigger_cmd ::= select_stmt",
- /* 342 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
- /* 343 */ "cmd ::= DROP TRIGGER fullname",
- /* 344 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG",
- /* 345 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG",
- /* 346 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt",
- /* 347 */ "key_opt ::=",
- /* 348 */ "key_opt ::= USING ids",
- /* 349 */ "database_kw_opt ::= DATABASE",
- /* 350 */ "database_kw_opt ::=",
- /* 351 */ "cmd ::= DETACH database_kw_opt nm",
+ /* 260 */ "exprx ::= LP expr",
+ /* 261 */ "exprx ::= expr not_opt IN ID_DB",
+ /* 262 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
+ /* 263 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
+ /* 264 */ "exprx ::= nm DOT ID_TAB|ID_COL",
+ /* 265 */ "exprx ::= nm DOT nm DOT ID_COL",
+ /* 266 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
+ /* 267 */ "expr ::= exprx",
+ /* 268 */ "expr ::=",
+ /* 269 */ "not_opt ::=",
+ /* 270 */ "not_opt ::= NOT",
+ /* 271 */ "likeop ::= LIKE|GLOB",
+ /* 272 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 273 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 274 */ "case_else ::= ELSE expr",
+ /* 275 */ "case_else ::=",
+ /* 276 */ "case_operand ::= exprx",
+ /* 277 */ "case_operand ::=",
+ /* 278 */ "exprlist ::= nexprlist",
+ /* 279 */ "exprlist ::=",
+ /* 280 */ "nexprlist ::= nexprlist COMMA expr",
+ /* 281 */ "nexprlist ::= exprx",
+ /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf",
+ /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB",
+ /* 284 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW",
+ /* 285 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW",
+ /* 286 */ "uniqueflag ::= UNIQUE",
+ /* 287 */ "uniqueflag ::=",
+ /* 288 */ "idxlist_opt ::=",
+ /* 289 */ "idxlist_opt ::= LP idxlist RP",
+ /* 290 */ "idxlist ::= idxlist COMMA idxlist_single",
+ /* 291 */ "idxlist ::= idxlist_single",
+ /* 292 */ "idxlist_single ::= nm sortorder",
+ /* 293 */ "idxlist_single ::= ID_COL",
+ /* 294 */ "cmd ::= DROP INDEX fullname",
+ /* 295 */ "cmd ::= DROP INDEX nm DOT ID_IDX",
+ /* 296 */ "cmd ::= DROP INDEX ID_DB|ID_IDX",
+ /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING",
+ /* 298 */ "cmd ::= COPY orconf nm dbnm FROM nm",
+ /* 299 */ "cmd ::= VACUUM",
+ /* 300 */ "cmd ::= VACUUM nm",
+ /* 301 */ "cmd ::= PRAGMA ids",
+ /* 302 */ "cmd ::= PRAGMA nm EQ nmnum",
+ /* 303 */ "cmd ::= PRAGMA nm LP nmnum RP",
+ /* 304 */ "cmd ::= PRAGMA nm EQ minus_num",
+ /* 305 */ "cmd ::= PRAGMA nm LP minus_num RP",
+ /* 306 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
+ /* 307 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
+ /* 308 */ "nmnum ::= plus_num",
+ /* 309 */ "nmnum ::= nm",
+ /* 310 */ "nmnum ::= ON",
+ /* 311 */ "nmnum ::= DELETE",
+ /* 312 */ "nmnum ::= DEFAULT",
+ /* 313 */ "plus_num ::= PLUS number",
+ /* 314 */ "plus_num ::= number",
+ /* 315 */ "minus_num ::= MINUS number",
+ /* 316 */ "number ::= INTEGER",
+ /* 317 */ "number ::= FLOAT",
+ /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END",
+ /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause",
+ /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list",
+ /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB",
+ /* 322 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB",
+ /* 323 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW",
+ /* 324 */ "trigger_time ::= BEFORE",
+ /* 325 */ "trigger_time ::= AFTER",
+ /* 326 */ "trigger_time ::= INSTEAD OF",
+ /* 327 */ "trigger_time ::=",
+ /* 328 */ "trigger_event ::= DELETE",
+ /* 329 */ "trigger_event ::= INSERT",
+ /* 330 */ "trigger_event ::= UPDATE",
+ /* 331 */ "trigger_event ::= UPDATE OF inscollist",
+ /* 332 */ "foreach_clause ::=",
+ /* 333 */ "foreach_clause ::= FOR EACH ROW",
+ /* 334 */ "foreach_clause ::= FOR EACH STATEMENT",
+ /* 335 */ "when_clause ::=",
+ /* 336 */ "when_clause ::= WHEN expr",
+ /* 337 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 338 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 339 */ "trigger_cmd ::= update_stmt",
+ /* 340 */ "trigger_cmd ::= insert_stmt",
+ /* 341 */ "trigger_cmd ::= delete_stmt",
+ /* 342 */ "trigger_cmd ::= select_stmt",
+ /* 343 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
+ /* 344 */ "cmd ::= DROP TRIGGER fullname",
+ /* 345 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG",
+ /* 346 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG",
+ /* 347 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt",
+ /* 348 */ "key_opt ::=",
+ /* 349 */ "key_opt ::= USING ids",
+ /* 350 */ "database_kw_opt ::= DATABASE",
+ /* 351 */ "database_kw_opt ::=",
+ /* 352 */ "cmd ::= DETACH database_kw_opt nm",
};
#endif /* NDEBUG */
@@ -2219,6 +2220,7 @@ static const struct {
{ 221, 5 },
{ 221, 4 },
{ 221, 5 },
+ { 221, 2 },
{ 221, 4 },
{ 221, 6 },
{ 221, 1 },
@@ -2394,10 +2396,10 @@ static void yy_reduce(
{yygotominor.yy91 = new ParserStubExplain(true, false);}
break;
case 7: /* cmdx ::= cmd */
- case 338: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==338);
- case 339: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==339);
- case 340: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==340);
- case 341: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==341);
+ case 339: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==339);
+ case 340: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==340);
+ case 341: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==341);
+ case 342: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==342);
{yygotominor.yy203 = yymsp[0].minor.yy203;}
break;
case 8: /* cmd ::= BEGIN trans_opt onconf */
@@ -2500,7 +2502,7 @@ static void yy_reduce(
break;
case 19: /* cmd ::= CREATE temp TABLE ID_DB|ID_TAB_NEW */
case 110: /* cmd ::= CREATE temp VIEW ID_VIEW_NEW */ yytestcase(yyruleno==110);
- case 322: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==322);
+ case 323: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==323);
{ yy_destructor(yypParser,157,&yymsp[-2].minor);
}
break;
@@ -2597,9 +2599,9 @@ static void yy_reduce(
break;
case 40: /* signed ::= plus_num */
case 41: /* signed ::= minus_num */ yytestcase(yyruleno==41);
- case 307: /* nmnum ::= plus_num */ yytestcase(yyruleno==307);
- case 312: /* plus_num ::= PLUS number */ yytestcase(yyruleno==312);
- case 313: /* plus_num ::= number */ yytestcase(yyruleno==313);
+ case 308: /* nmnum ::= plus_num */ yytestcase(yyruleno==308);
+ case 313: /* plus_num ::= PLUS number */ yytestcase(yyruleno==313);
+ case 314: /* plus_num ::= number */ yytestcase(yyruleno==314);
{yygotominor.yy69 = yymsp[0].minor.yy69;}
break;
case 42: /* carglist ::= carglist ccons */
@@ -2847,15 +2849,15 @@ static void yy_reduce(
}
break;
case 85: /* tconscomma ::= COMMA */
- case 269: /* not_opt ::= NOT */ yytestcase(yyruleno==269);
- case 285: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==285);
- case 349: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==349);
+ case 270: /* not_opt ::= NOT */ yytestcase(yyruleno==270);
+ case 286: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==286);
+ case 350: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==350);
{yygotominor.yy291 = new bool(true);}
break;
case 86: /* tconscomma ::= */
- case 268: /* not_opt ::= */ yytestcase(yyruleno==268);
- case 286: /* uniqueflag ::= */ yytestcase(yyruleno==286);
- case 350: /* database_kw_opt ::= */ yytestcase(yyruleno==350);
+ case 269: /* not_opt ::= */ yytestcase(yyruleno==269);
+ case 287: /* uniqueflag ::= */ yytestcase(yyruleno==287);
+ case 351: /* database_kw_opt ::= */ yytestcase(yyruleno==351);
{yygotominor.yy291 = new bool(false);}
break;
case 87: /* tcons ::= CONSTRAINT nm */
@@ -2959,15 +2961,15 @@ static void yy_reduce(
case 187: /* delete_stmt ::= DELETE FROM ID_DB|ID_TAB */ yytestcase(yyruleno==187);
case 195: /* update_stmt ::= UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==195);
case 196: /* update_stmt ::= UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==196);
- case 263: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==263);
- case 283: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==283);
- case 284: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==284);
- case 294: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==294);
- case 295: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==295);
- case 305: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==305);
- case 306: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==306);
- case 344: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==344);
- case 345: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==345);
+ case 264: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==264);
+ case 284: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==284);
+ case 285: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==285);
+ case 295: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==295);
+ case 296: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==296);
+ case 306: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==306);
+ case 307: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==307);
+ case 345: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==345);
+ case 346: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==346);
{ yy_destructor(yypParser,156,&yymsp[-2].minor);
}
break;
@@ -3339,11 +3341,11 @@ static void yy_reduce(
{yygotominor.yy389 = new SqliteSortOrder(SqliteSortOrder::null);}
break;
case 173: /* groupby_opt ::= */
- case 278: /* exprlist ::= */ yytestcase(yyruleno==278);
+ case 279: /* exprlist ::= */ yytestcase(yyruleno==279);
{yygotominor.yy231 = new ParserExprList();}
break;
case 174: /* groupby_opt ::= GROUP BY nexprlist */
- case 277: /* exprlist ::= nexprlist */ yytestcase(yyruleno==277);
+ case 278: /* exprlist ::= nexprlist */ yytestcase(yyruleno==278);
{yygotominor.yy231 = yymsp[0].minor.yy231;}
break;
case 175: /* groupby_opt ::= GROUP BY */
@@ -3354,18 +3356,18 @@ static void yy_reduce(
break;
case 176: /* having_opt ::= */
case 188: /* where_opt ::= */ yytestcase(yyruleno==188);
- case 274: /* case_else ::= */ yytestcase(yyruleno==274);
- case 276: /* case_operand ::= */ yytestcase(yyruleno==276);
- case 334: /* when_clause ::= */ yytestcase(yyruleno==334);
- case 347: /* key_opt ::= */ yytestcase(yyruleno==347);
+ case 275: /* case_else ::= */ yytestcase(yyruleno==275);
+ case 277: /* case_operand ::= */ yytestcase(yyruleno==277);
+ case 335: /* when_clause ::= */ yytestcase(yyruleno==335);
+ case 348: /* key_opt ::= */ yytestcase(yyruleno==348);
{yygotominor.yy192 = nullptr;}
break;
case 177: /* having_opt ::= HAVING expr */
case 189: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==189);
- case 266: /* expr ::= exprx */ yytestcase(yyruleno==266);
- case 273: /* case_else ::= ELSE expr */ yytestcase(yyruleno==273);
- case 275: /* case_operand ::= exprx */ yytestcase(yyruleno==275);
- case 335: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==335);
+ case 267: /* expr ::= exprx */ yytestcase(yyruleno==267);
+ case 274: /* case_else ::= ELSE expr */ yytestcase(yyruleno==274);
+ case 276: /* case_operand ::= exprx */ yytestcase(yyruleno==276);
+ case 336: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==336);
{yygotominor.yy192 = yymsp[0].minor.yy192;}
break;
case 178: /* limit_opt ::= */
@@ -3917,60 +3919,68 @@ static void yy_reduce(
parserContext->minorErrorBeforeNextToken("Syntax error");
}
break;
- case 260: /* exprx ::= expr not_opt IN ID_DB */
+ case 260: /* exprx ::= LP expr */
+{
+ yygotominor.yy192 = new SqliteExpr();
+ yygotominor.yy192->initSubExpr(yymsp[0].minor.yy192);
+ objectForTokens = yygotominor.yy192;
+ parserContext->minorErrorBeforeNextToken("Syntax error");
+ }
+ break;
+ case 261: /* exprx ::= expr not_opt IN ID_DB */
{ yy_destructor(yypParser,177,&yymsp[-3].minor);
}
break;
- case 261: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
- case 262: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==262);
+ case 262: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
+ case 263: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==263);
{ yy_destructor(yypParser,177,&yymsp[-5].minor);
yy_destructor(yypParser,156,&yymsp[-2].minor);
}
break;
- case 264: /* exprx ::= nm DOT nm DOT ID_COL */
- case 265: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==265);
+ case 265: /* exprx ::= nm DOT nm DOT ID_COL */
+ case 266: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==266);
{ yy_destructor(yypParser,156,&yymsp[-4].minor);
yy_destructor(yypParser,156,&yymsp[-2].minor);
}
break;
- case 267: /* expr ::= */
+ case 268: /* expr ::= */
{
yygotominor.yy192 = new SqliteExpr();
objectForTokens = yygotominor.yy192;
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 270: /* likeop ::= LIKE|GLOB */
+ case 271: /* likeop ::= LIKE|GLOB */
{yygotominor.yy41 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));}
break;
- case 271: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ case 272: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
yymsp[-4].minor.yy231->append(yymsp[-2].minor.yy192);
yymsp[-4].minor.yy231->append(yymsp[0].minor.yy192);
yygotominor.yy231 = yymsp[-4].minor.yy231;
}
break;
- case 272: /* case_exprlist ::= WHEN expr THEN expr */
+ case 273: /* case_exprlist ::= WHEN expr THEN expr */
{
yygotominor.yy231 = new ParserExprList();
yygotominor.yy231->append(yymsp[-2].minor.yy192);
yygotominor.yy231->append(yymsp[0].minor.yy192);
}
break;
- case 279: /* nexprlist ::= nexprlist COMMA expr */
+ case 280: /* nexprlist ::= nexprlist COMMA expr */
{
yymsp[-2].minor.yy231->append(yymsp[0].minor.yy192);
yygotominor.yy231 = yymsp[-2].minor.yy231;
DONT_INHERIT_TOKENS("nexprlist");
}
break;
- case 280: /* nexprlist ::= exprx */
+ case 281: /* nexprlist ::= exprx */
{
yygotominor.yy231 = new ParserExprList();
yygotominor.yy231->append(yymsp[0].minor.yy192);
}
break;
- case 281: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */
+ case 282: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */
{
yygotominor.yy203 = new SqliteCreateIndex(
*(yymsp[-9].minor.yy291),
@@ -3990,31 +4000,31 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 282: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */
+ case 283: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */
{ yy_destructor(yypParser,156,&yymsp[-3].minor);
}
break;
- case 287: /* idxlist_opt ::= */
+ case 288: /* idxlist_opt ::= */
{yygotominor.yy63 = new ParserIndexedColumnList();}
break;
- case 288: /* idxlist_opt ::= LP idxlist RP */
+ case 289: /* idxlist_opt ::= LP idxlist RP */
{yygotominor.yy63 = yymsp[-1].minor.yy63;}
break;
- case 289: /* idxlist ::= idxlist COMMA idxlist_single */
+ case 290: /* idxlist ::= idxlist COMMA idxlist_single */
{
yymsp[-2].minor.yy63->append(yymsp[0].minor.yy428);
yygotominor.yy63 = yymsp[-2].minor.yy63;
DONT_INHERIT_TOKENS("idxlist");
}
break;
- case 290: /* idxlist ::= idxlist_single */
+ case 291: /* idxlist ::= idxlist_single */
{
yygotominor.yy63 = new ParserIndexedColumnList();
yygotominor.yy63->append(yymsp[0].minor.yy428);
}
break;
- case 291: /* idxlist_single ::= nm sortorder */
- case 292: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==292);
+ case 292: /* idxlist_single ::= nm sortorder */
+ case 293: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==293);
{
SqliteIndexedColumn* obj =
new SqliteIndexedColumn(
@@ -4028,14 +4038,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy428;
}
break;
- case 293: /* cmd ::= DROP INDEX fullname */
+ case 294: /* cmd ::= DROP INDEX fullname */
{
yygotominor.yy203 = new SqliteDropIndex(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2);
delete yymsp[0].minor.yy120;
objectForTokens = yygotominor.yy203;
}
break;
- case 296: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */
+ case 297: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */
{
yygotominor.yy203 = new SqliteCopy(
*(yymsp[-7].minor.yy418),
@@ -4051,7 +4061,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 297: /* cmd ::= COPY orconf nm dbnm FROM nm */
+ case 298: /* cmd ::= COPY orconf nm dbnm FROM nm */
{
yygotominor.yy203 = new SqliteCopy(
*(yymsp[-4].minor.yy418),
@@ -4066,28 +4076,28 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 298: /* cmd ::= VACUUM */
+ case 299: /* cmd ::= VACUUM */
{
yygotominor.yy203 = new SqliteVacuum();
objectForTokens = yygotominor.yy203;
}
break;
- case 299: /* cmd ::= VACUUM nm */
+ case 300: /* cmd ::= VACUUM nm */
{
yygotominor.yy203 = new SqliteVacuum(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
objectForTokens = yygotominor.yy203;
}
break;
- case 300: /* cmd ::= PRAGMA ids */
+ case 301: /* cmd ::= PRAGMA ids */
{
yygotominor.yy203 = new SqlitePragma(*(yymsp[0].minor.yy319), QString::null);
delete yymsp[0].minor.yy319;
objectForTokens = yygotominor.yy203;
}
break;
- case 301: /* cmd ::= PRAGMA nm EQ nmnum */
- case 303: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==303);
+ case 302: /* cmd ::= PRAGMA nm EQ nmnum */
+ case 304: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==304);
{
yygotominor.yy203 = new SqlitePragma(*(yymsp[-2].minor.yy319), QString::null, *(yymsp[0].minor.yy69), true);
delete yymsp[-2].minor.yy319;
@@ -4095,8 +4105,8 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 302: /* cmd ::= PRAGMA nm LP nmnum RP */
- case 304: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==304);
+ case 303: /* cmd ::= PRAGMA nm LP nmnum RP */
+ case 305: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==305);
{
yygotominor.yy203 = new SqlitePragma(*(yymsp[-3].minor.yy319), QString::null, *(yymsp[-1].minor.yy69), false);
delete yymsp[-3].minor.yy319;
@@ -4104,18 +4114,18 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 308: /* nmnum ::= nm */
+ case 309: /* nmnum ::= nm */
{
yygotominor.yy69 = new QVariant(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
}
break;
- case 309: /* nmnum ::= ON */
- case 310: /* nmnum ::= DELETE */ yytestcase(yyruleno==310);
- case 311: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==311);
+ case 310: /* nmnum ::= ON */
+ case 311: /* nmnum ::= DELETE */ yytestcase(yyruleno==311);
+ case 312: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==312);
{yygotominor.yy69 = new QVariant(yymsp[0].minor.yy0->value);}
break;
- case 314: /* minus_num ::= MINUS number */
+ case 315: /* minus_num ::= MINUS number */
{
if (yymsp[0].minor.yy69->type() == QVariant::Double)
*(yymsp[0].minor.yy69) = -(yymsp[0].minor.yy69->toDouble());
@@ -4127,13 +4137,13 @@ static void yy_reduce(
yygotominor.yy69 = yymsp[0].minor.yy69;
}
break;
- case 315: /* number ::= INTEGER */
+ case 316: /* number ::= INTEGER */
{yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());}
break;
- case 316: /* number ::= FLOAT */
+ case 317: /* number ::= FLOAT */
{yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());}
break;
- case 317: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */
+ case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */
{
yygotominor.yy203 = new SqliteCreateTrigger(
*(yymsp[-12].minor.yy226),
@@ -4158,7 +4168,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */
+ case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */
{
QList<SqliteQuery *> CL;
@@ -4185,7 +4195,7 @@ static void yy_reduce(
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */
+ case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */
{
yygotominor.yy203 = new SqliteCreateTrigger(
*(yymsp[-11].minor.yy226),
@@ -4211,14 +4221,14 @@ static void yy_reduce(
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */
+ case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */
{ yy_destructor(yypParser,157,&yymsp[-6].minor);
yy_destructor(yypParser,156,&yymsp[-4].minor);
yy_destructor(yypParser,232,&yymsp[-3].minor);
yy_destructor(yypParser,233,&yymsp[-2].minor);
}
break;
- case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */
+ case 322: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */
{ yy_destructor(yypParser,157,&yymsp[-8].minor);
yy_destructor(yypParser,156,&yymsp[-6].minor);
yy_destructor(yypParser,232,&yymsp[-5].minor);
@@ -4226,76 +4236,76 @@ static void yy_reduce(
yy_destructor(yypParser,156,&yymsp[-2].minor);
}
break;
- case 323: /* trigger_time ::= BEFORE */
+ case 324: /* trigger_time ::= BEFORE */
{yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);}
break;
- case 324: /* trigger_time ::= AFTER */
+ case 325: /* trigger_time ::= AFTER */
{yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);}
break;
- case 325: /* trigger_time ::= INSTEAD OF */
+ case 326: /* trigger_time ::= INSTEAD OF */
{yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);}
break;
- case 326: /* trigger_time ::= */
+ case 327: /* trigger_time ::= */
{yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);}
break;
- case 327: /* trigger_event ::= DELETE */
+ case 328: /* trigger_event ::= DELETE */
{
yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE);
objectForTokens = yygotominor.yy151;
}
break;
- case 328: /* trigger_event ::= INSERT */
+ case 329: /* trigger_event ::= INSERT */
{
yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT);
objectForTokens = yygotominor.yy151;
}
break;
- case 329: /* trigger_event ::= UPDATE */
+ case 330: /* trigger_event ::= UPDATE */
{
yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE);
objectForTokens = yygotominor.yy151;
}
break;
- case 330: /* trigger_event ::= UPDATE OF inscollist */
+ case 331: /* trigger_event ::= UPDATE OF inscollist */
{
yygotominor.yy151 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy207));
delete yymsp[0].minor.yy207;
objectForTokens = yygotominor.yy151;
}
break;
- case 331: /* foreach_clause ::= */
+ case 332: /* foreach_clause ::= */
{yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);}
break;
- case 332: /* foreach_clause ::= FOR EACH ROW */
+ case 333: /* foreach_clause ::= FOR EACH ROW */
{yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);}
break;
- case 333: /* foreach_clause ::= FOR EACH STATEMENT */
+ case 334: /* foreach_clause ::= FOR EACH STATEMENT */
{yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_STATEMENT);}
break;
- case 336: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 337: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
yymsp[-2].minor.yy270->append(yymsp[-1].minor.yy203);
yygotominor.yy270 = yymsp[-2].minor.yy270;
DONT_INHERIT_TOKENS("trigger_cmd_list");
}
break;
- case 337: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 338: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
yygotominor.yy270 = new ParserQueryList();
yygotominor.yy270->append(yymsp[-1].minor.yy203);
}
break;
- case 342: /* raisetype ::= ROLLBACK|ABORT|FAIL */
+ case 343: /* raisetype ::= ROLLBACK|ABORT|FAIL */
{yygotominor.yy0 = yymsp[0].minor.yy0;}
break;
- case 343: /* cmd ::= DROP TRIGGER fullname */
+ case 344: /* cmd ::= DROP TRIGGER fullname */
{
yygotominor.yy203 = new SqliteDropTrigger(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2);
delete yymsp[0].minor.yy120;
objectForTokens = yygotominor.yy203;
}
break;
- case 346: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */
+ case 347: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */
{
SqliteExpr* e1 = new SqliteExpr();
SqliteExpr* e2 = new SqliteExpr();
@@ -4308,7 +4318,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy203;
}
break;
- case 348: /* key_opt ::= USING ids */
+ case 349: /* key_opt ::= USING ids */
{
SqliteExpr* e = new SqliteExpr();
e->initLiteral(*(yymsp[0].minor.yy319));
@@ -4316,7 +4326,7 @@ static void yy_reduce(
yygotominor.yy192 = e;
}
break;
- case 351: /* cmd ::= DETACH database_kw_opt nm */
+ case 352: /* cmd ::= DETACH database_kw_opt nm */
{
SqliteExpr* e = new SqliteExpr();
e->initLiteral(*(yymsp[0].minor.yy319));
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y
index 04da6cb..2fd9c0d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y
@@ -1586,6 +1586,12 @@ exprx(X) ::= expr(E) not_opt(N) IN LP
objectForTokens = X;
parserContext->minorErrorBeforeNextToken("Syntax error");
}
+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
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
index 8786832..7e4f3c0 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
@@ -170,7 +170,7 @@ typedef union {
#define sqlite3_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext
#define sqlite3_parseARG_STORE yypParser->parserContext = parserContext
#define YYNSTATE 724
-#define YYNRULE 424
+#define YYNRULE 425
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
@@ -246,22 +246,22 @@ static const YYMINORTYPE yyzerominor = { 0 };
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 431, 48, 48, 47, 47, 47, 46, 216, 716, 339,
/* 10 */ 643, 425, 51, 51, 51, 51, 44, 49, 49, 49,
- /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1026,
- /* 30 */ 1026, 643, 131, 580, 51, 51, 51, 51, 411, 49,
+ /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1027,
+ /* 30 */ 1027, 643, 131, 580, 51, 51, 51, 51, 411, 49,
/* 40 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216,
- /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1026, 1026,
- /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 70 */ 1026, 1026, 563, 1026, 1026, 1026, 1026, 38, 39, 1026,
- /* 80 */ 1026, 1026, 1026, 1026, 40, 431, 528, 385, 716, 595,
+ /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1027, 1027,
+ /* 60 */ 41, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 70 */ 1027, 1027, 563, 1027, 1027, 1027, 1027, 38, 39, 1027,
+ /* 80 */ 1027, 1027, 1027, 1027, 40, 431, 528, 385, 716, 595,
/* 90 */ 594, 280, 4, 377, 716, 630, 425, 642, 608, 422,
/* 100 */ 12, 134, 687, 429, 562, 609, 483, 690, 331, 279,
/* 110 */ 714, 713, 564, 565, 642, 689, 688, 687, 235, 506,
/* 120 */ 60, 320, 610, 411, 47, 47, 47, 46, 216, 122,
- /* 130 */ 243, 213, 247, 59, 1142, 1142, 486, 609, 607, 603,
+ /* 130 */ 243, 213, 247, 59, 1143, 1143, 486, 609, 607, 603,
/* 140 */ 685, 306, 485, 584, 716, 41, 507, 509, 642, 508,
/* 150 */ 676, 9, 642, 144, 95, 281, 379, 276, 378, 132,
/* 160 */ 297, 716, 38, 39, 601, 200, 199, 7, 355, 40,
- /* 170 */ 884, 307, 1134, 274, 249, 716, 17, 4, 884, 1134,
+ /* 170 */ 884, 307, 1135, 274, 249, 716, 17, 4, 884, 1135,
/* 180 */ 56, 717, 642, 431, 422, 884, 329, 687, 429, 716,
/* 190 */ 687, 643, 690, 687, 425, 690, 714, 713, 690, 642,
/* 200 */ 689, 688, 687, 689, 688, 687, 689, 688, 687, 98,
@@ -269,16 +269,16 @@ static const YYACTIONTYPE yy_action[] = {
/* 220 */ 716, 411, 239, 884, 303, 582, 512, 581, 884, 884,
/* 230 */ 884, 884, 884, 642, 643, 676, 9, 642, 685, 217,
/* 240 */ 245, 673, 102, 41, 287, 300, 714, 713, 67, 302,
- /* 250 */ 148, 307, 1133, 151, 306, 484, 81, 715, 97, 1133,
+ /* 250 */ 148, 307, 1134, 151, 306, 484, 81, 715, 97, 1134,
/* 260 */ 38, 39, 551, 714, 713, 771, 130, 40, 946, 376,
/* 270 */ 373, 372, 447, 46, 216, 4, 946, 714, 713, 334,
/* 280 */ 642, 682, 422, 946, 606, 687, 429, 371, 448, 447,
/* 290 */ 690, 714, 713, 304, 265, 146, 267, 642, 689, 688,
/* 300 */ 687, 287, 68, 677, 691, 255, 362, 259, 359, 692,
- /* 310 */ 1027, 1027, 682, 946, 715, 946, 946, 447, 698, 234,
+ /* 310 */ 1028, 1028, 682, 946, 715, 946, 946, 447, 698, 234,
/* 320 */ 386, 715, 714, 713, 773, 651, 946, 946, 946, 946,
/* 330 */ 110, 642, 317, 676, 9, 642, 222, 677, 299, 52,
- /* 340 */ 53, 426, 289, 1027, 1027, 675, 675, 50, 50, 51,
+ /* 340 */ 53, 426, 289, 1028, 1028, 675, 675, 50, 50, 51,
/* 350 */ 51, 51, 51, 716, 49, 49, 49, 49, 48, 48,
/* 360 */ 47, 47, 47, 46, 216, 431, 428, 340, 716, 335,
/* 370 */ 671, 670, 287, 283, 716, 138, 425, 209, 219, 430,
@@ -293,27 +293,27 @@ static const YYACTIONTYPE yy_action[] = {
/* 460 */ 92, 143, 642, 358, 422, 931, 674, 687, 429, 14,
/* 470 */ 714, 713, 690, 131, 456, 551, 714, 713, 953, 642,
/* 480 */ 689, 688, 687, 668, 667, 210, 593, 458, 384, 457,
- /* 490 */ 576, 88, 1027, 1027, 13, 931, 672, 931, 931, 54,
+ /* 490 */ 576, 88, 1028, 1028, 13, 931, 672, 931, 931, 54,
/* 500 */ 575, 678, 42, 368, 37, 401, 35, 381, 931, 1,
/* 510 */ 931, 931, 641, 642, 634, 676, 9, 642, 661, 714,
- /* 520 */ 713, 52, 53, 426, 289, 1027, 1027, 675, 675, 50,
+ /* 520 */ 713, 52, 53, 426, 289, 1028, 1028, 675, 675, 50,
/* 530 */ 50, 51, 51, 51, 51, 660, 49, 49, 49, 49,
/* 540 */ 48, 48, 47, 47, 47, 46, 216, 657, 648, 714,
/* 550 */ 713, 496, 542, 569, 714, 713, 714, 713, 656, 691,
/* 560 */ 543, 614, 320, 30, 692, 27, 716, 585, 274, 682,
- /* 570 */ 160, 1027, 1027, 426, 289, 693, 613, 675, 675, 50,
+ /* 570 */ 160, 1028, 1028, 426, 289, 693, 613, 675, 675, 50,
/* 580 */ 50, 51, 51, 51, 51, 398, 49, 49, 49, 49,
- /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1025, 1025, 81,
- /* 600 */ 52, 53, 426, 289, 1027, 1027, 675, 675, 50, 50,
+ /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1026, 1026, 81,
+ /* 600 */ 52, 53, 426, 289, 1028, 1028, 675, 675, 50, 50,
/* 610 */ 51, 51, 51, 51, 496, 49, 49, 49, 49, 48,
- /* 620 */ 48, 47, 47, 47, 46, 216, 1025, 1025, 1025, 1025,
- /* 630 */ 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
- /* 640 */ 716, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
- /* 650 */ 1025, 1025, 1027, 1027, 357, 49, 49, 49, 49, 48,
+ /* 620 */ 48, 47, 47, 47, 46, 216, 1026, 1026, 1026, 1026,
+ /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 640 */ 716, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 650 */ 1026, 1026, 1028, 1028, 357, 49, 49, 49, 49, 48,
/* 660 */ 48, 47, 47, 47, 46, 216, 288, 552, 714, 713,
/* 670 */ 495, 682, 298, 662, 346, 153, 538, 69, 694, 715,
- /* 680 */ 715, 52, 53, 426, 289, 1027, 1027, 675, 675, 50,
- /* 690 */ 50, 51, 51, 51, 51, 1094, 49, 49, 49, 49,
+ /* 680 */ 715, 52, 53, 426, 289, 1028, 1028, 675, 675, 50,
+ /* 690 */ 50, 51, 51, 51, 51, 1095, 49, 49, 49, 49,
/* 700 */ 48, 48, 47, 47, 47, 46, 216, 52, 53, 426,
/* 710 */ 289, 418, 511, 675, 675, 50, 50, 51, 51, 51,
/* 720 */ 51, 159, 49, 49, 49, 49, 48, 48, 47, 47,
@@ -321,12 +321,12 @@ static const YYACTIONTYPE yy_action[] = {
/* 740 */ 215, 650, 714, 713, 81, 52, 53, 426, 289, 954,
/* 750 */ 414, 675, 675, 50, 50, 51, 51, 51, 51, 397,
/* 760 */ 49, 49, 49, 49, 48, 48, 47, 47, 47, 46,
- /* 770 */ 216, 158, 1094, 21, 716, 627, 459, 716, 1079, 716,
- /* 780 */ 647, 1045, 140, 89, 716, 1149, 154, 435, 2, 715,
+ /* 770 */ 216, 158, 1095, 21, 716, 627, 459, 716, 1080, 716,
+ /* 780 */ 647, 1046, 140, 89, 716, 1150, 154, 435, 2, 715,
/* 790 */ 424, 671, 670, 396, 460, 461, 954, 52, 53, 426,
/* 800 */ 289, 573, 716, 675, 675, 50, 50, 51, 51, 51,
/* 810 */ 51, 321, 49, 49, 49, 49, 48, 48, 47, 47,
- /* 820 */ 47, 46, 216, 431, 1108, 81, 206, 205, 204, 52,
+ /* 820 */ 47, 46, 216, 431, 1109, 81, 206, 205, 204, 52,
/* 830 */ 53, 426, 289, 716, 425, 675, 675, 50, 50, 51,
/* 840 */ 51, 51, 51, 344, 49, 49, 49, 49, 48, 48,
/* 850 */ 47, 47, 47, 46, 216, 597, 715, 666, 600, 462,
@@ -334,17 +334,17 @@ static const YYACTIONTYPE yy_action[] = {
/* 870 */ 667, 609, 724, 434, 81, 656, 714, 713, 685, 714,
/* 880 */ 713, 714, 713, 41, 528, 272, 714, 713, 610, 349,
/* 890 */ 528, 450, 89, 677, 12, 633, 633, 338, 636, 609,
- /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1142, 1142,
+ /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1143, 1143,
/* 910 */ 716, 524, 682, 581, 716, 4, 610, 468, 60, 450,
/* 920 */ 642, 208, 422, 506, 60, 687, 429, 677, 32, 109,
/* 930 */ 690, 609, 500, 501, 352, 714, 713, 642, 689, 688,
/* 940 */ 687, 428, 900, 900, 467, 466, 552, 465, 421, 383,
- /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1142, 1142, 715,
+ /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1143, 1143, 715,
/* 960 */ 444, 722, 686, 182, 646, 714, 713, 645, 231, 230,
/* 970 */ 437, 642, 356, 676, 9, 642, 417, 444, 52, 53,
/* 980 */ 426, 289, 91, 91, 675, 675, 50, 50, 51, 51,
/* 990 */ 51, 51, 644, 49, 49, 49, 49, 48, 48, 47,
- /* 1000 */ 47, 47, 46, 216, 1034, 444, 668, 667, 714, 713,
+ /* 1000 */ 47, 47, 46, 216, 1035, 444, 668, 667, 714, 713,
/* 1010 */ 91, 453, 714, 713, 682, 641, 714, 713, 324, 202,
/* 1020 */ 52, 53, 426, 289, 446, 680, 675, 675, 50, 50,
/* 1030 */ 51, 51, 51, 51, 639, 49, 49, 49, 49, 48,
@@ -367,10 +367,10 @@ static const YYACTIONTYPE yy_action[] = {
/* 1200 */ 47, 47, 47, 46, 216, 532, 8, 517, 696, 87,
/* 1210 */ 137, 52, 53, 426, 289, 22, 557, 675, 675, 50,
/* 1220 */ 50, 51, 51, 51, 51, 135, 49, 49, 49, 49,
- /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1109, 91,
+ /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1110, 91,
/* 1240 */ 716, 91, 52, 53, 426, 289, 615, 722, 675, 675,
/* 1250 */ 50, 50, 51, 51, 51, 51, 620, 49, 49, 49,
- /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1107,
+ /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1108,
/* 1270 */ 99, 504, 390, 491, 52, 53, 426, 289, 714, 713,
/* 1280 */ 675, 675, 50, 50, 51, 51, 51, 51, 682, 49,
/* 1290 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216,
@@ -395,7 +395,7 @@ static const YYACTIONTYPE yy_action[] = {
/* 1480 */ 530, 714, 713, 651, 715, 714, 713, 38, 39, 64,
/* 1490 */ 18, 399, 370, 431, 40, 129, 716, 366, 326, 534,
/* 1500 */ 534, 63, 4, 270, 425, 714, 713, 642, 475, 422,
- /* 1510 */ 316, 530, 687, 429, 716, 714, 713, 690, 279, 716,
+ /* 1510 */ 316, 530, 714, 429, 716, 714, 713, 690, 279, 716,
/* 1520 */ 533, 716, 156, 624, 642, 689, 688, 687, 525, 716,
/* 1530 */ 125, 411, 519, 714, 713, 514, 715, 714, 713, 3,
/* 1540 */ 714, 713, 714, 713, 79, 525, 682, 85, 685, 519,
@@ -408,9 +408,9 @@ static const YYACTIONTYPE yy_action[] = {
/* 1610 */ 687, 438, 428, 411, 497, 62, 714, 713, 430, 119,
/* 1620 */ 254, 714, 713, 714, 713, 430, 686, 181, 438, 704,
/* 1630 */ 685, 714, 713, 686, 163, 41, 251, 629, 311, 161,
- /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1035, 682, 531,
+ /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1036, 682, 531,
/* 1650 */ 701, 702, 38, 39, 152, 641, 498, 469, 431, 40,
- /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1037, 425,
+ /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1038, 425,
/* 1670 */ 714, 713, 642, 416, 422, 715, 430, 687, 429, 641,
/* 1680 */ 428, 350, 690, 619, 686, 172, 641, 494, 454, 642,
/* 1690 */ 689, 688, 687, 430, 111, 428, 411, 286, 337, 714,
@@ -794,59 +794,59 @@ static const short yy_reduce_ofst[] = {
/* 310 */ 1573, 1506, 1462, 1462, 1462, 1540,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 729, 1037, 1142, 1142, 1026, 1026, 1026, 1142, 1026, 1026,
- /* 10 */ 1026, 1026, 900, 1148, 1148, 1148, 1026, 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, 1015, 1148, 894,
- /* 60 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 774,
- /* 70 */ 890, 900, 1148, 1148, 1148, 1148, 1148, 962, 949, 940,
- /* 80 */ 1148, 1148, 1148, 972, 972, 955, 842, 972, 1148, 1148,
- /* 90 */ 1148, 1148, 928, 928, 1027, 1148, 766, 1112, 1117, 1013,
- /* 100 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 901, 1148,
- /* 110 */ 1013, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 120 */ 1148, 963, 956, 950, 941, 1148, 1148, 1148, 1148, 1148,
- /* 130 */ 1148, 1148, 1148, 1148, 1148, 890, 890, 1148, 1148, 890,
- /* 140 */ 1148, 1148, 1148, 1014, 1148, 1148, 763, 1148, 1148, 1148,
- /* 150 */ 735, 1058, 1148, 1148, 729, 1142, 1142, 1142, 1142, 1142,
- /* 160 */ 1142, 1135, 880, 935, 906, 945, 933, 937, 1038, 1031,
- /* 170 */ 1032, 1030, 936, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 180 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 988, 1000,
- /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1148, 1148,
- /* 200 */ 1148, 992, 1148, 1148, 1148, 1148, 1148, 893, 1148, 1148,
- /* 210 */ 864, 1148, 1086, 1148, 1148, 776, 1148, 878, 738, 944,
- /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1033, 928,
- /* 230 */ 1148, 1148, 993, 891, 878, 1126, 909, 909, 909, 1111,
- /* 240 */ 1111, 909, 909, 855, 909, 855, 909, 855, 909, 855,
+ /* 0 */ 729, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027,
+ /* 10 */ 1027, 1027, 900, 1149, 1149, 1149, 1027, 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, 1015, 1149, 894,
+ /* 60 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 774,
+ /* 70 */ 890, 900, 1149, 1149, 1149, 1149, 1149, 962, 949, 940,
+ /* 80 */ 1149, 1149, 1149, 972, 972, 955, 842, 972, 1149, 1149,
+ /* 90 */ 1149, 1149, 928, 928, 1028, 1149, 766, 1113, 1118, 1013,
+ /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 901, 1149,
+ /* 110 */ 1013, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 120 */ 1149, 963, 956, 950, 941, 1149, 1149, 1149, 1149, 1149,
+ /* 130 */ 1149, 1149, 1149, 1149, 1149, 890, 890, 1149, 1149, 890,
+ /* 140 */ 1149, 1149, 1149, 1014, 1149, 1149, 763, 1149, 1149, 1149,
+ /* 150 */ 735, 1059, 1149, 1149, 729, 1143, 1143, 1143, 1143, 1143,
+ /* 160 */ 1143, 1136, 880, 935, 906, 945, 933, 937, 1039, 1032,
+ /* 170 */ 1033, 1031, 936, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
+ /* 180 */ 1028, 1028, 1018, 1028, 1028, 1028, 1028, 1028, 988, 1000,
+ /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1149, 1149,
+ /* 200 */ 1149, 992, 1149, 1149, 1149, 1149, 1149, 893, 1149, 1149,
+ /* 210 */ 864, 1149, 1087, 1149, 1149, 776, 1149, 878, 738, 944,
+ /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1034, 928,
+ /* 230 */ 1149, 1149, 993, 891, 878, 1127, 909, 909, 909, 1112,
+ /* 240 */ 1112, 909, 909, 855, 909, 855, 909, 855, 909, 855,
/* 250 */ 909, 760, 944, 909, 760, 846, 968, 909, 909, 846,
- /* 260 */ 944, 909, 1093, 1091, 909, 760, 909, 760, 909, 1046,
- /* 270 */ 844, 844, 844, 844, 825, 1046, 844, 809, 844, 825,
- /* 280 */ 844, 844, 1148, 909, 909, 1148, 1046, 1052, 1046, 1027,
- /* 290 */ 994, 934, 922, 932, 929, 944, 1148, 757, 828, 760,
- /* 300 */ 746, 746, 734, 734, 734, 734, 1139, 1139, 1135, 811,
- /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1039, 1148, 1148, 1148,
- /* 320 */ 1148, 1148, 1148, 1060, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 330 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 730, 1148,
- /* 340 */ 1148, 1148, 1148, 1148, 1129, 1148, 1148, 1148, 1148, 1148,
- /* 350 */ 1148, 1090, 1089, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 360 */ 1148, 1148, 1148, 1078, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 370 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 380 */ 1148, 1148, 1148, 1148, 867, 869, 1148, 1148, 1148, 868,
- /* 390 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 930,
- /* 400 */ 1148, 923, 1148, 1036, 1148, 1017, 1025, 1148, 1148, 1148,
- /* 410 */ 1148, 1148, 1016, 1148, 1148, 1148, 1144, 1148, 1148, 1148,
- /* 420 */ 1143, 1148, 1148, 1148, 1148, 1148, 1028, 980, 1148, 979,
- /* 430 */ 978, 769, 1148, 744, 1148, 726, 731, 1128, 1125, 1127,
- /* 440 */ 1122, 1123, 1121, 1124, 1120, 1118, 1119, 1116, 1114, 1113,
- /* 450 */ 1115, 1110, 1106, 1066, 1064, 1062, 1071, 1070, 1069, 1068,
- /* 460 */ 1067, 1063, 1061, 1065, 1059, 959, 947, 938, 862, 1105,
- /* 470 */ 1103, 1104, 1057, 1055, 1056, 861, 860, 859, 854, 853,
- /* 480 */ 852, 851, 1132, 1141, 1140, 1138, 1137, 1136, 1130, 1131,
- /* 490 */ 1044, 1043, 1041, 1040, 1042, 762, 1082, 1085, 1084, 1083,
- /* 500 */ 1088, 1087, 1080, 1092, 1097, 1096, 1101, 1100, 1099, 1098,
- /* 510 */ 1095, 1077, 967, 966, 964, 969, 961, 960, 965, 952,
- /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1081,
+ /* 260 */ 944, 909, 1094, 1092, 909, 760, 909, 760, 909, 1047,
+ /* 270 */ 844, 844, 844, 844, 825, 1047, 844, 809, 844, 825,
+ /* 280 */ 844, 844, 1149, 909, 909, 1149, 1047, 1053, 1047, 1028,
+ /* 290 */ 994, 934, 922, 932, 929, 944, 1149, 757, 828, 760,
+ /* 300 */ 746, 746, 734, 734, 734, 734, 1140, 1140, 1136, 811,
+ /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1040, 1149, 1149, 1149,
+ /* 320 */ 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 730, 1149,
+ /* 340 */ 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149, 1149,
+ /* 350 */ 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 360 */ 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 380 */ 1149, 1149, 1149, 1149, 867, 869, 1149, 1149, 1149, 868,
+ /* 390 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 930,
+ /* 400 */ 1149, 923, 1149, 1037, 1149, 1017, 1026, 1149, 1149, 1149,
+ /* 410 */ 1149, 1149, 1016, 1149, 1149, 1149, 1145, 1149, 1149, 1149,
+ /* 420 */ 1144, 1149, 1149, 1149, 1149, 1149, 1029, 980, 1149, 979,
+ /* 430 */ 978, 769, 1149, 744, 1149, 726, 731, 1129, 1126, 1128,
+ /* 440 */ 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115, 1114,
+ /* 450 */ 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070, 1069,
+ /* 460 */ 1068, 1064, 1062, 1066, 1060, 959, 947, 938, 862, 1106,
+ /* 470 */ 1104, 1105, 1058, 1056, 1057, 861, 860, 859, 854, 853,
+ /* 480 */ 852, 851, 1133, 1142, 1141, 1139, 1138, 1137, 1131, 1132,
+ /* 490 */ 1045, 1044, 1042, 1041, 1043, 762, 1083, 1086, 1085, 1084,
+ /* 500 */ 1089, 1088, 1081, 1093, 1098, 1097, 1102, 1101, 1100, 1099,
+ /* 510 */ 1096, 1078, 967, 966, 964, 969, 961, 960, 965, 952,
+ /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1082,
/* 530 */ 858, 857, 856, 761, 756, 911, 755, 754, 765, 831,
/* 540 */ 832, 840, 843, 838, 841, 837, 836, 835, 839, 834,
/* 550 */ 830, 768, 767, 775, 824, 802, 800, 799, 803, 816,
@@ -857,12 +857,12 @@ static const YYACTIONTYPE yy_default[] = {
/* 600 */ 883, 882, 881, 917, 916, 915, 914, 913, 912, 905,
/* 610 */ 903, 899, 898, 904, 902, 920, 921, 919, 897, 889,
/* 620 */ 887, 888, 886, 974, 971, 973, 970, 907, 895, 892,
- /* 630 */ 879, 925, 924, 1029, 1018, 1008, 1019, 910, 1007, 1005,
- /* 640 */ 1028, 1025, 1020, 1102, 1024, 1012, 1011, 1010, 1147, 1145,
- /* 650 */ 1146, 1049, 1051, 1054, 1053, 1050, 927, 926, 1048, 1047,
- /* 660 */ 1009, 984, 781, 779, 780, 1074, 1073, 1076, 1075, 1072,
- /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1021, 1022, 981,
- /* 680 */ 1023, 983, 770, 873, 866, 976, 975, 808, 807, 806,
+ /* 630 */ 879, 925, 924, 1030, 1019, 1008, 1020, 910, 1007, 1005,
+ /* 640 */ 1029, 1026, 1021, 1103, 1025, 1012, 1011, 1010, 1148, 1146,
+ /* 650 */ 1147, 1050, 1052, 1055, 1054, 1051, 927, 926, 1049, 1048,
+ /* 660 */ 1009, 984, 781, 779, 780, 1075, 1074, 1077, 1076, 1073,
+ /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1022, 1023, 981,
+ /* 680 */ 1024, 983, 770, 873, 866, 976, 975, 808, 807, 806,
/* 690 */ 805, 877, 876, 787, 801, 786, 784, 764, 759, 758,
/* 700 */ 753, 751, 748, 750, 747, 752, 749, 745, 743, 742,
/* 710 */ 741, 740, 739, 773, 772, 771, 769, 737, 736, 733,
@@ -1462,136 +1462,137 @@ static const char *const yyRuleName[] = {
/* 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 ::=",
- /* 303 */ "not_opt ::=",
- /* 304 */ "not_opt ::= NOT",
- /* 305 */ "likeop ::= LIKE_KW|MATCH",
- /* 306 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 307 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 308 */ "case_else ::= ELSE expr",
- /* 309 */ "case_else ::=",
- /* 310 */ "case_operand ::= exprx",
- /* 311 */ "case_operand ::=",
- /* 312 */ "exprlist ::= nexprlist",
- /* 313 */ "exprlist ::=",
- /* 314 */ "nexprlist ::= nexprlist COMMA expr",
- /* 315 */ "nexprlist ::= exprx",
- /* 316 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt",
- /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
- /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
- /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
- /* 320 */ "uniqueflag ::= UNIQUE",
- /* 321 */ "uniqueflag ::=",
- /* 322 */ "idxlist_opt ::=",
- /* 323 */ "idxlist_opt ::= LP idxlist RP",
- /* 324 */ "idxlist ::= idxlist COMMA idxlist_single",
- /* 325 */ "idxlist ::= idxlist_single",
- /* 326 */ "idxlist_single ::= nm collate sortorder",
- /* 327 */ "idxlist_single ::= ID_COL",
- /* 328 */ "collate ::=",
- /* 329 */ "collate ::= COLLATE ids",
- /* 330 */ "collate ::= COLLATE ID_COLLATE",
- /* 331 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 332 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX",
- /* 333 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX",
- /* 334 */ "cmd ::= VACUUM",
- /* 335 */ "cmd ::= VACUUM nm",
- /* 336 */ "cmd ::= PRAGMA nm dbnm",
- /* 337 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 338 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 339 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 340 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
- /* 341 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
- /* 342 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
- /* 343 */ "nmnum ::= plus_num",
- /* 344 */ "nmnum ::= nm",
- /* 345 */ "nmnum ::= ON",
- /* 346 */ "nmnum ::= DELETE",
- /* 347 */ "nmnum ::= DEFAULT",
- /* 348 */ "plus_num ::= PLUS number",
- /* 349 */ "plus_num ::= number",
- /* 350 */ "minus_num ::= MINUS number",
- /* 351 */ "number ::= INTEGER",
- /* 352 */ "number ::= FLOAT",
- /* 353 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END",
- /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause",
- /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list",
- /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB",
- /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW",
- /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW",
- /* 359 */ "trigger_time ::= BEFORE",
- /* 360 */ "trigger_time ::= AFTER",
- /* 361 */ "trigger_time ::= INSTEAD OF",
- /* 362 */ "trigger_time ::=",
- /* 363 */ "trigger_event ::= DELETE",
- /* 364 */ "trigger_event ::= INSERT",
- /* 365 */ "trigger_event ::= UPDATE",
- /* 366 */ "trigger_event ::= UPDATE OF inscollist",
- /* 367 */ "foreach_clause ::=",
- /* 368 */ "foreach_clause ::= FOR EACH ROW",
- /* 369 */ "when_clause ::=",
- /* 370 */ "when_clause ::= WHEN expr",
- /* 371 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 372 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 373 */ "trigger_cmd_list ::= SEMI",
- /* 374 */ "trigger_cmd ::= update_stmt",
- /* 375 */ "trigger_cmd ::= insert_stmt",
- /* 376 */ "trigger_cmd ::= delete_stmt",
- /* 377 */ "trigger_cmd ::= select_stmt",
- /* 378 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
- /* 379 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 380 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG",
- /* 381 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG",
- /* 382 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 383 */ "cmd ::= DETACH database_kw_opt expr",
- /* 384 */ "key_opt ::=",
- /* 385 */ "key_opt ::= KEY expr",
- /* 386 */ "database_kw_opt ::= DATABASE",
- /* 387 */ "database_kw_opt ::=",
- /* 388 */ "cmd ::= REINDEX",
- /* 389 */ "cmd ::= REINDEX nm dbnm",
- /* 390 */ "cmd ::= REINDEX ID_COLLATE",
- /* 391 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX",
- /* 392 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB",
- /* 393 */ "cmd ::= ANALYZE",
- /* 394 */ "cmd ::= ANALYZE nm dbnm",
- /* 395 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX",
- /* 396 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB",
- /* 397 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 398 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column",
- /* 399 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW",
- /* 400 */ "cmd ::= ALTER TABLE nm DOT ID_TAB",
- /* 401 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB",
- /* 402 */ "kwcolumn_opt ::=",
- /* 403 */ "kwcolumn_opt ::= COLUMNKW",
- /* 404 */ "cmd ::= create_vtab",
- /* 405 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP",
- /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW",
- /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW",
- /* 409 */ "vtabarglist ::= vtabarg",
- /* 410 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 411 */ "vtabarg ::=",
- /* 412 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 413 */ "vtabargtoken ::= ANY",
- /* 414 */ "vtabargtoken ::= LP anylist RP",
- /* 415 */ "anylist ::=",
- /* 416 */ "anylist ::= anylist LP anylist RP",
- /* 417 */ "anylist ::= anylist ANY",
- /* 418 */ "with ::=",
- /* 419 */ "with ::= WITH wqlist",
- /* 420 */ "with ::= WITH RECURSIVE wqlist",
- /* 421 */ "wqlist ::= nm idxlist_opt AS LP select RP",
- /* 422 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP",
- /* 423 */ "wqlist ::= ID_TAB_NEW",
+ /* 294 */ "exprx ::= LP expr",
+ /* 295 */ "exprx ::= expr not_opt IN ID_DB",
+ /* 296 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
+ /* 297 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
+ /* 298 */ "exprx ::= nm DOT ID_TAB|ID_COL",
+ /* 299 */ "exprx ::= nm DOT nm DOT ID_COL",
+ /* 300 */ "exprx ::= expr COLLATE ID_COLLATE",
+ /* 301 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
+ /* 302 */ "expr ::= exprx",
+ /* 303 */ "expr ::=",
+ /* 304 */ "not_opt ::=",
+ /* 305 */ "not_opt ::= NOT",
+ /* 306 */ "likeop ::= LIKE_KW|MATCH",
+ /* 307 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 308 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 309 */ "case_else ::= ELSE expr",
+ /* 310 */ "case_else ::=",
+ /* 311 */ "case_operand ::= exprx",
+ /* 312 */ "case_operand ::=",
+ /* 313 */ "exprlist ::= nexprlist",
+ /* 314 */ "exprlist ::=",
+ /* 315 */ "nexprlist ::= nexprlist COMMA expr",
+ /* 316 */ "nexprlist ::= exprx",
+ /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt",
+ /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
+ /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
+ /* 320 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
+ /* 321 */ "uniqueflag ::= UNIQUE",
+ /* 322 */ "uniqueflag ::=",
+ /* 323 */ "idxlist_opt ::=",
+ /* 324 */ "idxlist_opt ::= LP idxlist RP",
+ /* 325 */ "idxlist ::= idxlist COMMA idxlist_single",
+ /* 326 */ "idxlist ::= idxlist_single",
+ /* 327 */ "idxlist_single ::= nm collate sortorder",
+ /* 328 */ "idxlist_single ::= ID_COL",
+ /* 329 */ "collate ::=",
+ /* 330 */ "collate ::= COLLATE ids",
+ /* 331 */ "collate ::= COLLATE ID_COLLATE",
+ /* 332 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 333 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX",
+ /* 334 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX",
+ /* 335 */ "cmd ::= VACUUM",
+ /* 336 */ "cmd ::= VACUUM nm",
+ /* 337 */ "cmd ::= PRAGMA nm dbnm",
+ /* 338 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 339 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 340 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 341 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
+ /* 342 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
+ /* 343 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
+ /* 344 */ "nmnum ::= plus_num",
+ /* 345 */ "nmnum ::= nm",
+ /* 346 */ "nmnum ::= ON",
+ /* 347 */ "nmnum ::= DELETE",
+ /* 348 */ "nmnum ::= DEFAULT",
+ /* 349 */ "plus_num ::= PLUS number",
+ /* 350 */ "plus_num ::= number",
+ /* 351 */ "minus_num ::= MINUS number",
+ /* 352 */ "number ::= INTEGER",
+ /* 353 */ "number ::= FLOAT",
+ /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END",
+ /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause",
+ /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list",
+ /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB",
+ /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW",
+ /* 359 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW",
+ /* 360 */ "trigger_time ::= BEFORE",
+ /* 361 */ "trigger_time ::= AFTER",
+ /* 362 */ "trigger_time ::= INSTEAD OF",
+ /* 363 */ "trigger_time ::=",
+ /* 364 */ "trigger_event ::= DELETE",
+ /* 365 */ "trigger_event ::= INSERT",
+ /* 366 */ "trigger_event ::= UPDATE",
+ /* 367 */ "trigger_event ::= UPDATE OF inscollist",
+ /* 368 */ "foreach_clause ::=",
+ /* 369 */ "foreach_clause ::= FOR EACH ROW",
+ /* 370 */ "when_clause ::=",
+ /* 371 */ "when_clause ::= WHEN expr",
+ /* 372 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 373 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 374 */ "trigger_cmd_list ::= SEMI",
+ /* 375 */ "trigger_cmd ::= update_stmt",
+ /* 376 */ "trigger_cmd ::= insert_stmt",
+ /* 377 */ "trigger_cmd ::= delete_stmt",
+ /* 378 */ "trigger_cmd ::= select_stmt",
+ /* 379 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
+ /* 380 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 381 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG",
+ /* 382 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG",
+ /* 383 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 384 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 385 */ "key_opt ::=",
+ /* 386 */ "key_opt ::= KEY expr",
+ /* 387 */ "database_kw_opt ::= DATABASE",
+ /* 388 */ "database_kw_opt ::=",
+ /* 389 */ "cmd ::= REINDEX",
+ /* 390 */ "cmd ::= REINDEX nm dbnm",
+ /* 391 */ "cmd ::= REINDEX ID_COLLATE",
+ /* 392 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX",
+ /* 393 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB",
+ /* 394 */ "cmd ::= ANALYZE",
+ /* 395 */ "cmd ::= ANALYZE nm dbnm",
+ /* 396 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX",
+ /* 397 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB",
+ /* 398 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 399 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column",
+ /* 400 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW",
+ /* 401 */ "cmd ::= ALTER TABLE nm DOT ID_TAB",
+ /* 402 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB",
+ /* 403 */ "kwcolumn_opt ::=",
+ /* 404 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 405 */ "cmd ::= create_vtab",
+ /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP",
+ /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW",
+ /* 409 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW",
+ /* 410 */ "vtabarglist ::= vtabarg",
+ /* 411 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 412 */ "vtabarg ::=",
+ /* 413 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 414 */ "vtabargtoken ::= ANY",
+ /* 415 */ "vtabargtoken ::= LP anylist RP",
+ /* 416 */ "anylist ::=",
+ /* 417 */ "anylist ::= anylist LP anylist RP",
+ /* 418 */ "anylist ::= anylist ANY",
+ /* 419 */ "with ::=",
+ /* 420 */ "with ::= WITH wqlist",
+ /* 421 */ "with ::= WITH RECURSIVE wqlist",
+ /* 422 */ "wqlist ::= nm idxlist_opt AS LP select RP",
+ /* 423 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP",
+ /* 424 */ "wqlist ::= ID_TAB_NEW",
};
#endif /* NDEBUG */
@@ -2519,6 +2520,7 @@ static const struct {
{ 251, 5 },
{ 251, 4 },
{ 251, 5 },
+ { 251, 2 },
{ 251, 4 },
{ 251, 6 },
{ 251, 1 },
@@ -2735,11 +2737,11 @@ static void yy_reduce(
{yygotominor.yy225 = new ParserStubExplain(true, true);}
break;
case 8: /* cmdx ::= cmd */
- case 374: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==374);
- case 375: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==375);
- case 376: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==376);
- case 377: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==377);
- case 404: /* cmd ::= create_vtab */ yytestcase(yyruleno==404);
+ case 375: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==375);
+ case 376: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==376);
+ case 377: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==377);
+ case 378: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==378);
+ case 405: /* cmd ::= create_vtab */ yytestcase(yyruleno==405);
{yygotominor.yy399 = yymsp[0].minor.yy399;}
break;
case 9: /* cmd ::= BEGIN transtype trans_opt */
@@ -2828,10 +2830,10 @@ static void yy_reduce(
case 86: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==86);
case 108: /* tconscomma ::= COMMA */ yytestcase(yyruleno==108);
case 130: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==130);
- case 304: /* not_opt ::= NOT */ yytestcase(yyruleno==304);
- case 320: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==320);
- case 386: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==386);
- case 402: /* kwcolumn_opt ::= */ yytestcase(yyruleno==402);
+ case 305: /* not_opt ::= NOT */ yytestcase(yyruleno==305);
+ case 321: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==321);
+ case 387: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387);
+ case 403: /* kwcolumn_opt ::= */ yytestcase(yyruleno==403);
{yygotominor.yy237 = new bool(true);}
break;
case 22: /* savepoint_opt ::= */
@@ -2839,10 +2841,10 @@ static void yy_reduce(
case 85: /* autoinc ::= */ yytestcase(yyruleno==85);
case 109: /* tconscomma ::= */ yytestcase(yyruleno==109);
case 131: /* ifexists ::= */ yytestcase(yyruleno==131);
- case 303: /* not_opt ::= */ yytestcase(yyruleno==303);
- case 321: /* uniqueflag ::= */ yytestcase(yyruleno==321);
- case 387: /* database_kw_opt ::= */ yytestcase(yyruleno==387);
- case 403: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==403);
+ case 304: /* not_opt ::= */ yytestcase(yyruleno==304);
+ case 322: /* uniqueflag ::= */ yytestcase(yyruleno==322);
+ case 388: /* database_kw_opt ::= */ yytestcase(yyruleno==388);
+ case 404: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==404);
{yygotominor.yy237 = new bool(false);}
break;
case 23: /* cmd ::= SAVEPOINT nm */
@@ -2914,22 +2916,22 @@ static void yy_reduce(
break;
case 31: /* cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW */
case 133: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==133);
- case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==357);
+ case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==358);
{ yy_destructor(yypParser,179,&yymsp[-5].minor);
yy_destructor(yypParser,177,&yymsp[-2].minor);
}
break;
case 32: /* cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW */
case 134: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==134);
- case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==358);
+ case 359: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==359);
{ yy_destructor(yypParser,179,&yymsp[-3].minor);
}
break;
case 33: /* table_options ::= */
case 185: /* dbnm ::= */ yytestcase(yyruleno==185);
- case 328: /* collate ::= */ yytestcase(yyruleno==328);
- case 411: /* vtabarg ::= */ yytestcase(yyruleno==411);
- case 415: /* anylist ::= */ yytestcase(yyruleno==415);
+ case 329: /* collate ::= */ yytestcase(yyruleno==329);
+ case 412: /* vtabarg ::= */ yytestcase(yyruleno==412);
+ case 416: /* anylist ::= */ yytestcase(yyruleno==416);
{yygotominor.yy211 = new QString();}
break;
case 34: /* table_options ::= WITHOUT nm */
@@ -2974,8 +2976,8 @@ static void yy_reduce(
case 47: /* nm ::= id */ yytestcase(yyruleno==47);
case 55: /* typename ::= ids */ yytestcase(yyruleno==55);
case 186: /* dbnm ::= DOT nm */ yytestcase(yyruleno==186);
- case 329: /* collate ::= COLLATE ids */ yytestcase(yyruleno==329);
- case 330: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==330);
+ case 330: /* collate ::= COLLATE ids */ yytestcase(yyruleno==330);
+ case 331: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==331);
{yygotominor.yy211 = yymsp[0].minor.yy211;}
break;
case 45: /* id ::= ID */
@@ -3035,9 +3037,9 @@ static void yy_reduce(
break;
case 58: /* signed ::= plus_num */
case 59: /* signed ::= minus_num */ yytestcase(yyruleno==59);
- case 343: /* nmnum ::= plus_num */ yytestcase(yyruleno==343);
- case 348: /* plus_num ::= PLUS number */ yytestcase(yyruleno==348);
- case 349: /* plus_num ::= number */ yytestcase(yyruleno==349);
+ case 344: /* nmnum ::= plus_num */ yytestcase(yyruleno==344);
+ case 349: /* plus_num ::= PLUS number */ yytestcase(yyruleno==349);
+ case 350: /* plus_num ::= number */ yytestcase(yyruleno==350);
{yygotominor.yy21 = yymsp[0].minor.yy21;}
break;
case 60: /* carglist ::= carglist ccons */
@@ -3202,9 +3204,9 @@ static void yy_reduce(
}
break;
case 84: /* term ::= STRING|BLOB */
- case 345: /* nmnum ::= ON */ yytestcase(yyruleno==345);
- case 346: /* nmnum ::= DELETE */ yytestcase(yyruleno==346);
- case 347: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==347);
+ case 346: /* nmnum ::= ON */ yytestcase(yyruleno==346);
+ case 347: /* nmnum ::= DELETE */ yytestcase(yyruleno==347);
+ case 348: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==348);
{yygotominor.yy21 = new QVariant(yymsp[0].minor.yy0->value);}
break;
case 87: /* refargs ::= */
@@ -3389,23 +3391,23 @@ 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 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);
- case 333: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==333);
- case 341: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==341);
- case 342: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==342);
- case 380: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==380);
- case 381: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==381);
- case 391: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==391);
- case 392: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==392);
- case 395: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==395);
- case 396: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==396);
- case 400: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==400);
- case 401: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==401);
- case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==407);
- case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==408);
+ case 298: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==298);
+ case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==319);
+ case 320: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==320);
+ case 333: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==333);
+ case 334: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==334);
+ case 342: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==342);
+ case 343: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==343);
+ case 381: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==381);
+ case 382: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==382);
+ case 392: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==392);
+ case 393: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==393);
+ case 396: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==396);
+ case 397: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==397);
+ case 401: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==401);
+ case 402: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==402);
+ case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==408);
+ case 409: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==409);
{ yy_destructor(yypParser,177,&yymsp[-2].minor);
}
break;
@@ -3801,11 +3803,11 @@ static void yy_reduce(
{yygotominor.yy226 = new SqliteSortOrder(SqliteSortOrder::null);}
break;
case 205: /* groupby_opt ::= */
- case 313: /* exprlist ::= */ yytestcase(yyruleno==313);
+ case 314: /* exprlist ::= */ yytestcase(yyruleno==314);
{yygotominor.yy13 = new ParserExprList();}
break;
case 206: /* groupby_opt ::= GROUP BY nexprlist */
- case 312: /* exprlist ::= nexprlist */ yytestcase(yyruleno==312);
+ case 313: /* exprlist ::= nexprlist */ yytestcase(yyruleno==313);
{yygotominor.yy13 = yymsp[0].minor.yy13;}
break;
case 207: /* groupby_opt ::= GROUP BY */
@@ -3816,19 +3818,19 @@ static void yy_reduce(
break;
case 208: /* having_opt ::= */
case 220: /* where_opt ::= */ yytestcase(yyruleno==220);
- case 309: /* case_else ::= */ yytestcase(yyruleno==309);
- case 311: /* case_operand ::= */ yytestcase(yyruleno==311);
- case 369: /* when_clause ::= */ yytestcase(yyruleno==369);
- case 384: /* key_opt ::= */ yytestcase(yyruleno==384);
+ case 310: /* case_else ::= */ yytestcase(yyruleno==310);
+ case 312: /* case_operand ::= */ yytestcase(yyruleno==312);
+ case 370: /* when_clause ::= */ yytestcase(yyruleno==370);
+ case 385: /* key_opt ::= */ yytestcase(yyruleno==385);
{yygotominor.yy490 = nullptr;}
break;
case 209: /* having_opt ::= HAVING expr */
case 221: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==221);
- case 301: /* expr ::= exprx */ yytestcase(yyruleno==301);
- 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);
- case 385: /* key_opt ::= KEY expr */ yytestcase(yyruleno==385);
+ case 302: /* expr ::= exprx */ yytestcase(yyruleno==302);
+ case 309: /* case_else ::= ELSE expr */ yytestcase(yyruleno==309);
+ case 311: /* case_operand ::= exprx */ yytestcase(yyruleno==311);
+ case 371: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==371);
+ case 386: /* key_opt ::= KEY expr */ yytestcase(yyruleno==386);
{yygotominor.yy490 = yymsp[0].minor.yy490;}
break;
case 210: /* limit_opt ::= */
@@ -4401,64 +4403,72 @@ static void yy_reduce(
parserContext->minorErrorBeforeNextToken("Syntax error");
}
break;
- case 294: /* exprx ::= expr not_opt IN ID_DB */
+ case 294: /* exprx ::= LP expr */
+{
+ yygotominor.yy490 = new SqliteExpr();
+ yygotominor.yy490->initSubExpr(yymsp[0].minor.yy490);
+ objectForTokens = yygotominor.yy490;
+ parserContext->minorErrorBeforeNextToken("Syntax error");
+ }
+ break;
+ case 295: /* 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);
+ case 296: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
+ case 297: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==297);
{ yy_destructor(yypParser,199,&yymsp[-5].minor);
yy_destructor(yypParser,177,&yymsp[-2].minor);
}
break;
- case 298: /* exprx ::= nm DOT nm DOT ID_COL */
+ case 299: /* 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);
+ case 300: /* exprx ::= expr COLLATE ID_COLLATE */
+ case 301: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==301);
{ yy_destructor(yypParser,199,&yymsp[-2].minor);
}
break;
- case 302: /* expr ::= */
+ case 303: /* expr ::= */
{
yygotominor.yy490 = new SqliteExpr();
objectForTokens = yygotominor.yy490;
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 305: /* likeop ::= LIKE_KW|MATCH */
+ case 306: /* likeop ::= LIKE_KW|MATCH */
{yygotominor.yy374 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));}
break;
- case 306: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ case 307: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
yymsp[-4].minor.yy13->append(yymsp[-2].minor.yy490);
yymsp[-4].minor.yy13->append(yymsp[0].minor.yy490);
yygotominor.yy13 = yymsp[-4].minor.yy13;
}
break;
- case 307: /* case_exprlist ::= WHEN expr THEN expr */
+ case 308: /* case_exprlist ::= WHEN expr THEN expr */
{
yygotominor.yy13 = new ParserExprList();
yygotominor.yy13->append(yymsp[-2].minor.yy490);
yygotominor.yy13->append(yymsp[0].minor.yy490);
}
break;
- case 314: /* nexprlist ::= nexprlist COMMA expr */
+ case 315: /* nexprlist ::= nexprlist COMMA expr */
{
yymsp[-2].minor.yy13->append(yymsp[0].minor.yy490);
yygotominor.yy13 = yymsp[-2].minor.yy13;
DONT_INHERIT_TOKENS("nexprlist");
}
break;
- case 315: /* nexprlist ::= exprx */
+ case 316: /* nexprlist ::= exprx */
{
yygotominor.yy13 = new ParserExprList();
yygotominor.yy13->append(yymsp[0].minor.yy490);
}
break;
- case 316: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */
+ case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */
{
yygotominor.yy399 = new SqliteCreateIndex(
*(yymsp[-10].minor.yy237),
@@ -4478,31 +4488,31 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */
+ case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */
{ yy_destructor(yypParser,177,&yymsp[-3].minor);
}
break;
- case 322: /* idxlist_opt ::= */
+ case 323: /* idxlist_opt ::= */
{yygotominor.yy139 = new ParserIndexedColumnList();}
break;
- case 323: /* idxlist_opt ::= LP idxlist RP */
+ case 324: /* idxlist_opt ::= LP idxlist RP */
{yygotominor.yy139 = yymsp[-1].minor.yy139;}
break;
- case 324: /* idxlist ::= idxlist COMMA idxlist_single */
+ case 325: /* idxlist ::= idxlist COMMA idxlist_single */
{
yymsp[-2].minor.yy139->append(yymsp[0].minor.yy90);
yygotominor.yy139 = yymsp[-2].minor.yy139;
DONT_INHERIT_TOKENS("idxlist");
}
break;
- case 325: /* idxlist ::= idxlist_single */
+ case 326: /* idxlist ::= idxlist_single */
{
yygotominor.yy139 = new ParserIndexedColumnList();
yygotominor.yy139->append(yymsp[0].minor.yy90);
}
break;
- case 326: /* idxlist_single ::= nm collate sortorder */
- case 327: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==327);
+ case 327: /* idxlist_single ::= nm collate sortorder */
+ case 328: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==328);
{
SqliteIndexedColumn* obj =
new SqliteIndexedColumn(
@@ -4517,7 +4527,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy90;
}
break;
- case 331: /* cmd ::= DROP INDEX ifexists fullname */
+ case 332: /* cmd ::= DROP INDEX ifexists fullname */
{
yygotominor.yy399 = new SqliteDropIndex(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2);
delete yymsp[-1].minor.yy237;
@@ -4525,20 +4535,20 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 334: /* cmd ::= VACUUM */
+ case 335: /* cmd ::= VACUUM */
{
yygotominor.yy399 = new SqliteVacuum();
objectForTokens = yygotominor.yy399;
}
break;
- case 335: /* cmd ::= VACUUM nm */
+ case 336: /* cmd ::= VACUUM nm */
{
yygotominor.yy399 = new SqliteVacuum(*(yymsp[0].minor.yy211));
delete yymsp[0].minor.yy211;
objectForTokens = yygotominor.yy399;
}
break;
- case 336: /* cmd ::= PRAGMA nm dbnm */
+ case 337: /* cmd ::= PRAGMA nm dbnm */
{
yygotominor.yy399 = new SqlitePragma(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211));
delete yymsp[-1].minor.yy211;
@@ -4546,8 +4556,8 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 337: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
- case 339: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==339);
+ case 338: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
+ case 340: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==340);
{
yygotominor.yy399 = new SqlitePragma(*(yymsp[-3].minor.yy211), *(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy21), true);
delete yymsp[-3].minor.yy211;
@@ -4556,8 +4566,8 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 338: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
- case 340: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==340);
+ case 339: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ case 341: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==341);
{
yygotominor.yy399 = new SqlitePragma(*(yymsp[-4].minor.yy211), *(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy21), false);
delete yymsp[-4].minor.yy211;
@@ -4566,13 +4576,13 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 344: /* nmnum ::= nm */
+ case 345: /* nmnum ::= nm */
{
yygotominor.yy21 = new QVariant(*(yymsp[0].minor.yy211));
delete yymsp[0].minor.yy211;
}
break;
- case 350: /* minus_num ::= MINUS number */
+ case 351: /* minus_num ::= MINUS number */
{
if (yymsp[0].minor.yy21->type() == QVariant::Double)
*(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toDouble());
@@ -4584,13 +4594,13 @@ static void yy_reduce(
yygotominor.yy21 = yymsp[0].minor.yy21;
}
break;
- case 351: /* number ::= INTEGER */
+ case 352: /* number ::= INTEGER */
{yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());}
break;
- case 352: /* number ::= FLOAT */
+ case 353: /* number ::= FLOAT */
{yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());}
break;
- case 353: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */
+ case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */
{
yygotominor.yy399 = new SqliteCreateTrigger(
*(yymsp[-13].minor.yy376),
@@ -4616,7 +4626,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */
+ case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */
{
QList<SqliteQuery *> CL;
@@ -4644,7 +4654,7 @@ static void yy_reduce(
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */
+ case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */
{
yygotominor.yy399 = new SqliteCreateTrigger(
*(yymsp[-12].minor.yy376),
@@ -4671,79 +4681,79 @@ static void yy_reduce(
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */
+ case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */
{ yy_destructor(yypParser,179,&yymsp[-8].minor);
yy_destructor(yypParser,177,&yymsp[-5].minor);
yy_destructor(yypParser,262,&yymsp[-3].minor);
yy_destructor(yypParser,263,&yymsp[-2].minor);
}
break;
- case 359: /* trigger_time ::= BEFORE */
+ case 360: /* trigger_time ::= BEFORE */
{yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);}
break;
- case 360: /* trigger_time ::= AFTER */
+ case 361: /* trigger_time ::= AFTER */
{yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);}
break;
- case 361: /* trigger_time ::= INSTEAD OF */
+ case 362: /* trigger_time ::= INSTEAD OF */
{yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);}
break;
- case 362: /* trigger_time ::= */
+ case 363: /* trigger_time ::= */
{yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);}
break;
- case 363: /* trigger_event ::= DELETE */
+ case 364: /* trigger_event ::= DELETE */
{
yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE);
objectForTokens = yygotominor.yy309;
}
break;
- case 364: /* trigger_event ::= INSERT */
+ case 365: /* trigger_event ::= INSERT */
{
yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT);
objectForTokens = yygotominor.yy309;
}
break;
- case 365: /* trigger_event ::= UPDATE */
+ case 366: /* trigger_event ::= UPDATE */
{
yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE);
objectForTokens = yygotominor.yy309;
}
break;
- case 366: /* trigger_event ::= UPDATE OF inscollist */
+ case 367: /* trigger_event ::= UPDATE OF inscollist */
{
yygotominor.yy309 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy445));
delete yymsp[0].minor.yy445;
objectForTokens = yygotominor.yy309;
}
break;
- case 367: /* foreach_clause ::= */
+ case 368: /* foreach_clause ::= */
{yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);}
break;
- case 368: /* foreach_clause ::= FOR EACH ROW */
+ case 369: /* foreach_clause ::= FOR EACH ROW */
{yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);}
break;
- case 371: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 372: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
yymsp[-2].minor.yy214->append(yymsp[-1].minor.yy399);
yygotominor.yy214 = yymsp[-2].minor.yy214;
DONT_INHERIT_TOKENS("trigger_cmd_list");
}
break;
- case 372: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 373: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
yygotominor.yy214 = new ParserQueryList();
yygotominor.yy214->append(yymsp[-1].minor.yy399);
}
break;
- case 373: /* trigger_cmd_list ::= SEMI */
+ case 374: /* trigger_cmd_list ::= SEMI */
{
yygotominor.yy214 = new ParserQueryList();
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 378: /* raisetype ::= ROLLBACK|ABORT|FAIL */
+ case 379: /* raisetype ::= ROLLBACK|ABORT|FAIL */
{yygotominor.yy0 = yymsp[0].minor.yy0;}
break;
- case 379: /* cmd ::= DROP TRIGGER ifexists fullname */
+ case 380: /* cmd ::= DROP TRIGGER ifexists fullname */
{
yygotominor.yy399 = new SqliteDropTrigger(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2);
delete yymsp[-1].minor.yy237;
@@ -4751,25 +4761,25 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 382: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ case 383: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
{
yygotominor.yy399 = new SqliteAttach(*(yymsp[-4].minor.yy237), yymsp[-3].minor.yy490, yymsp[-1].minor.yy490, yymsp[0].minor.yy490);
delete yymsp[-4].minor.yy237;
objectForTokens = yygotominor.yy399;
}
break;
- case 383: /* cmd ::= DETACH database_kw_opt expr */
+ case 384: /* cmd ::= DETACH database_kw_opt expr */
{
yygotominor.yy399 = new SqliteDetach(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy490);
delete yymsp[-1].minor.yy237;
objectForTokens = yygotominor.yy399;
}
break;
- case 388: /* cmd ::= REINDEX */
+ case 389: /* cmd ::= REINDEX */
{yygotominor.yy399 = new SqliteReindex();}
break;
- case 389: /* cmd ::= REINDEX nm dbnm */
- case 390: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==390);
+ case 390: /* cmd ::= REINDEX nm dbnm */
+ case 391: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==391);
{
yygotominor.yy399 = new SqliteReindex(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211));
delete yymsp[-1].minor.yy211;
@@ -4777,13 +4787,13 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 393: /* cmd ::= ANALYZE */
+ case 394: /* cmd ::= ANALYZE */
{
yygotominor.yy399 = new SqliteAnalyze();
objectForTokens = yygotominor.yy399;
}
break;
- case 394: /* cmd ::= ANALYZE nm dbnm */
+ case 395: /* cmd ::= ANALYZE nm dbnm */
{
yygotominor.yy399 = new SqliteAnalyze(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211));
delete yymsp[-1].minor.yy211;
@@ -4791,7 +4801,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 397: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+ case 398: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
{
yygotominor.yy399 = new SqliteAlterTable(
yymsp[-3].minor.yy66->name1,
@@ -4803,7 +4813,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 398: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */
+ case 399: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */
{
yygotominor.yy399 = new SqliteAlterTable(
yymsp[-3].minor.yy66->name1,
@@ -4816,11 +4826,11 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 399: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */
+ case 400: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */
{ yy_destructor(yypParser,181,&yymsp[-3].minor);
}
break;
- case 405: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */
{
yygotominor.yy399 = new SqliteCreateVirtualTable(
*(yymsp[-4].minor.yy237),
@@ -4835,7 +4845,7 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */
+ case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */
{
yygotominor.yy399 = new SqliteCreateVirtualTable(
*(yymsp[-7].minor.yy237),
@@ -4852,14 +4862,14 @@ static void yy_reduce(
objectForTokens = yygotominor.yy399;
}
break;
- case 409: /* vtabarglist ::= vtabarg */
+ case 410: /* vtabarglist ::= vtabarg */
{
yygotominor.yy445 = new ParserStringList();
yygotominor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
delete yymsp[0].minor.yy211;
}
break;
- case 410: /* vtabarglist ::= vtabarglist COMMA vtabarg */
+ case 411: /* vtabarglist ::= vtabarglist COMMA vtabarg */
{
yymsp[-2].minor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
yygotominor.yy445 = yymsp[-2].minor.yy445;
@@ -4867,19 +4877,19 @@ static void yy_reduce(
DONT_INHERIT_TOKENS("vtabarglist");
}
break;
- case 412: /* vtabarg ::= vtabarg vtabargtoken */
+ case 413: /* vtabarg ::= vtabarg vtabargtoken */
{
yymsp[-1].minor.yy211->append(" "+ *(yymsp[0].minor.yy211));
yygotominor.yy211 = yymsp[-1].minor.yy211;
delete yymsp[0].minor.yy211;
}
break;
- case 413: /* vtabargtoken ::= ANY */
+ case 414: /* vtabargtoken ::= ANY */
{
yygotominor.yy211 = new QString(yymsp[0].minor.yy0->value);
}
break;
- case 414: /* vtabargtoken ::= LP anylist RP */
+ case 415: /* vtabargtoken ::= LP anylist RP */
{
yygotominor.yy211 = new QString("(");
yygotominor.yy211->append(*(yymsp[-1].minor.yy211));
@@ -4887,7 +4897,7 @@ static void yy_reduce(
delete yymsp[-1].minor.yy211;
}
break;
- case 416: /* anylist ::= anylist LP anylist RP */
+ case 417: /* anylist ::= anylist LP anylist RP */
{
yygotominor.yy211 = yymsp[-3].minor.yy211;
yygotominor.yy211->append("(");
@@ -4897,37 +4907,37 @@ static void yy_reduce(
DONT_INHERIT_TOKENS("anylist");
}
break;
- case 417: /* anylist ::= anylist ANY */
+ case 418: /* anylist ::= anylist ANY */
{
yygotominor.yy211 = yymsp[-1].minor.yy211;
yygotominor.yy211->append(yymsp[0].minor.yy0->value);
DONT_INHERIT_TOKENS("anylist");
}
break;
- case 418: /* with ::= */
+ case 419: /* with ::= */
{yygotominor.yy367 = nullptr;}
break;
- case 419: /* with ::= WITH wqlist */
+ case 420: /* with ::= WITH wqlist */
{
yygotominor.yy367 = yymsp[0].minor.yy367;
objectForTokens = yygotominor.yy367;
}
break;
- case 420: /* with ::= WITH RECURSIVE wqlist */
+ case 421: /* with ::= WITH RECURSIVE wqlist */
{
yygotominor.yy367 = yymsp[0].minor.yy367;
yygotominor.yy367->recursive = true;
objectForTokens = yygotominor.yy367;
}
break;
- case 421: /* wqlist ::= nm idxlist_opt AS LP select RP */
+ case 422: /* wqlist ::= nm idxlist_opt AS LP select RP */
{
yygotominor.yy367 = SqliteWith::append(*(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123);
delete yymsp[-5].minor.yy211;
delete yymsp[-4].minor.yy139;
}
break;
- case 422: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */
+ case 423: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */
{
yygotominor.yy367 = SqliteWith::append(yymsp[-7].minor.yy367, *(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123);
delete yymsp[-5].minor.yy211;
@@ -4935,7 +4945,7 @@ static void yy_reduce(
DONT_INHERIT_TOKENS("wqlist");
}
break;
- case 423: /* wqlist ::= ID_TAB_NEW */
+ case 424: /* wqlist ::= ID_TAB_NEW */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
yygotominor.yy367 = new SqliteWith();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
index a249f6e..65a4dd7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
@@ -1738,7 +1738,12 @@ exprx(X) ::= expr(E) not_opt(N) IN LP
objectForTokens = X;
parserContext->minorErrorBeforeNextToken("Syntax error");
}
-
+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] {}