From dde61cd4ad58c49df2e6cb64ab79fa38b95ec3a4 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Fri, 17 Jan 2025 22:02:44 -0600 Subject: [PATCH] added workaround for breaking change in sqlite build system for sqlite version 3.48.0 added tests for SQLITE_ENABLE_UPDATE_DELETE_LIMIT --- deps/download.sh | 2 +- deps/sqlite3/sqlite3.c | 755 +++++++++++++++++++++-------------------- test/50.misc.js | 24 ++ 3 files changed, 411 insertions(+), 370 deletions(-) diff --git a/deps/download.sh b/deps/download.sh index 31b3b47ac..f97d54b24 100755 --- a/deps/download.sh +++ b/deps/download.sh @@ -83,7 +83,7 @@ echo "configuring amalgamation..." sh configure > /dev/null || exit 1 echo "building amalgamation..." -make sqlite3.c > /dev/null || exit 1 +make OPTIONS="$CFLAGS" sqlite3.c > /dev/null || exit 1 echo "copying amalgamation..." cp sqlite3.c sqlite3.h sqlite3ext.h "$OUTPUT/" || exit 1 diff --git a/deps/sqlite3/sqlite3.c b/deps/sqlite3/sqlite3.c index 80433f6c1..18c0b3b7e 100644 --- a/deps/sqlite3/sqlite3.c +++ b/deps/sqlite3/sqlite3.c @@ -28,6 +28,7 @@ #ifndef SQLITE_PRIVATE # define SQLITE_PRIVATE static #endif +#define SQLITE_UDL_CAPABLE_PARSER 1 /************** Begin file sqliteInt.h ***************************************/ /* ** 2001 September 15 @@ -173903,7 +173904,9 @@ SQLITE_PRIVATE void sqlite3WindowCodeStep( /************** End of window.c **********************************************/ /************** Begin file parse.c *******************************************/ /* This file is automatically generated by Lemon from input grammar -** source file "parse.y". +** source file "parse.y" with these options: +** +** -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT */ /* ** 2001-09-15 @@ -174439,18 +174442,18 @@ typedef union { #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; #define YYFALLBACK 1 -#define YYNSTATE 583 +#define YYNSTATE 587 #define YYNRULE 409 #define YYNRULE_WITH_ACTION 344 #define YYNTOKEN 186 -#define YY_MAX_SHIFT 582 -#define YY_MIN_SHIFTREDUCE 845 -#define YY_MAX_SHIFTREDUCE 1253 -#define YY_ERROR_ACTION 1254 -#define YY_ACCEPT_ACTION 1255 -#define YY_NO_ACTION 1256 -#define YY_MIN_REDUCE 1257 -#define YY_MAX_REDUCE 1665 +#define YY_MAX_SHIFT 586 +#define YY_MIN_SHIFTREDUCE 849 +#define YY_MAX_SHIFTREDUCE 1257 +#define YY_ERROR_ACTION 1258 +#define YY_ACCEPT_ACTION 1259 +#define YY_NO_ACTION 1260 +#define YY_MIN_REDUCE 1261 +#define YY_MAX_REDUCE 1669 #define YY_MIN_DSTRCTR 205 #define YY_MAX_DSTRCTR 319 /************* End control #defines *******************************************/ @@ -174537,227 +174540,227 @@ typedef union { *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (2207) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 130, 127, 234, 282, 282, 1328, 576, 1307, 460, 289, - /* 10 */ 289, 576, 1622, 381, 576, 1328, 573, 576, 562, 413, - /* 20 */ 1300, 1542, 573, 481, 562, 524, 460, 459, 558, 82, - /* 30 */ 82, 983, 294, 375, 51, 51, 498, 61, 61, 984, - /* 40 */ 82, 82, 1577, 137, 138, 91, 7, 1228, 1228, 1063, - /* 50 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 413, - /* 60 */ 288, 288, 182, 288, 288, 481, 536, 288, 288, 130, - /* 70 */ 127, 234, 432, 573, 525, 562, 573, 557, 562, 1290, - /* 80 */ 573, 421, 562, 137, 138, 91, 559, 1228, 1228, 1063, - /* 90 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 296, - /* 100 */ 460, 398, 1249, 134, 134, 134, 134, 133, 133, 132, - /* 110 */ 132, 132, 131, 128, 451, 44, 1050, 1050, 1064, 1067, - /* 120 */ 1255, 1, 1, 582, 2, 1259, 581, 1174, 1259, 1174, - /* 130 */ 321, 413, 155, 321, 1584, 155, 379, 112, 498, 1341, - /* 140 */ 456, 299, 1341, 134, 134, 134, 134, 133, 133, 132, - /* 150 */ 132, 132, 131, 128, 451, 137, 138, 91, 1105, 1228, - /* 160 */ 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, - /* 170 */ 136, 1204, 320, 567, 288, 288, 283, 288, 288, 523, - /* 180 */ 523, 1250, 139, 1541, 7, 214, 503, 573, 1169, 562, - /* 190 */ 573, 1054, 562, 136, 136, 136, 136, 129, 401, 547, - /* 200 */ 487, 1169, 245, 1568, 1169, 245, 133, 133, 132, 132, - /* 210 */ 132, 131, 128, 451, 261, 134, 134, 134, 134, 133, - /* 220 */ 133, 132, 132, 132, 131, 128, 451, 451, 1204, 1205, - /* 230 */ 1204, 130, 127, 234, 455, 413, 182, 455, 130, 127, + /* 0 */ 130, 127, 234, 282, 282, 1332, 580, 1311, 464, 289, + /* 10 */ 289, 580, 1626, 385, 580, 1332, 577, 580, 566, 417, + /* 20 */ 1304, 1546, 577, 485, 566, 528, 464, 463, 562, 82, + /* 30 */ 82, 987, 294, 379, 51, 51, 502, 61, 61, 988, + /* 40 */ 82, 82, 1581, 137, 138, 91, 7, 1232, 1232, 1067, + /* 50 */ 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, 417, + /* 60 */ 288, 288, 182, 288, 288, 485, 540, 288, 288, 130, + /* 70 */ 127, 234, 436, 577, 529, 566, 577, 561, 566, 1294, + /* 80 */ 577, 425, 566, 137, 138, 91, 563, 1232, 1232, 1067, + /* 90 */ 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, 296, + /* 100 */ 464, 402, 1253, 134, 134, 134, 134, 133, 133, 132, + /* 110 */ 132, 132, 131, 128, 455, 44, 1054, 1054, 1068, 1071, + /* 120 */ 1259, 1, 1, 586, 2, 1263, 585, 1178, 1263, 1178, + /* 130 */ 321, 417, 155, 321, 1588, 155, 383, 112, 502, 1345, + /* 140 */ 460, 299, 1345, 134, 134, 134, 134, 133, 133, 132, + /* 150 */ 132, 132, 131, 128, 455, 137, 138, 91, 1109, 1232, + /* 160 */ 1232, 1067, 1070, 1057, 1057, 135, 135, 136, 136, 136, + /* 170 */ 136, 1208, 320, 571, 288, 288, 283, 288, 288, 527, + /* 180 */ 527, 1254, 139, 1545, 7, 214, 507, 577, 1173, 566, + /* 190 */ 577, 1058, 566, 136, 136, 136, 136, 129, 405, 551, + /* 200 */ 491, 1173, 245, 1572, 1173, 245, 133, 133, 132, 132, + /* 210 */ 132, 131, 128, 455, 261, 134, 134, 134, 134, 133, + /* 220 */ 133, 132, 132, 132, 131, 128, 455, 455, 1208, 1209, + /* 230 */ 1208, 130, 127, 234, 459, 417, 182, 459, 130, 127, /* 240 */ 234, 134, 134, 134, 134, 133, 133, 132, 132, 132, - /* 250 */ 131, 128, 451, 136, 136, 136, 136, 538, 576, 137, - /* 260 */ 138, 91, 261, 1228, 1228, 1063, 1066, 1053, 1053, 135, - /* 270 */ 135, 136, 136, 136, 136, 44, 472, 346, 1204, 472, - /* 280 */ 346, 51, 51, 418, 93, 157, 134, 134, 134, 134, - /* 290 */ 133, 133, 132, 132, 132, 131, 128, 451, 166, 363, + /* 250 */ 131, 128, 455, 136, 136, 136, 136, 542, 580, 137, + /* 260 */ 138, 91, 261, 1232, 1232, 1067, 1070, 1057, 1057, 135, + /* 270 */ 135, 136, 136, 136, 136, 44, 476, 350, 1208, 476, + /* 280 */ 350, 51, 51, 422, 93, 157, 134, 134, 134, 134, + /* 290 */ 133, 133, 132, 132, 132, 131, 128, 455, 166, 367, /* 300 */ 298, 134, 134, 134, 134, 133, 133, 132, 132, 132, - /* 310 */ 131, 128, 451, 1293, 461, 1570, 423, 377, 275, 134, + /* 310 */ 131, 128, 455, 1297, 465, 1574, 427, 381, 275, 134, /* 320 */ 134, 134, 134, 133, 133, 132, 132, 132, 131, 128, - /* 330 */ 451, 418, 320, 567, 1292, 1204, 1205, 1204, 257, 413, - /* 340 */ 483, 511, 508, 507, 94, 132, 132, 132, 131, 128, - /* 350 */ 451, 506, 1204, 548, 548, 388, 576, 384, 7, 413, - /* 360 */ 550, 229, 522, 137, 138, 91, 530, 1228, 1228, 1063, - /* 370 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 51, - /* 380 */ 51, 1582, 380, 137, 138, 91, 331, 1228, 1228, 1063, - /* 390 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 320, - /* 400 */ 567, 288, 288, 320, 567, 1602, 582, 2, 1259, 1204, - /* 410 */ 1205, 1204, 1628, 321, 573, 155, 562, 576, 1511, 264, - /* 420 */ 231, 520, 1341, 134, 134, 134, 134, 133, 133, 132, - /* 430 */ 132, 132, 131, 128, 451, 519, 1511, 1513, 1333, 1333, - /* 440 */ 82, 82, 498, 134, 134, 134, 134, 133, 133, 132, - /* 450 */ 132, 132, 131, 128, 451, 1435, 257, 288, 288, 511, - /* 460 */ 508, 507, 944, 1568, 413, 1019, 1204, 943, 360, 506, - /* 470 */ 573, 1598, 562, 44, 575, 551, 551, 557, 1107, 1582, - /* 480 */ 544, 576, 1107, 40, 417, 245, 531, 1505, 137, 138, - /* 490 */ 91, 219, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, - /* 500 */ 136, 136, 136, 136, 81, 81, 1281, 1204, 413, 553, - /* 510 */ 1511, 48, 512, 448, 447, 493, 578, 455, 578, 344, - /* 520 */ 45, 1204, 1233, 1204, 1205, 1204, 428, 1235, 158, 882, - /* 530 */ 320, 567, 137, 138, 91, 1234, 1228, 1228, 1063, 1066, - /* 540 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 134, 134, - /* 550 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451, - /* 560 */ 1236, 576, 1236, 329, 1204, 1205, 1204, 387, 492, 403, - /* 570 */ 1040, 382, 489, 123, 568, 1569, 4, 377, 1204, 1205, - /* 580 */ 1204, 570, 570, 570, 82, 82, 882, 1029, 1331, 1331, - /* 590 */ 571, 1028, 134, 134, 134, 134, 133, 133, 132, 132, - /* 600 */ 132, 131, 128, 451, 288, 288, 1281, 1204, 576, 423, - /* 610 */ 576, 1568, 413, 423, 452, 378, 886, 573, 1279, 562, - /* 620 */ 46, 557, 532, 1028, 1028, 1030, 565, 130, 127, 234, - /* 630 */ 556, 82, 82, 82, 82, 479, 137, 138, 91, 462, - /* 640 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, - /* 650 */ 136, 136, 1188, 487, 1506, 1040, 413, 6, 1204, 50, - /* 660 */ 879, 121, 121, 948, 1204, 1205, 1204, 358, 557, 122, - /* 670 */ 316, 452, 577, 452, 535, 1204, 1028, 439, 303, 212, - /* 680 */ 137, 138, 91, 213, 1228, 1228, 1063, 1066, 1053, 1053, + /* 330 */ 455, 422, 320, 571, 1296, 1208, 1209, 1208, 257, 417, + /* 340 */ 487, 515, 512, 511, 94, 132, 132, 132, 131, 128, + /* 350 */ 455, 510, 1208, 552, 552, 392, 580, 388, 7, 417, + /* 360 */ 554, 229, 526, 137, 138, 91, 534, 1232, 1232, 1067, + /* 370 */ 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, 51, + /* 380 */ 51, 1586, 384, 137, 138, 91, 331, 1232, 1232, 1067, + /* 390 */ 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, 320, + /* 400 */ 571, 288, 288, 320, 571, 1606, 586, 2, 1263, 1208, + /* 410 */ 1209, 1208, 1632, 321, 577, 155, 566, 580, 1515, 264, + /* 420 */ 231, 524, 1345, 134, 134, 134, 134, 133, 133, 132, + /* 430 */ 132, 132, 131, 128, 455, 523, 1515, 1517, 1337, 1337, + /* 440 */ 82, 82, 502, 134, 134, 134, 134, 133, 133, 132, + /* 450 */ 132, 132, 131, 128, 455, 1439, 257, 288, 288, 515, + /* 460 */ 512, 511, 948, 1572, 417, 1023, 1208, 947, 364, 510, + /* 470 */ 577, 1602, 566, 44, 579, 555, 555, 561, 1111, 1586, + /* 480 */ 548, 580, 1111, 40, 421, 245, 535, 1509, 137, 138, + /* 490 */ 91, 219, 1232, 1232, 1067, 1070, 1057, 1057, 135, 135, + /* 500 */ 136, 136, 136, 136, 81, 81, 1285, 1208, 417, 557, + /* 510 */ 1515, 48, 516, 452, 451, 497, 582, 459, 582, 348, + /* 520 */ 45, 1208, 1237, 1208, 1209, 1208, 432, 1239, 158, 886, + /* 530 */ 320, 571, 137, 138, 91, 1238, 1232, 1232, 1067, 1070, + /* 540 */ 1057, 1057, 135, 135, 136, 136, 136, 136, 134, 134, + /* 550 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 455, + /* 560 */ 1240, 580, 1240, 329, 1208, 1209, 1208, 391, 496, 407, + /* 570 */ 1044, 386, 493, 123, 572, 1573, 4, 381, 1208, 1209, + /* 580 */ 1208, 574, 574, 574, 82, 82, 886, 1033, 1335, 1335, + /* 590 */ 575, 1032, 134, 134, 134, 134, 133, 133, 132, 132, + /* 600 */ 132, 131, 128, 455, 288, 288, 1285, 1208, 580, 427, + /* 610 */ 580, 1572, 417, 427, 456, 382, 890, 577, 1283, 566, + /* 620 */ 46, 561, 536, 1032, 1032, 1034, 569, 130, 127, 234, + /* 630 */ 560, 82, 82, 82, 82, 483, 137, 138, 91, 466, + /* 640 */ 1232, 1232, 1067, 1070, 1057, 1057, 135, 135, 136, 136, + /* 650 */ 136, 136, 1192, 491, 1510, 1044, 417, 6, 1208, 50, + /* 660 */ 883, 121, 121, 952, 1208, 1209, 1208, 362, 561, 122, + /* 670 */ 316, 456, 581, 456, 539, 1208, 1032, 443, 303, 212, + /* 680 */ 137, 138, 91, 213, 1232, 1232, 1067, 1070, 1057, 1057, /* 690 */ 135, 135, 136, 136, 136, 136, 134, 134, 134, 134, - /* 700 */ 133, 133, 132, 132, 132, 131, 128, 451, 1028, 1028, - /* 710 */ 1030, 1031, 35, 288, 288, 1204, 1205, 1204, 1040, 1339, - /* 720 */ 533, 123, 568, 1569, 4, 377, 573, 1019, 562, 353, - /* 730 */ 1277, 356, 1204, 1205, 1204, 1029, 488, 1188, 571, 1028, + /* 700 */ 133, 133, 132, 132, 132, 131, 128, 455, 1032, 1032, + /* 710 */ 1034, 1035, 35, 288, 288, 1208, 1209, 1208, 1044, 1343, + /* 720 */ 537, 123, 572, 1573, 4, 381, 577, 1023, 566, 357, + /* 730 */ 1281, 360, 1208, 1209, 1208, 1033, 492, 1192, 575, 1032, /* 740 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131, - /* 750 */ 128, 451, 576, 343, 288, 288, 449, 449, 449, 971, - /* 760 */ 413, 1627, 452, 911, 1187, 288, 288, 573, 464, 562, - /* 770 */ 238, 1028, 1028, 1030, 565, 82, 82, 498, 573, 411, - /* 780 */ 562, 344, 467, 332, 137, 138, 91, 197, 1228, 1228, - /* 790 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, - /* 800 */ 1188, 528, 1169, 1040, 413, 1110, 1110, 495, 1041, 121, - /* 810 */ 121, 1204, 317, 540, 862, 1169, 1244, 122, 1169, 452, - /* 820 */ 577, 452, 1340, 198, 1028, 1204, 481, 526, 137, 138, - /* 830 */ 91, 560, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, + /* 750 */ 128, 455, 580, 347, 288, 288, 453, 453, 453, 975, + /* 760 */ 417, 1631, 456, 915, 1191, 288, 288, 577, 468, 566, + /* 770 */ 238, 1032, 1032, 1034, 569, 82, 82, 502, 577, 415, + /* 780 */ 566, 348, 471, 334, 137, 138, 91, 197, 1232, 1232, + /* 790 */ 1067, 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, + /* 800 */ 1192, 532, 1173, 1044, 417, 1114, 1114, 499, 1045, 121, + /* 810 */ 121, 1208, 317, 544, 866, 1173, 1248, 122, 1173, 456, + /* 820 */ 581, 456, 1344, 198, 1032, 1208, 485, 530, 137, 138, + /* 830 */ 91, 564, 1232, 1232, 1067, 1070, 1057, 1057, 135, 135, /* 840 */ 136, 136, 136, 136, 134, 134, 134, 134, 133, 133, - /* 850 */ 132, 132, 132, 131, 128, 451, 1028, 1028, 1030, 1031, - /* 860 */ 35, 1204, 288, 288, 1204, 477, 288, 288, 1204, 1205, - /* 870 */ 1204, 539, 481, 437, 470, 573, 1451, 562, 364, 573, - /* 880 */ 1153, 562, 1204, 1205, 1204, 1188, 5, 576, 134, 134, - /* 890 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451, - /* 900 */ 221, 214, 302, 96, 1149, 1657, 232, 1657, 413, 392, - /* 910 */ 19, 19, 1024, 949, 406, 373, 1595, 1085, 1204, 1205, - /* 920 */ 1204, 1204, 1205, 1204, 1204, 426, 1149, 1658, 413, 1658, - /* 930 */ 1659, 399, 137, 138, 91, 3, 1228, 1228, 1063, 1066, - /* 940 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 304, 1311, - /* 950 */ 514, 1204, 137, 138, 91, 1498, 1228, 1228, 1063, 1066, - /* 960 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 434, 131, - /* 970 */ 128, 451, 375, 1204, 274, 291, 372, 517, 367, 516, - /* 980 */ 262, 1204, 1205, 1204, 1147, 227, 363, 448, 447, 1435, - /* 990 */ 1568, 1310, 134, 134, 134, 134, 133, 133, 132, 132, - /* 1000 */ 132, 131, 128, 451, 1568, 576, 1147, 487, 1204, 1205, - /* 1010 */ 1204, 442, 134, 134, 134, 134, 133, 133, 132, 132, - /* 1020 */ 132, 131, 128, 451, 386, 576, 485, 576, 19, 19, - /* 1030 */ 1204, 1205, 1204, 1345, 1236, 970, 1236, 574, 47, 936, - /* 1040 */ 936, 473, 413, 431, 1552, 573, 1125, 562, 19, 19, - /* 1050 */ 19, 19, 49, 336, 850, 851, 852, 111, 1368, 315, - /* 1060 */ 429, 576, 413, 433, 341, 306, 137, 138, 91, 115, - /* 1070 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, - /* 1080 */ 136, 136, 576, 1309, 82, 82, 137, 138, 91, 529, - /* 1090 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, - /* 1100 */ 136, 136, 1569, 222, 377, 19, 19, 305, 1126, 1169, - /* 1110 */ 398, 1148, 22, 22, 498, 333, 1569, 335, 377, 576, - /* 1120 */ 438, 445, 1169, 1127, 486, 1169, 134, 134, 134, 134, - /* 1130 */ 133, 133, 132, 132, 132, 131, 128, 451, 1128, 576, - /* 1140 */ 902, 576, 145, 145, 6, 576, 134, 134, 134, 134, - /* 1150 */ 133, 133, 132, 132, 132, 131, 128, 451, 214, 1336, - /* 1160 */ 922, 576, 19, 19, 19, 19, 1282, 419, 19, 19, - /* 1170 */ 923, 412, 515, 141, 576, 1169, 413, 206, 465, 207, - /* 1180 */ 903, 215, 1575, 552, 147, 147, 7, 227, 1169, 411, - /* 1190 */ 1250, 1169, 120, 307, 117, 307, 413, 66, 66, 334, - /* 1200 */ 137, 138, 91, 119, 1228, 1228, 1063, 1066, 1053, 1053, - /* 1210 */ 135, 135, 136, 136, 136, 136, 413, 285, 209, 969, - /* 1220 */ 137, 138, 91, 471, 1228, 1228, 1063, 1066, 1053, 1053, - /* 1230 */ 135, 135, 136, 136, 136, 136, 435, 10, 1450, 267, - /* 1240 */ 137, 126, 91, 1435, 1228, 1228, 1063, 1066, 1053, 1053, - /* 1250 */ 135, 135, 136, 136, 136, 136, 1435, 1435, 410, 409, + /* 850 */ 132, 132, 132, 131, 128, 455, 1032, 1032, 1034, 1035, + /* 860 */ 35, 1208, 288, 288, 1208, 481, 288, 288, 1208, 1209, + /* 870 */ 1208, 543, 485, 441, 474, 577, 1455, 566, 368, 577, + /* 880 */ 1157, 566, 1208, 1209, 1208, 1192, 5, 580, 134, 134, + /* 890 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 455, + /* 900 */ 221, 214, 302, 96, 1153, 1661, 232, 1661, 417, 396, + /* 910 */ 19, 19, 1028, 953, 410, 377, 1599, 1089, 1208, 1209, + /* 920 */ 1208, 1208, 1209, 1208, 1208, 430, 1153, 1662, 417, 1662, + /* 930 */ 1663, 403, 137, 138, 91, 3, 1232, 1232, 1067, 1070, + /* 940 */ 1057, 1057, 135, 135, 136, 136, 136, 136, 304, 1315, + /* 950 */ 518, 1208, 137, 138, 91, 1502, 1232, 1232, 1067, 1070, + /* 960 */ 1057, 1057, 135, 135, 136, 136, 136, 136, 438, 131, + /* 970 */ 128, 455, 379, 1208, 274, 291, 376, 521, 371, 520, + /* 980 */ 262, 1208, 1209, 1208, 1151, 227, 367, 452, 451, 1439, + /* 990 */ 1572, 1314, 134, 134, 134, 134, 133, 133, 132, 132, + /* 1000 */ 132, 131, 128, 455, 1572, 580, 1151, 491, 1208, 1209, + /* 1010 */ 1208, 446, 134, 134, 134, 134, 133, 133, 132, 132, + /* 1020 */ 132, 131, 128, 455, 390, 580, 489, 580, 19, 19, + /* 1030 */ 1208, 1209, 1208, 1349, 1240, 974, 1240, 578, 47, 940, + /* 1040 */ 940, 477, 417, 435, 1556, 577, 1129, 566, 19, 19, + /* 1050 */ 19, 19, 49, 340, 854, 855, 856, 111, 1372, 315, + /* 1060 */ 433, 580, 417, 437, 345, 306, 137, 138, 91, 115, + /* 1070 */ 1232, 1232, 1067, 1070, 1057, 1057, 135, 135, 136, 136, + /* 1080 */ 136, 136, 580, 1313, 82, 82, 137, 138, 91, 533, + /* 1090 */ 1232, 1232, 1067, 1070, 1057, 1057, 135, 135, 136, 136, + /* 1100 */ 136, 136, 1573, 222, 381, 19, 19, 305, 1130, 1173, + /* 1110 */ 402, 1152, 22, 22, 502, 337, 1573, 339, 381, 580, + /* 1120 */ 442, 449, 1173, 1131, 490, 1173, 134, 134, 134, 134, + /* 1130 */ 133, 133, 132, 132, 132, 131, 128, 455, 1132, 580, + /* 1140 */ 906, 580, 145, 145, 6, 580, 134, 134, 134, 134, + /* 1150 */ 133, 133, 132, 132, 132, 131, 128, 455, 214, 1340, + /* 1160 */ 926, 580, 19, 19, 19, 19, 1286, 423, 19, 19, + /* 1170 */ 927, 416, 519, 141, 580, 1173, 417, 206, 469, 207, + /* 1180 */ 907, 215, 1579, 556, 147, 147, 7, 227, 1173, 415, + /* 1190 */ 1254, 1173, 120, 307, 117, 307, 417, 66, 66, 338, + /* 1200 */ 137, 138, 91, 119, 1232, 1232, 1067, 1070, 1057, 1057, + /* 1210 */ 135, 135, 136, 136, 136, 136, 417, 285, 209, 973, + /* 1220 */ 137, 138, 91, 475, 1232, 1232, 1067, 1070, 1057, 1057, + /* 1230 */ 135, 135, 136, 136, 136, 136, 439, 10, 1454, 267, + /* 1240 */ 137, 126, 91, 1439, 1232, 1232, 1067, 1070, 1057, 1057, + /* 1250 */ 135, 135, 136, 136, 136, 136, 1439, 1439, 414, 413, /* 1260 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131, - /* 1270 */ 128, 451, 576, 969, 576, 1224, 498, 373, 1595, 1554, + /* 1270 */ 128, 455, 580, 973, 580, 1228, 502, 377, 1599, 1558, /* 1280 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131, - /* 1290 */ 128, 451, 532, 457, 576, 82, 82, 82, 82, 111, + /* 1290 */ 128, 455, 536, 461, 580, 82, 82, 82, 82, 111, /* 1300 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131, - /* 1310 */ 128, 451, 109, 233, 430, 1576, 546, 67, 67, 7, - /* 1320 */ 413, 351, 550, 1550, 260, 259, 258, 494, 443, 569, - /* 1330 */ 419, 983, 446, 1224, 450, 545, 1207, 576, 969, 984, - /* 1340 */ 413, 475, 1449, 1574, 1180, 138, 91, 7, 1228, 1228, - /* 1350 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, - /* 1360 */ 21, 21, 267, 576, 300, 1126, 91, 233, 1228, 1228, - /* 1370 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, - /* 1380 */ 1127, 373, 1595, 161, 1573, 16, 53, 53, 7, 108, - /* 1390 */ 533, 38, 969, 125, 1207, 1128, 1180, 576, 1224, 123, - /* 1400 */ 568, 893, 4, 324, 134, 134, 134, 134, 133, 133, - /* 1410 */ 132, 132, 132, 131, 128, 451, 571, 564, 534, 576, - /* 1420 */ 68, 68, 576, 39, 134, 134, 134, 134, 133, 133, - /* 1430 */ 132, 132, 132, 131, 128, 451, 576, 160, 1571, 1223, - /* 1440 */ 452, 576, 54, 54, 576, 69, 69, 576, 1366, 576, - /* 1450 */ 420, 184, 565, 463, 297, 576, 1224, 463, 297, 70, - /* 1460 */ 70, 576, 44, 474, 71, 71, 576, 72, 72, 576, - /* 1470 */ 73, 73, 55, 55, 411, 874, 242, 576, 56, 56, - /* 1480 */ 576, 1040, 576, 478, 57, 57, 576, 121, 121, 59, - /* 1490 */ 59, 23, 60, 60, 411, 122, 319, 452, 577, 452, - /* 1500 */ 74, 74, 1028, 75, 75, 76, 76, 411, 290, 20, - /* 1510 */ 20, 108, 287, 231, 553, 123, 568, 325, 4, 320, - /* 1520 */ 567, 97, 218, 944, 1144, 328, 400, 576, 943, 576, - /* 1530 */ 1380, 424, 571, 874, 1028, 1028, 1030, 1031, 35, 293, - /* 1540 */ 534, 576, 1104, 576, 1104, 9, 576, 342, 576, 111, - /* 1550 */ 77, 77, 143, 143, 576, 205, 452, 222, 1379, 889, - /* 1560 */ 576, 901, 900, 1188, 144, 144, 78, 78, 565, 62, - /* 1570 */ 62, 79, 79, 323, 1021, 576, 266, 63, 63, 908, - /* 1580 */ 909, 1589, 542, 80, 80, 576, 371, 541, 123, 568, - /* 1590 */ 480, 4, 266, 482, 244, 266, 370, 1040, 64, 64, - /* 1600 */ 576, 466, 576, 121, 121, 571, 1557, 576, 170, 170, - /* 1610 */ 576, 122, 576, 452, 577, 452, 576, 889, 1028, 576, - /* 1620 */ 165, 576, 111, 171, 171, 87, 87, 337, 1616, 452, - /* 1630 */ 65, 65, 1530, 83, 83, 146, 146, 986, 987, 84, - /* 1640 */ 84, 565, 168, 168, 148, 148, 1092, 347, 1032, 111, - /* 1650 */ 1028, 1028, 1030, 1031, 35, 542, 1103, 576, 1103, 576, - /* 1660 */ 543, 123, 568, 504, 4, 263, 576, 361, 1529, 111, - /* 1670 */ 1040, 1088, 576, 263, 576, 490, 121, 121, 571, 1188, - /* 1680 */ 142, 142, 169, 169, 122, 576, 452, 577, 452, 162, - /* 1690 */ 162, 1028, 576, 563, 576, 152, 152, 151, 151, 348, - /* 1700 */ 1376, 974, 452, 266, 1092, 942, 1032, 125, 149, 149, - /* 1710 */ 939, 576, 125, 576, 565, 150, 150, 86, 86, 872, - /* 1720 */ 352, 159, 576, 1028, 1028, 1030, 1031, 35, 542, 941, - /* 1730 */ 576, 125, 355, 541, 88, 88, 85, 85, 357, 359, - /* 1740 */ 1324, 1308, 366, 1040, 376, 52, 52, 499, 1389, 121, - /* 1750 */ 121, 1434, 1188, 58, 58, 1362, 1374, 122, 1439, 452, - /* 1760 */ 577, 452, 1289, 167, 1028, 1280, 280, 1268, 1267, 1269, - /* 1770 */ 1609, 1359, 312, 313, 12, 314, 397, 1421, 224, 1416, - /* 1780 */ 295, 237, 1409, 339, 340, 1426, 301, 345, 484, 228, - /* 1790 */ 1371, 1307, 1372, 1370, 1425, 404, 1028, 1028, 1030, 1031, - /* 1800 */ 35, 1601, 1192, 454, 509, 369, 292, 1502, 210, 1501, - /* 1810 */ 1369, 396, 396, 395, 277, 393, 211, 566, 859, 1612, - /* 1820 */ 1244, 123, 568, 391, 4, 1188, 223, 270, 1549, 1547, - /* 1830 */ 1241, 239, 186, 327, 422, 96, 195, 220, 571, 235, - /* 1840 */ 180, 326, 188, 468, 190, 1507, 191, 192, 92, 193, - /* 1850 */ 469, 95, 1422, 13, 502, 247, 1430, 109, 199, 402, - /* 1860 */ 476, 405, 452, 1496, 1428, 1427, 14, 491, 251, 102, - /* 1870 */ 497, 1518, 241, 281, 565, 253, 203, 354, 500, 254, - /* 1880 */ 175, 1270, 407, 43, 350, 518, 1327, 436, 255, 1326, - /* 1890 */ 1325, 1318, 104, 893, 1626, 229, 408, 440, 1625, 441, - /* 1900 */ 240, 310, 1296, 1040, 311, 1317, 527, 1594, 1297, 121, - /* 1910 */ 121, 368, 1295, 1624, 268, 269, 1580, 122, 1579, 452, - /* 1920 */ 577, 452, 374, 444, 1028, 1394, 1393, 140, 553, 90, - /* 1930 */ 568, 11, 4, 1483, 383, 414, 385, 110, 116, 216, - /* 1940 */ 320, 567, 1350, 555, 42, 318, 571, 537, 1349, 389, - /* 1950 */ 390, 579, 1198, 276, 279, 278, 1028, 1028, 1030, 1031, - /* 1960 */ 35, 580, 415, 1265, 458, 1260, 416, 185, 1534, 172, - /* 1970 */ 452, 1535, 173, 156, 308, 846, 1533, 1532, 453, 217, - /* 1980 */ 225, 89, 565, 174, 322, 1188, 226, 236, 1102, 154, - /* 1990 */ 1100, 330, 176, 187, 1223, 189, 925, 338, 243, 1116, - /* 2000 */ 246, 194, 177, 178, 425, 427, 98, 99, 196, 100, - /* 2010 */ 101, 1040, 179, 1119, 248, 1115, 249, 121, 121, 24, - /* 2020 */ 163, 250, 349, 1108, 266, 122, 1238, 452, 577, 452, - /* 2030 */ 1192, 454, 1028, 200, 292, 496, 252, 201, 861, 396, - /* 2040 */ 396, 395, 277, 393, 15, 501, 859, 370, 292, 256, - /* 2050 */ 202, 554, 505, 396, 396, 395, 277, 393, 103, 239, - /* 2060 */ 859, 327, 25, 26, 1028, 1028, 1030, 1031, 35, 326, - /* 2070 */ 362, 510, 891, 239, 365, 327, 513, 904, 105, 309, - /* 2080 */ 164, 181, 27, 326, 106, 521, 107, 1185, 1069, 1155, - /* 2090 */ 17, 1154, 284, 1188, 286, 978, 265, 204, 125, 1171, - /* 2100 */ 241, 230, 972, 1175, 28, 1160, 29, 1179, 175, 1173, - /* 2110 */ 30, 43, 31, 1178, 241, 32, 41, 549, 8, 33, - /* 2120 */ 208, 111, 175, 1083, 1070, 43, 113, 1068, 240, 114, - /* 2130 */ 1072, 34, 1073, 561, 1124, 118, 271, 36, 18, 1194, - /* 2140 */ 1033, 873, 240, 935, 124, 37, 272, 273, 1617, 572, - /* 2150 */ 183, 153, 394, 1193, 1256, 1256, 1256, 1256, 1256, 1256, - /* 2160 */ 1256, 1256, 1256, 414, 1256, 1256, 1256, 1256, 320, 567, - /* 2170 */ 1256, 1256, 1256, 1256, 1256, 1256, 1256, 414, 1256, 1256, - /* 2180 */ 1256, 1256, 320, 567, 1256, 1256, 1256, 1256, 1256, 1256, - /* 2190 */ 1256, 1256, 458, 1256, 1256, 1256, 1256, 1256, 1256, 1256, - /* 2200 */ 1256, 1256, 1256, 1256, 1256, 1256, 458, + /* 1310 */ 128, 455, 109, 233, 434, 1580, 550, 67, 67, 7, + /* 1320 */ 417, 355, 554, 1554, 260, 259, 258, 498, 447, 573, + /* 1330 */ 423, 987, 450, 1228, 454, 549, 1211, 580, 973, 988, + /* 1340 */ 417, 479, 1453, 1578, 1184, 138, 91, 7, 1232, 1232, + /* 1350 */ 1067, 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, + /* 1360 */ 21, 21, 267, 580, 300, 1130, 91, 233, 1232, 1232, + /* 1370 */ 1067, 1070, 1057, 1057, 135, 135, 136, 136, 136, 136, + /* 1380 */ 1131, 377, 1599, 161, 1577, 16, 53, 53, 7, 108, + /* 1390 */ 537, 38, 973, 125, 1211, 1132, 1184, 580, 1228, 123, + /* 1400 */ 572, 897, 4, 324, 134, 134, 134, 134, 133, 133, + /* 1410 */ 132, 132, 132, 131, 128, 455, 575, 568, 538, 580, + /* 1420 */ 68, 68, 580, 39, 134, 134, 134, 134, 133, 133, + /* 1430 */ 132, 132, 132, 131, 128, 455, 580, 160, 1575, 1227, + /* 1440 */ 456, 580, 54, 54, 580, 69, 69, 580, 1370, 580, + /* 1450 */ 424, 184, 569, 467, 297, 580, 1228, 467, 297, 70, + /* 1460 */ 70, 580, 44, 478, 71, 71, 580, 72, 72, 580, + /* 1470 */ 73, 73, 55, 55, 415, 878, 242, 580, 56, 56, + /* 1480 */ 580, 1044, 580, 482, 57, 57, 580, 121, 121, 59, + /* 1490 */ 59, 23, 60, 60, 415, 122, 319, 456, 581, 456, + /* 1500 */ 74, 74, 1032, 75, 75, 76, 76, 415, 290, 20, + /* 1510 */ 20, 108, 287, 231, 557, 123, 572, 325, 4, 320, + /* 1520 */ 571, 97, 218, 948, 1148, 328, 404, 580, 947, 580, + /* 1530 */ 1384, 428, 575, 878, 1032, 1032, 1034, 1035, 35, 293, + /* 1540 */ 538, 580, 1108, 580, 1108, 9, 580, 346, 580, 111, + /* 1550 */ 77, 77, 143, 143, 580, 205, 456, 222, 1383, 893, + /* 1560 */ 580, 905, 904, 1192, 144, 144, 78, 78, 569, 62, + /* 1570 */ 62, 79, 79, 323, 1025, 580, 266, 63, 63, 912, + /* 1580 */ 913, 1593, 546, 80, 80, 580, 375, 545, 123, 572, + /* 1590 */ 484, 4, 266, 486, 244, 266, 374, 1044, 64, 64, + /* 1600 */ 580, 470, 580, 121, 121, 575, 1561, 580, 170, 170, + /* 1610 */ 580, 122, 580, 456, 581, 456, 580, 893, 1032, 580, + /* 1620 */ 165, 580, 111, 171, 171, 87, 87, 341, 1620, 456, + /* 1630 */ 65, 65, 1534, 83, 83, 146, 146, 990, 991, 84, + /* 1640 */ 84, 569, 168, 168, 148, 148, 1096, 351, 1036, 111, + /* 1650 */ 1032, 1032, 1034, 1035, 35, 546, 1107, 580, 1107, 580, + /* 1660 */ 547, 123, 572, 508, 4, 263, 580, 365, 1533, 111, + /* 1670 */ 1044, 1092, 580, 263, 580, 494, 121, 121, 575, 1192, + /* 1680 */ 142, 142, 169, 169, 122, 580, 456, 581, 456, 162, + /* 1690 */ 162, 1032, 580, 567, 580, 152, 152, 151, 151, 352, + /* 1700 */ 1380, 978, 456, 266, 1096, 946, 1036, 125, 149, 149, + /* 1710 */ 943, 580, 125, 580, 569, 150, 150, 86, 86, 876, + /* 1720 */ 356, 159, 580, 1032, 1032, 1034, 1035, 35, 546, 945, + /* 1730 */ 580, 125, 359, 545, 88, 88, 85, 85, 361, 363, + /* 1740 */ 1328, 1312, 370, 1044, 380, 52, 52, 503, 1393, 121, + /* 1750 */ 121, 1438, 1192, 58, 58, 1366, 1378, 122, 1443, 456, + /* 1760 */ 581, 456, 1293, 167, 1032, 1284, 280, 1272, 1271, 1273, + /* 1770 */ 1613, 1363, 312, 313, 12, 314, 401, 1425, 224, 333, + /* 1780 */ 295, 237, 336, 343, 344, 1430, 301, 349, 488, 228, + /* 1790 */ 1375, 1311, 1376, 1374, 1429, 408, 1032, 1032, 1034, 1035, + /* 1800 */ 35, 1605, 1196, 458, 513, 373, 292, 1506, 210, 1505, + /* 1810 */ 1373, 400, 400, 399, 277, 397, 211, 570, 863, 1616, + /* 1820 */ 1248, 123, 572, 395, 4, 1192, 223, 270, 1553, 1551, + /* 1830 */ 1245, 239, 186, 327, 426, 96, 195, 220, 575, 235, + /* 1840 */ 140, 326, 1420, 557, 332, 1511, 180, 188, 92, 1413, + /* 1850 */ 335, 95, 1426, 13, 472, 190, 191, 192, 193, 473, + /* 1860 */ 506, 247, 456, 109, 1432, 14, 1431, 1434, 406, 199, + /* 1870 */ 480, 495, 241, 409, 569, 251, 1500, 102, 501, 253, + /* 1880 */ 175, 281, 203, 43, 504, 358, 411, 1522, 254, 255, + /* 1890 */ 354, 1274, 522, 1331, 440, 1330, 1329, 1322, 104, 897, + /* 1900 */ 240, 1321, 229, 1044, 444, 445, 1630, 448, 531, 121, + /* 1910 */ 121, 1598, 268, 1301, 412, 310, 1300, 122, 1629, 456, + /* 1920 */ 581, 456, 372, 1299, 1032, 311, 1628, 378, 1584, 90, + /* 1930 */ 572, 269, 4, 1583, 1398, 418, 11, 116, 1397, 1487, + /* 1940 */ 320, 571, 389, 559, 318, 110, 575, 541, 216, 1354, + /* 1950 */ 387, 42, 1353, 583, 1202, 394, 1032, 1032, 1034, 1035, + /* 1960 */ 35, 276, 393, 278, 462, 279, 584, 1269, 1264, 172, + /* 1970 */ 456, 419, 1538, 420, 185, 173, 1539, 1537, 1536, 156, + /* 1980 */ 308, 850, 569, 457, 225, 1192, 226, 174, 217, 322, + /* 1990 */ 236, 89, 154, 1106, 1104, 330, 187, 176, 1227, 189, + /* 2000 */ 342, 929, 243, 246, 1120, 194, 177, 429, 178, 431, + /* 2010 */ 98, 1044, 99, 196, 100, 101, 179, 121, 121, 1123, + /* 2020 */ 248, 249, 1119, 163, 24, 122, 353, 456, 581, 456, + /* 2030 */ 1196, 458, 1032, 250, 292, 266, 1112, 200, 1242, 400, + /* 2040 */ 400, 399, 277, 397, 201, 500, 863, 252, 292, 15, + /* 2050 */ 865, 558, 505, 400, 400, 399, 277, 397, 256, 239, + /* 2060 */ 863, 327, 374, 202, 1032, 1032, 1034, 1035, 35, 326, + /* 2070 */ 103, 25, 26, 239, 509, 327, 366, 514, 369, 895, + /* 2080 */ 517, 105, 309, 326, 908, 164, 27, 106, 181, 525, + /* 2090 */ 107, 1189, 1073, 1192, 1159, 17, 1158, 230, 284, 286, + /* 2100 */ 241, 204, 982, 125, 265, 1175, 28, 976, 175, 1177, + /* 2110 */ 1179, 43, 1183, 1164, 241, 29, 30, 31, 8, 32, + /* 2120 */ 1182, 41, 175, 208, 553, 43, 111, 33, 240, 1087, + /* 2130 */ 113, 114, 1074, 1072, 1076, 34, 1077, 565, 1128, 118, + /* 2140 */ 271, 36, 240, 18, 939, 1037, 877, 272, 124, 37, + /* 2150 */ 398, 1198, 153, 576, 273, 1621, 183, 1197, 1260, 1260, + /* 2160 */ 1260, 1260, 1260, 418, 1260, 1260, 1260, 1260, 320, 571, + /* 2170 */ 1260, 1260, 1260, 1260, 1260, 1260, 1260, 418, 1260, 1260, + /* 2180 */ 1260, 1260, 320, 571, 1260, 1260, 1260, 1260, 1260, 1260, + /* 2190 */ 1260, 1260, 462, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + /* 2200 */ 1260, 1260, 1260, 1260, 1260, 1260, 462, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 276, 277, 278, 240, 241, 224, 194, 226, 194, 240, @@ -174944,38 +174947,38 @@ static const YYCODETYPE yy_lookahead[] = { /* 1810 */ 261, 10, 11, 12, 13, 14, 250, 282, 17, 197, /* 1820 */ 61, 19, 20, 246, 22, 183, 244, 142, 201, 201, /* 1830 */ 38, 30, 299, 32, 201, 152, 22, 151, 36, 299, - /* 1840 */ 43, 40, 235, 18, 238, 285, 238, 238, 296, 238, - /* 1850 */ 201, 296, 274, 272, 18, 200, 235, 150, 235, 247, - /* 1860 */ 247, 247, 60, 247, 274, 274, 272, 201, 200, 159, - /* 1870 */ 63, 292, 71, 201, 72, 200, 22, 201, 222, 200, - /* 1880 */ 79, 201, 222, 82, 291, 116, 219, 65, 200, 219, - /* 1890 */ 219, 228, 22, 127, 225, 166, 222, 24, 225, 114, - /* 1900 */ 99, 284, 221, 101, 284, 228, 307, 315, 219, 107, - /* 1910 */ 108, 219, 219, 219, 201, 92, 320, 115, 320, 117, - /* 1920 */ 118, 119, 222, 83, 122, 267, 267, 149, 146, 19, - /* 1930 */ 20, 22, 22, 279, 250, 134, 201, 148, 159, 249, - /* 1940 */ 139, 140, 251, 141, 25, 281, 36, 147, 251, 248, - /* 1950 */ 247, 203, 13, 195, 6, 195, 154, 155, 156, 157, - /* 1960 */ 158, 193, 305, 193, 163, 193, 305, 302, 214, 208, - /* 1970 */ 60, 214, 208, 223, 223, 4, 214, 214, 3, 22, - /* 1980 */ 215, 214, 72, 208, 164, 183, 215, 15, 23, 16, - /* 1990 */ 23, 140, 131, 152, 25, 143, 20, 16, 24, 1, - /* 2000 */ 145, 143, 131, 131, 62, 37, 54, 54, 152, 54, - /* 2010 */ 54, 101, 131, 117, 34, 1, 142, 107, 108, 22, - /* 2020 */ 5, 116, 162, 69, 25, 115, 76, 117, 118, 119, - /* 2030 */ 1, 2, 122, 69, 5, 41, 142, 116, 20, 10, - /* 2040 */ 11, 12, 13, 14, 24, 19, 17, 132, 5, 126, - /* 2050 */ 22, 141, 68, 10, 11, 12, 13, 14, 22, 30, - /* 2060 */ 17, 32, 22, 22, 154, 155, 156, 157, 158, 40, - /* 2070 */ 23, 68, 60, 30, 24, 32, 97, 28, 22, 68, - /* 2080 */ 23, 37, 34, 40, 150, 22, 25, 23, 23, 23, - /* 2090 */ 22, 98, 23, 183, 23, 117, 34, 22, 25, 89, - /* 2100 */ 71, 142, 144, 76, 34, 23, 34, 76, 79, 87, - /* 2110 */ 34, 82, 34, 94, 71, 34, 22, 24, 44, 34, - /* 2120 */ 25, 25, 79, 23, 23, 82, 143, 23, 99, 143, - /* 2130 */ 23, 22, 11, 25, 23, 25, 22, 22, 22, 1, - /* 2140 */ 23, 23, 99, 136, 22, 22, 142, 142, 142, 25, - /* 2150 */ 25, 23, 15, 1, 322, 322, 322, 322, 322, 322, + /* 1840 */ 149, 40, 251, 146, 250, 285, 43, 235, 296, 251, + /* 1850 */ 250, 296, 274, 272, 18, 238, 238, 238, 238, 201, + /* 1860 */ 18, 200, 60, 150, 274, 272, 274, 235, 247, 235, + /* 1870 */ 247, 201, 71, 247, 72, 200, 247, 159, 63, 200, + /* 1880 */ 79, 201, 22, 82, 222, 201, 222, 292, 200, 200, + /* 1890 */ 291, 201, 116, 219, 65, 219, 219, 228, 22, 127, + /* 1900 */ 99, 228, 166, 101, 24, 114, 225, 83, 307, 107, + /* 1910 */ 108, 315, 201, 219, 222, 284, 221, 115, 225, 117, + /* 1920 */ 118, 119, 219, 219, 122, 284, 219, 222, 320, 19, + /* 1930 */ 20, 92, 22, 320, 267, 134, 22, 159, 267, 279, + /* 1940 */ 139, 140, 201, 141, 281, 148, 36, 147, 249, 251, + /* 1950 */ 250, 25, 251, 203, 13, 247, 154, 155, 156, 157, + /* 1960 */ 158, 195, 248, 195, 163, 6, 193, 193, 193, 208, + /* 1970 */ 60, 305, 214, 305, 302, 208, 214, 214, 214, 223, + /* 1980 */ 223, 4, 72, 3, 215, 183, 215, 208, 22, 164, + /* 1990 */ 15, 214, 16, 23, 23, 140, 152, 131, 25, 143, + /* 2000 */ 16, 20, 24, 145, 1, 143, 131, 62, 131, 37, + /* 2010 */ 54, 101, 54, 152, 54, 54, 131, 107, 108, 117, + /* 2020 */ 34, 142, 1, 5, 22, 115, 162, 117, 118, 119, + /* 2030 */ 1, 2, 122, 116, 5, 25, 69, 69, 76, 10, + /* 2040 */ 11, 12, 13, 14, 116, 41, 17, 142, 5, 24, + /* 2050 */ 20, 141, 19, 10, 11, 12, 13, 14, 126, 30, + /* 2060 */ 17, 32, 132, 22, 154, 155, 156, 157, 158, 40, + /* 2070 */ 22, 22, 22, 30, 68, 32, 23, 68, 24, 60, + /* 2080 */ 97, 22, 68, 40, 28, 23, 34, 150, 37, 22, + /* 2090 */ 25, 23, 23, 183, 23, 22, 98, 142, 23, 23, + /* 2100 */ 71, 22, 117, 25, 34, 89, 34, 144, 79, 87, + /* 2110 */ 76, 82, 76, 23, 71, 34, 34, 34, 44, 34, + /* 2120 */ 94, 22, 79, 25, 24, 82, 25, 34, 99, 23, + /* 2130 */ 143, 143, 23, 23, 23, 22, 11, 25, 23, 25, + /* 2140 */ 22, 22, 99, 22, 136, 23, 23, 142, 22, 22, + /* 2150 */ 15, 1, 23, 25, 142, 142, 25, 1, 322, 322, /* 2160 */ 322, 322, 322, 134, 322, 322, 322, 322, 139, 140, /* 2170 */ 322, 322, 322, 322, 322, 322, 322, 134, 322, 322, /* 2180 */ 322, 322, 139, 140, 322, 322, 322, 322, 322, 322, @@ -174994,16 +174997,16 @@ static const YYCODETYPE yy_lookahead[] = { /* 2310 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, /* 2320 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, /* 2330 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - /* 2340 */ 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + /* 2340 */ 322, 322, 322, 322, 186, 186, 186, 186, 186, 186, /* 2350 */ 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, /* 2360 */ 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, /* 2370 */ 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, /* 2380 */ 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, /* 2390 */ 186, 186, 186, }; -#define YY_SHIFT_COUNT (582) +#define YY_SHIFT_COUNT (586) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (2152) +#define YY_SHIFT_MAX (2156) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 2029, 1801, 2043, 1380, 1380, 33, 391, 1496, 1569, 1642, /* 10 */ 702, 702, 702, 193, 33, 33, 33, 33, 33, 0, @@ -175038,36 +175041,36 @@ static const unsigned short int yy_shift_ofst[] = { /* 300 */ 749, 749, 1162, 749, 960, 1007, 1274, 738, 215, 1300, /* 310 */ 1300, 1300, 1395, 1395, 1395, 1395, 1368, 1368, 1033, 1414, /* 320 */ 1387, 1361, 1759, 1759, 1685, 1685, 1792, 1792, 1685, 1683, - /* 330 */ 1686, 1814, 1797, 1825, 1825, 1825, 1825, 1685, 1836, 1707, - /* 340 */ 1686, 1686, 1707, 1814, 1797, 1707, 1797, 1707, 1685, 1836, - /* 350 */ 1710, 1807, 1685, 1836, 1854, 1685, 1836, 1685, 1836, 1854, - /* 360 */ 1769, 1769, 1769, 1822, 1870, 1870, 1854, 1769, 1766, 1769, - /* 370 */ 1822, 1769, 1769, 1729, 1873, 1785, 1785, 1854, 1685, 1823, - /* 380 */ 1823, 1840, 1840, 1778, 1782, 1909, 1685, 1779, 1778, 1789, - /* 390 */ 1800, 1707, 1919, 1939, 1939, 1948, 1948, 1948, 2207, 2207, - /* 400 */ 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - /* 410 */ 2207, 2207, 2207, 69, 1037, 79, 1088, 651, 1196, 1415, - /* 420 */ 1501, 1439, 1369, 1452, 911, 1211, 1524, 1469, 1551, 1567, - /* 430 */ 1570, 1624, 1640, 1644, 1499, 1440, 1572, 1464, 1597, 275, - /* 440 */ 782, 1586, 1648, 1678, 1553, 1682, 1687, 1388, 1502, 1696, - /* 450 */ 1706, 1588, 1486, 1971, 1975, 1957, 1820, 1972, 1973, 1965, - /* 460 */ 1967, 1851, 1841, 1861, 1969, 1969, 1974, 1852, 1976, 1855, - /* 470 */ 1981, 1998, 1858, 1871, 1969, 1872, 1942, 1968, 1969, 1856, - /* 480 */ 1952, 1953, 1955, 1956, 1881, 1896, 1980, 1874, 2014, 2015, - /* 490 */ 1997, 1905, 1860, 1954, 1999, 1964, 1950, 1994, 1894, 1921, - /* 500 */ 2020, 2018, 2026, 1915, 1923, 2028, 1984, 2036, 2040, 2047, - /* 510 */ 2041, 2003, 2012, 2050, 1979, 2049, 2056, 2011, 2044, 2057, - /* 520 */ 2048, 1934, 2063, 2064, 2065, 2061, 2066, 2068, 1993, 1959, - /* 530 */ 2069, 2071, 1978, 2062, 2075, 1958, 2073, 2070, 2072, 2076, - /* 540 */ 2078, 2010, 2027, 2022, 2074, 2031, 2019, 2081, 2082, 2094, - /* 550 */ 2093, 2095, 2096, 2085, 1983, 1986, 2100, 2073, 2101, 2104, - /* 560 */ 2107, 2109, 2108, 2110, 2111, 2114, 2121, 2115, 2116, 2117, - /* 570 */ 2118, 2122, 2123, 2124, 2007, 2004, 2005, 2006, 2125, 2128, - /* 580 */ 2137, 2138, 2152, + /* 330 */ 1686, 1814, 1691, 1697, 1803, 1691, 1697, 1836, 1836, 1836, + /* 340 */ 1836, 1685, 1842, 1713, 1686, 1686, 1713, 1814, 1803, 1713, + /* 350 */ 1803, 1713, 1685, 1842, 1718, 1815, 1685, 1842, 1860, 1685, + /* 360 */ 1842, 1685, 1842, 1860, 1776, 1776, 1776, 1829, 1876, 1876, + /* 370 */ 1860, 1776, 1772, 1776, 1829, 1776, 1776, 1736, 1880, 1791, + /* 380 */ 1791, 1860, 1685, 1839, 1839, 1824, 1824, 1691, 1697, 1914, + /* 390 */ 1685, 1778, 1691, 1797, 1800, 1713, 1926, 1941, 1941, 1959, + /* 400 */ 1959, 1959, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + /* 410 */ 2207, 2207, 2207, 2207, 2207, 2207, 2207, 69, 1037, 79, + /* 420 */ 1088, 651, 1196, 1415, 1501, 1439, 1369, 1452, 911, 1211, + /* 430 */ 1524, 1469, 1551, 1567, 1570, 1624, 1640, 1644, 1499, 1440, + /* 440 */ 1572, 1464, 1597, 275, 782, 1586, 1648, 1678, 1553, 1682, + /* 450 */ 1687, 1388, 1502, 1696, 1706, 1588, 1486, 1977, 1980, 1966, + /* 460 */ 1825, 1975, 1976, 1970, 1971, 1855, 1844, 1866, 1973, 1973, + /* 470 */ 1978, 1856, 1981, 1858, 1984, 2003, 1862, 1875, 1973, 1877, + /* 480 */ 1945, 1972, 1973, 1861, 1956, 1958, 1960, 1961, 1885, 1902, + /* 490 */ 1986, 1879, 2021, 2018, 2002, 1917, 1864, 1967, 2010, 1968, + /* 500 */ 1962, 2004, 1905, 1928, 2025, 2030, 2033, 1930, 1932, 2041, + /* 510 */ 2006, 2048, 2049, 2053, 2050, 2009, 2019, 2054, 1983, 2056, + /* 520 */ 2059, 2014, 2051, 2062, 2052, 1937, 2067, 2068, 2069, 2065, + /* 530 */ 2071, 2073, 1998, 1955, 2075, 2076, 1985, 2070, 2079, 1963, + /* 540 */ 2078, 2072, 2081, 2082, 2083, 2016, 2034, 2022, 2074, 2036, + /* 550 */ 2026, 2085, 2090, 2099, 2100, 2098, 2101, 2093, 1987, 1988, + /* 560 */ 2106, 2078, 2109, 2110, 2111, 2113, 2112, 2114, 2115, 2118, + /* 570 */ 2125, 2119, 2121, 2122, 2123, 2126, 2127, 2128, 2008, 2005, + /* 580 */ 2012, 2013, 2131, 2129, 2135, 2150, 2156, }; -#define YY_REDUCE_COUNT (412) +#define YY_REDUCE_COUNT (416) #define YY_REDUCE_MIN (-276) -#define YY_REDUCE_MAX (1775) +#define YY_REDUCE_MAX (1779) static const short yy_reduce_ofst[] = { /* 0 */ -66, 217, -63, -177, -180, 161, 364, 64, -183, 162, /* 10 */ 223, 367, 414, -173, 473, 514, 525, 622, 626, -207, @@ -175102,76 +175105,76 @@ static const short yy_reduce_ofst[] = { /* 300 */ 1512, 1521, 1539, 1522, 1541, 1493, 1583, 1559, 1565, 1585, /* 310 */ 1587, 1589, 1529, 1531, 1532, 1549, 1558, 1566, 1535, 1577, /* 320 */ 1582, 1622, 1533, 1540, 1627, 1628, 1552, 1555, 1633, 1560, - /* 330 */ 1578, 1581, 1607, 1606, 1608, 1609, 1611, 1649, 1655, 1612, - /* 340 */ 1590, 1591, 1613, 1594, 1621, 1614, 1623, 1616, 1666, 1668, - /* 350 */ 1579, 1593, 1672, 1675, 1656, 1676, 1679, 1680, 1688, 1660, - /* 360 */ 1667, 1670, 1671, 1663, 1669, 1673, 1674, 1689, 1681, 1692, - /* 370 */ 1677, 1693, 1694, 1592, 1599, 1617, 1620, 1700, 1713, 1596, - /* 380 */ 1598, 1658, 1659, 1691, 1684, 1654, 1735, 1664, 1697, 1690, - /* 390 */ 1701, 1703, 1748, 1758, 1760, 1768, 1770, 1772, 1657, 1661, - /* 400 */ 1665, 1761, 1754, 1757, 1762, 1763, 1764, 1750, 1751, 1765, - /* 410 */ 1771, 1767, 1775, + /* 330 */ 1578, 1581, 1591, 1594, 1612, 1598, 1600, 1617, 1618, 1619, + /* 340 */ 1620, 1658, 1661, 1621, 1590, 1592, 1623, 1593, 1632, 1626, + /* 350 */ 1634, 1629, 1670, 1675, 1595, 1599, 1680, 1679, 1662, 1684, + /* 360 */ 1688, 1690, 1689, 1664, 1674, 1676, 1677, 1669, 1681, 1693, + /* 370 */ 1692, 1694, 1695, 1703, 1673, 1704, 1707, 1596, 1601, 1631, + /* 380 */ 1641, 1705, 1711, 1608, 1613, 1667, 1671, 1698, 1700, 1660, + /* 390 */ 1741, 1663, 1701, 1699, 1714, 1708, 1750, 1766, 1768, 1773, + /* 400 */ 1774, 1775, 1666, 1668, 1672, 1761, 1758, 1762, 1763, 1764, + /* 410 */ 1767, 1756, 1757, 1769, 1771, 1777, 1779, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 1663, 1663, 1663, 1491, 1254, 1367, 1254, 1254, 1254, 1254, - /* 10 */ 1491, 1491, 1491, 1254, 1254, 1254, 1254, 1254, 1254, 1397, - /* 20 */ 1397, 1544, 1287, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 30 */ 1254, 1254, 1254, 1254, 1254, 1490, 1254, 1254, 1254, 1254, - /* 40 */ 1578, 1578, 1254, 1254, 1254, 1254, 1254, 1563, 1562, 1254, - /* 50 */ 1254, 1254, 1406, 1254, 1413, 1254, 1254, 1254, 1254, 1254, - /* 60 */ 1492, 1493, 1254, 1254, 1254, 1254, 1543, 1545, 1508, 1420, - /* 70 */ 1419, 1418, 1417, 1526, 1385, 1411, 1404, 1408, 1487, 1488, - /* 80 */ 1486, 1641, 1493, 1492, 1254, 1407, 1455, 1471, 1454, 1254, - /* 90 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 100 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 110 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 120 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 130 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 140 */ 1254, 1254, 1463, 1470, 1469, 1468, 1477, 1467, 1464, 1457, - /* 150 */ 1456, 1458, 1459, 1278, 1254, 1275, 1329, 1254, 1254, 1254, - /* 160 */ 1254, 1254, 1460, 1287, 1448, 1447, 1446, 1254, 1474, 1461, - /* 170 */ 1473, 1472, 1551, 1615, 1614, 1509, 1254, 1254, 1254, 1254, - /* 180 */ 1254, 1254, 1578, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 190 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 200 */ 1254, 1254, 1254, 1254, 1254, 1387, 1578, 1578, 1254, 1287, - /* 210 */ 1578, 1578, 1388, 1388, 1283, 1283, 1391, 1558, 1358, 1358, - /* 220 */ 1358, 1358, 1367, 1358, 1254, 1254, 1254, 1254, 1254, 1254, - /* 230 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1548, - /* 240 */ 1546, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 250 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 260 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1363, 1254, - /* 270 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1608, - /* 280 */ 1254, 1521, 1343, 1363, 1363, 1363, 1363, 1365, 1344, 1342, - /* 290 */ 1357, 1288, 1261, 1655, 1423, 1412, 1364, 1412, 1652, 1410, - /* 300 */ 1423, 1423, 1410, 1423, 1364, 1652, 1304, 1630, 1299, 1397, - /* 310 */ 1397, 1397, 1387, 1387, 1387, 1387, 1391, 1391, 1489, 1364, - /* 320 */ 1357, 1254, 1655, 1655, 1373, 1373, 1654, 1654, 1373, 1509, - /* 330 */ 1638, 1432, 1332, 1338, 1338, 1338, 1338, 1373, 1272, 1410, - /* 340 */ 1638, 1638, 1410, 1432, 1332, 1410, 1332, 1410, 1373, 1272, - /* 350 */ 1525, 1649, 1373, 1272, 1499, 1373, 1272, 1373, 1272, 1499, - /* 360 */ 1330, 1330, 1330, 1319, 1254, 1254, 1499, 1330, 1304, 1330, - /* 370 */ 1319, 1330, 1330, 1596, 1254, 1503, 1503, 1499, 1373, 1588, - /* 380 */ 1588, 1400, 1400, 1405, 1391, 1494, 1373, 1254, 1405, 1403, - /* 390 */ 1401, 1410, 1322, 1611, 1611, 1607, 1607, 1607, 1660, 1660, - /* 400 */ 1558, 1623, 1287, 1287, 1287, 1287, 1623, 1306, 1306, 1288, - /* 410 */ 1288, 1287, 1623, 1254, 1254, 1254, 1254, 1254, 1254, 1618, - /* 420 */ 1254, 1553, 1510, 1377, 1254, 1254, 1254, 1254, 1254, 1254, - /* 430 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 440 */ 1564, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 450 */ 1254, 1254, 1437, 1254, 1257, 1555, 1254, 1254, 1254, 1254, - /* 460 */ 1254, 1254, 1254, 1254, 1414, 1415, 1378, 1254, 1254, 1254, - /* 470 */ 1254, 1254, 1254, 1254, 1429, 1254, 1254, 1254, 1424, 1254, - /* 480 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1651, 1254, 1254, - /* 490 */ 1254, 1254, 1254, 1254, 1524, 1523, 1254, 1254, 1375, 1254, - /* 500 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 510 */ 1254, 1254, 1302, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 520 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 530 */ 1254, 1254, 1254, 1254, 1254, 1254, 1402, 1254, 1254, 1254, - /* 540 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 550 */ 1254, 1593, 1392, 1254, 1254, 1254, 1254, 1642, 1254, 1254, - /* 560 */ 1254, 1254, 1352, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - /* 570 */ 1254, 1254, 1254, 1634, 1346, 1438, 1254, 1441, 1276, 1254, - /* 580 */ 1266, 1254, 1254, + /* 0 */ 1667, 1667, 1667, 1495, 1258, 1371, 1258, 1258, 1258, 1258, + /* 10 */ 1495, 1495, 1495, 1258, 1258, 1258, 1258, 1258, 1258, 1401, + /* 20 */ 1401, 1548, 1291, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 30 */ 1258, 1258, 1258, 1258, 1258, 1494, 1258, 1258, 1258, 1258, + /* 40 */ 1582, 1582, 1258, 1258, 1258, 1258, 1258, 1567, 1566, 1258, + /* 50 */ 1258, 1258, 1410, 1258, 1417, 1258, 1258, 1258, 1258, 1258, + /* 60 */ 1496, 1497, 1258, 1258, 1258, 1258, 1547, 1549, 1512, 1424, + /* 70 */ 1423, 1422, 1421, 1530, 1389, 1415, 1408, 1412, 1491, 1492, + /* 80 */ 1490, 1645, 1497, 1496, 1258, 1411, 1459, 1475, 1458, 1258, + /* 90 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 100 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 110 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 120 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 130 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 140 */ 1258, 1258, 1467, 1474, 1473, 1472, 1481, 1471, 1468, 1461, + /* 150 */ 1460, 1462, 1463, 1282, 1258, 1279, 1333, 1258, 1258, 1258, + /* 160 */ 1258, 1258, 1464, 1291, 1452, 1451, 1450, 1258, 1478, 1465, + /* 170 */ 1477, 1476, 1555, 1619, 1618, 1513, 1258, 1258, 1258, 1258, + /* 180 */ 1258, 1258, 1582, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 190 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 200 */ 1258, 1258, 1258, 1258, 1258, 1391, 1582, 1582, 1258, 1291, + /* 210 */ 1582, 1582, 1392, 1392, 1287, 1287, 1395, 1562, 1362, 1362, + /* 220 */ 1362, 1362, 1371, 1362, 1258, 1258, 1258, 1258, 1258, 1258, + /* 230 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1552, + /* 240 */ 1550, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 250 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 260 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1367, 1258, + /* 270 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1612, + /* 280 */ 1258, 1525, 1347, 1367, 1367, 1367, 1367, 1369, 1348, 1346, + /* 290 */ 1361, 1292, 1265, 1659, 1427, 1416, 1368, 1416, 1656, 1414, + /* 300 */ 1427, 1427, 1414, 1427, 1368, 1656, 1308, 1634, 1303, 1401, + /* 310 */ 1401, 1401, 1391, 1391, 1391, 1391, 1395, 1395, 1493, 1368, + /* 320 */ 1361, 1258, 1659, 1659, 1377, 1377, 1658, 1658, 1377, 1513, + /* 330 */ 1642, 1436, 1409, 1395, 1336, 1409, 1395, 1342, 1342, 1342, + /* 340 */ 1342, 1377, 1276, 1414, 1642, 1642, 1414, 1436, 1336, 1414, + /* 350 */ 1336, 1414, 1377, 1276, 1529, 1653, 1377, 1276, 1503, 1377, + /* 360 */ 1276, 1377, 1276, 1503, 1334, 1334, 1334, 1323, 1258, 1258, + /* 370 */ 1503, 1334, 1308, 1334, 1323, 1334, 1334, 1600, 1258, 1507, + /* 380 */ 1507, 1503, 1377, 1592, 1592, 1404, 1404, 1409, 1395, 1498, + /* 390 */ 1377, 1258, 1409, 1407, 1405, 1414, 1326, 1615, 1615, 1611, + /* 400 */ 1611, 1611, 1664, 1664, 1562, 1627, 1291, 1291, 1291, 1291, + /* 410 */ 1627, 1310, 1310, 1292, 1292, 1291, 1627, 1258, 1258, 1258, + /* 420 */ 1258, 1258, 1258, 1622, 1258, 1557, 1514, 1381, 1258, 1258, + /* 430 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 440 */ 1258, 1258, 1258, 1258, 1568, 1258, 1258, 1258, 1258, 1258, + /* 450 */ 1258, 1258, 1258, 1258, 1258, 1258, 1441, 1258, 1261, 1559, + /* 460 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1418, 1419, + /* 470 */ 1382, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1433, 1258, + /* 480 */ 1258, 1258, 1428, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 490 */ 1258, 1655, 1258, 1258, 1258, 1258, 1258, 1258, 1528, 1527, + /* 500 */ 1258, 1258, 1379, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 510 */ 1258, 1258, 1258, 1258, 1258, 1258, 1306, 1258, 1258, 1258, + /* 520 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 530 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 540 */ 1406, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + /* 550 */ 1258, 1258, 1258, 1258, 1258, 1597, 1396, 1258, 1258, 1258, + /* 560 */ 1258, 1646, 1258, 1258, 1258, 1258, 1356, 1258, 1258, 1258, + /* 570 */ 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1638, 1350, 1442, + /* 580 */ 1258, 1445, 1280, 1258, 1270, 1258, 1258, }; /********** End of lemon-generated parsing tables *****************************/ @@ -175941,14 +175944,14 @@ static const char *const yyRuleName[] = { /* 149 */ "limit_opt ::= LIMIT expr", /* 150 */ "limit_opt ::= LIMIT expr OFFSET expr", /* 151 */ "limit_opt ::= LIMIT expr COMMA expr", - /* 152 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret", + /* 152 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret orderby_opt limit_opt", /* 153 */ "where_opt ::=", /* 154 */ "where_opt ::= WHERE expr", /* 155 */ "where_opt_ret ::=", /* 156 */ "where_opt_ret ::= WHERE expr", /* 157 */ "where_opt_ret ::= RETURNING selcollist", /* 158 */ "where_opt_ret ::= WHERE expr RETURNING selcollist", - /* 159 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret", + /* 159 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret orderby_opt limit_opt", /* 160 */ "setlist ::= setlist COMMA nm EQ expr", /* 161 */ "setlist ::= setlist COMMA LP idlist RP EQ expr", /* 162 */ "setlist ::= nm EQ expr", @@ -176866,14 +176869,14 @@ static const YYCODETYPE yyRuleInfoLhs[] = { 251, /* (149) limit_opt ::= LIMIT expr */ 251, /* (150) limit_opt ::= LIMIT expr OFFSET expr */ 251, /* (151) limit_opt ::= LIMIT expr COMMA expr */ - 191, /* (152) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ + 191, /* (152) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret orderby_opt limit_opt */ 247, /* (153) where_opt ::= */ 247, /* (154) where_opt ::= WHERE expr */ 269, /* (155) where_opt_ret ::= */ 269, /* (156) where_opt_ret ::= WHERE expr */ 269, /* (157) where_opt_ret ::= RETURNING selcollist */ 269, /* (158) where_opt_ret ::= WHERE expr RETURNING selcollist */ - 191, /* (159) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ + 191, /* (159) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret orderby_opt limit_opt */ 270, /* (160) setlist ::= setlist COMMA nm EQ expr */ 270, /* (161) setlist ::= setlist COMMA LP idlist RP EQ expr */ 270, /* (162) setlist ::= nm EQ expr */ @@ -177280,14 +177283,14 @@ static const signed char yyRuleInfoNRhs[] = { -2, /* (149) limit_opt ::= LIMIT expr */ -4, /* (150) limit_opt ::= LIMIT expr OFFSET expr */ -4, /* (151) limit_opt ::= LIMIT expr COMMA expr */ - -6, /* (152) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ + -8, /* (152) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret orderby_opt limit_opt */ 0, /* (153) where_opt ::= */ -2, /* (154) where_opt ::= WHERE expr */ 0, /* (155) where_opt_ret ::= */ -2, /* (156) where_opt_ret ::= WHERE expr */ -2, /* (157) where_opt_ret ::= RETURNING selcollist */ -4, /* (158) where_opt_ret ::= WHERE expr RETURNING selcollist */ - -9, /* (159) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ + -11, /* (159) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret orderby_opt limit_opt */ -5, /* (160) setlist ::= setlist COMMA nm EQ expr */ -7, /* (161) setlist ::= setlist COMMA LP idlist RP EQ expr */ -3, /* (162) setlist ::= nm EQ expr */ @@ -178203,10 +178206,17 @@ static YYACTIONTYPE yy_reduce( case 151: /* limit_opt ::= LIMIT expr COMMA expr */ {yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,yymsp[-2].minor.yy454);} break; - case 152: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ + case 152: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret orderby_opt limit_opt */ { - sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy203, &yymsp[-1].minor.yy0); - sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy203,yymsp[0].minor.yy454,0,0); + sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy203, &yymsp[-3].minor.yy0); +#ifndef SQLITE_ENABLE_UPDATE_DELETE_LIMIT + if( yymsp[-1].minor.yy14 || yymsp[0].minor.yy454 ){ + updateDeleteLimitError(pParse,yymsp[-1].minor.yy14,yymsp[0].minor.yy454); + yymsp[-1].minor.yy14 = 0; + yymsp[0].minor.yy454 = 0; + } +#endif + sqlite3DeleteFrom(pParse,yymsp[-4].minor.yy203,yymsp[-2].minor.yy454,yymsp[-1].minor.yy14,yymsp[0].minor.yy454); } break; case 157: /* where_opt_ret ::= RETURNING selcollist */ @@ -178215,12 +178225,11 @@ static YYACTIONTYPE yy_reduce( case 158: /* where_opt_ret ::= WHERE expr RETURNING selcollist */ {sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-3].minor.yy454 = yymsp[-2].minor.yy454;} break; - case 159: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ + case 159: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret orderby_opt limit_opt */ { - sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-4].minor.yy0); - sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy14,"set list"); - if( yymsp[-1].minor.yy203 ){ - SrcList *pFromClause = yymsp[-1].minor.yy203; + sqlite3SrcListIndexedBy(pParse, yymsp[-7].minor.yy203, &yymsp[-6].minor.yy0); + if( yymsp[-3].minor.yy203 ){ + SrcList *pFromClause = yymsp[-3].minor.yy203; if( pFromClause->nSrc>1 ){ Select *pSubquery; Token as; @@ -178229,9 +178238,17 @@ static YYACTIONTYPE yy_reduce( as.z = 0; pFromClause = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&as,pSubquery,0); } - yymsp[-5].minor.yy203 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy203, pFromClause); + yymsp[-7].minor.yy203 = sqlite3SrcListAppendList(pParse, yymsp[-7].minor.yy203, pFromClause); } - sqlite3Update(pParse,yymsp[-5].minor.yy203,yymsp[-2].minor.yy14,yymsp[0].minor.yy454,yymsp[-6].minor.yy144,0,0,0); + sqlite3ExprListCheckLength(pParse,yymsp[-4].minor.yy14,"set list"); +#ifndef SQLITE_ENABLE_UPDATE_DELETE_LIMIT + if( yymsp[-1].minor.yy14 || yymsp[0].minor.yy454 ){ + updateDeleteLimitError(pParse,yymsp[-1].minor.yy14,yymsp[0].minor.yy454); + yymsp[-1].minor.yy14 = 0; + yymsp[0].minor.yy454 = 0; + } +#endif + sqlite3Update(pParse,yymsp[-7].minor.yy203,yymsp[-4].minor.yy14,yymsp[-2].minor.yy454,yymsp[-8].minor.yy144,yymsp[-1].minor.yy14,yymsp[0].minor.yy454,0); } break; case 160: /* setlist ::= setlist COMMA nm EQ expr */ diff --git a/test/50.misc.js b/test/50.misc.js index d89de8037..9e009f7e3 100644 --- a/test/50.misc.js +++ b/test/50.misc.js @@ -9,6 +9,30 @@ describe('miscellaneous', function () { this.db.close(); }); + it('supports LIMIT in DELETE statements', function () { + this.db.prepare("CREATE TABLE foo (x INTEGER PRIMARY KEY)").run(); + expect(this.db.prepare('INSERT INTO foo (x) VALUES (1), (2), (3)').run()) + .to.deep.equal({ changes: 3, lastInsertRowid: 3 }); + + expect(this.db.prepare('DELETE FROM foo ORDER BY x ASC LIMIT 1').run()) + .to.have.property('changes', 1); + + expect(this.db.prepare('SELECT x FROM foo ORDER BY x ASC').all()) + .to.deep.equal([{ x: 2 }, { x: 3 }]); + }); + + it('supports LIMIT in UPDATE statements', function () { + this.db.prepare("CREATE TABLE foo (x INTEGER PRIMARY KEY, y INTEGER)").run(); + expect(this.db.prepare('INSERT INTO foo (x, y) VALUES (1, 1), (2, 2), (3, 3)').run()) + .to.deep.equal({ changes: 3, lastInsertRowid: 3 }); + + expect(this.db.prepare('UPDATE foo SET y = 100 ORDER BY x DESC LIMIT 2').run()) + .to.have.property('changes', 2); + + expect(this.db.prepare('SELECT x, y FROM foo ORDER BY x ASC').all()) + .to.deep.equal([{ x: 1, y: 1 }, { x: 2, y: 100 }, { x: 3, y: 100 }]); + }); + it('persists non-trivial quantities of reads and writes', function () { const runDuration = 1000; const runUntil = Date.now() + runDuration;