diff --git a/CHANGELOG.md b/CHANGELOG.md index da2b9e0be18..43b09cbdf59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Support 'add_int' on a mixed property. * UUID allowed as partition value ([#4500](https://github.com/realm/realm-core/issues/4500)) * The error message when the intial steps of opening a Realm file fails is now more descriptive. +* Allow UTF8 encoded characters in property names in query parser ([#4467](https://github.com/realm/realm-core/issues/4467)) ### Fixed * ([#????](https://github.com/realm/realm-core/issues/????), since v?.?.?) diff --git a/src/realm/parser/generated/query_flex.cpp b/src/realm/parser/generated/query_flex.cpp index 575908c170a..2129fc5592a 100644 --- a/src/realm/parser/generated/query_flex.cpp +++ b/src/realm/parser/generated/query_flex.cpp @@ -510,49 +510,50 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[372] = +static const flex_int16_t yy_accept[385] = { 0, 0, 0, 62, 60, 1, 2, 13, 60, 59, 60, 60, 8, 60, 8, 50, 50, 6, 3, 7, 60, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 8, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 60, 1, 2, 5, 0, 57, - 0, 59, 51, 0, 11, 0, 58, 0, 0, 52, - 0, 0, 55, 0, 55, 50, 0, 0, 9, 3, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 4, 59, 59, 59, 59, 59, 59, 59, 48, - - 12, 59, 59, 59, 0, 59, 59, 59, 59, 0, - 59, 59, 59, 59, 59, 59, 59, 59, 12, 0, - 0, 0, 0, 0, 0, 55, 0, 54, 53, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 11, 14, 27, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 42, 0, 59, 59, 43, 44, 59, 13, - 59, 59, 59, 59, 0, 0, 59, 59, 39, 59, - 59, 59, 59, 59, 59, 0, 0, 42, 43, 0, - 55, 0, 34, 0, 0, 0, 31, 32, 0, 33, - 0, 0, 59, 0, 59, 59, 59, 28, 59, 59, - - 59, 59, 59, 49, 20, 59, 16, 44, 24, 59, - 0, 47, 40, 59, 59, 0, 59, 0, 0, 0, - 0, 0, 37, 0, 30, 36, 0, 59, 56, 0, - 59, 59, 59, 59, 59, 59, 41, 59, 59, 26, - 59, 59, 0, 0, 0, 0, 0, 0, 35, 0, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 0, 0, 0, 0, 38, 59, 59, 21, 59, - 59, 59, 59, 59, 59, 59, 59, 0, 0, 0, - 0, 59, 59, 19, 59, 25, 18, 59, 42, 29, - 59, 0, 0, 42, 0, 27, 59, 59, 59, 59, - - 0, 0, 0, 17, 28, 59, 59, 0, 0, 47, - 59, 59, 0, 0, 0, 59, 59, 0, 0, 47, - 59, 22, 0, 0, 23, 0, 0, 0, 0, 0, + 59, 59, 59, 59, 60, 60, 60, 60, 1, 2, + 5, 0, 57, 0, 59, 51, 0, 0, 0, 0, + 11, 0, 58, 0, 0, 52, 0, 0, 55, 0, + 55, 50, 0, 0, 9, 3, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 4, 59, 59, + + 59, 59, 59, 59, 59, 48, 12, 59, 59, 59, + 0, 59, 59, 59, 59, 0, 59, 59, 59, 59, + 59, 59, 59, 59, 12, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 55, 0, 54, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 11, 14, 27, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 42, 0, 59, 59, 43, 44, 59, + 13, 59, 59, 59, 59, 0, 0, 59, 59, 39, + 59, 59, 59, 59, 59, 59, 0, 0, 0, 0, + 42, 43, 0, 55, 0, 34, 0, 0, 0, 31, + + 32, 0, 33, 0, 0, 59, 0, 59, 59, 59, + 28, 59, 59, 59, 59, 59, 49, 20, 59, 16, + 44, 24, 59, 0, 47, 40, 59, 59, 0, 59, + 0, 0, 0, 0, 0, 37, 0, 30, 36, 0, + 59, 56, 0, 59, 59, 59, 59, 59, 59, 41, + 59, 59, 26, 59, 59, 0, 0, 0, 0, 0, + 0, 35, 0, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 0, 0, 0, 0, 38, 59, + 59, 21, 59, 59, 59, 59, 59, 59, 59, 59, + 0, 0, 0, 0, 59, 59, 19, 59, 25, 18, + + 59, 42, 29, 59, 0, 0, 42, 0, 27, 59, + 59, 59, 59, 0, 0, 0, 17, 28, 59, 59, + 0, 0, 47, 59, 59, 0, 0, 0, 59, 59, + 0, 0, 47, 59, 22, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 0 + 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0 } ; static const YY_CHAR yy_ec[256] = @@ -570,24 +571,24 @@ static const YY_CHAR yy_ec[256] = 58, 59, 60, 61, 62, 35, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 13, 79, 13, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 77, 78, 13, 79, 13, 1, 1, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 1, 1, 81, 81, 81, 81, 81, 81, 81, + + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, + 83, 83, 83, 83, 83, 83, 83, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[80] = +static const YY_CHAR yy_meta[84] = { 0, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 2, 1, 3, 1, 2, 4, 4, 4, 4, @@ -596,114 +597,119 @@ static const YY_CHAR yy_meta[80] = 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 3, 1, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 1 + 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, + 3, 3, 3 } ; -static const flex_int16_t yy_base[441] = +static const flex_int16_t yy_base[454] = { 0, - 0, 0, 981, 982, 78, 977, 956, 75, 66, 970, - 78, 982, 73, 77, 84, 91, 92, 96, 954, 80, - 111, 107, 73, 123, 117, 74, 925, 120, 170, 165, - 175, 129, 211, 919, 169, 149, 112, 158, 150, 188, - 198, 197, 193, 125, 895, 129, 970, 982, 116, 982, - 250, 921, 255, 199, 982, 121, 982, 270, 265, 273, - 107, 152, 277, 293, 327, 334, 348, 0, 982, 982, - 982, 897, 903, 911, 906, 246, 184, 890, 912, 110, - 275, 299, 312, 196, 326, 322, 207, 328, 327, 338, - 339, 349, 350, 376, 368, 366, 370, 371, 374, 395, - - 914, 385, 332, 375, 422, 430, 439, 378, 415, 912, - 238, 414, 416, 267, 113, 419, 422, 266, 982, 0, - 0, 221, 398, 480, 458, 484, 488, 492, 0, 903, - 889, 884, 894, 883, 892, 879, 891, 887, 890, 902, - 901, 900, 466, 247, 401, 468, 475, 465, 477, 474, - 479, 483, 495, 518, 501, 505, 899, 898, 340, 897, - 504, 502, 513, 509, 552, 562, 532, 533, 982, 542, - 159, 434, 279, 536, 538, 0, 0, 420, 982, 579, - 583, 587, 982, 881, 875, 882, 982, 982, 886, 982, - 885, 869, 526, 935, 569, 558, 585, 580, 578, 567, - - 592, 593, 582, 607, 889, 583, 888, 887, 886, 586, - 643, 647, 605, 606, 619, 0, 607, 0, 0, 447, - 661, 864, 982, 864, 982, 982, 876, 625, 982, 927, - 601, 638, 637, 636, 644, 650, 649, 652, 657, 881, - 664, 654, 0, 0, 0, 0, 499, 708, 982, 860, - 670, 660, 679, 690, 680, 688, 689, 695, 691, 700, - 717, 0, 0, 503, 759, 982, 715, 721, 879, 713, - 735, 722, 738, 744, 711, 736, 753, 0, 0, 592, - 773, 764, 755, 878, 766, 877, 876, 769, 875, 874, - 767, 0, 0, 982, 816, 873, 770, 779, 789, 791, - - 0, 0, 826, 872, 871, 797, 812, 0, 0, 837, - 823, 814, 0, 0, 850, 827, 822, 0, 0, 864, - 834, 870, 0, 906, 868, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 904, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 903, 0, 0, 0, 0, 0, - 0, 0, 0, 903, 884, 982, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 886, 982, - 982, 899, 902, 907, 892, 891, 890, 889, 887, 911, - 886, 885, 884, 883, 875, 872, 871, 867, 858, 857, - 856, 846, 837, 824, 818, 812, 810, 808, 805, 804, - - 803, 755, 754, 749, 748, 746, 745, 744, 729, 719, - 710, 709, 694, 688, 681, 649, 626, 615, 611, 540, - 536, 483, 479, 475, 470, 465, 426, 416, 378, 370, - 334, 330, 315, 311, 310, 295, 273, 137, 119, 85 + 0, 0, 722, 1722, 82, 714, 684, 79, 70, 698, + 82, 1722, 77, 81, 88, 105, 86, 90, 682, 84, + 122, 114, 117, 151, 135, 156, 94, 140, 207, 202, + 227, 220, 262, 643, 255, 265, 274, 169, 278, 316, + 271, 323, 330, 320, 618, 614, 608, 592, 113, 654, + 1722, 120, 1722, 359, 180, 368, 226, 575, 571, 565, + 1722, 118, 1722, 411, 404, 418, 65, 106, 422, 426, + 437, 471, 480, 0, 1722, 1722, 1722, 561, 566, 555, + 549, 75, 105, 531, 549, 421, 458, 454, 467, 474, + 482, 477, 500, 517, 523, 533, 538, 542, 559, 609, + + 571, 592, 595, 599, 619, 644, 326, 628, 638, 653, + 502, 667, 695, 566, 657, 544, 673, 702, 706, 709, + 496, 729, 720, 682, 1722, 586, 515, 514, 0, 512, + 511, 0, 111, 123, 801, 808, 778, 787, 812, 0, + 527, 513, 508, 510, 496, 503, 489, 501, 494, 482, + 758, 763, 766, 803, 817, 800, 791, 807, 836, 824, + 850, 853, 858, 829, 896, 892, 886, 844, 872, 898, + 879, 901, 912, 906, 934, 979, 990, 960, 971, 1722, + 968, 955, 976, 963, 1004, 1009, 465, 0, 458, 0, + 149, 1722, 927, 1006, 1013, 1722, 468, 461, 468, 1722, + + 1722, 472, 1722, 468, 450, 1017, 511, 1022, 1044, 1055, + 1050, 1031, 1060, 1064, 1093, 1089, 1052, 996, 1105, 1038, + 1078, 1083, 1111, 1161, 1178, 1122, 1148, 1155, 0, 1158, + 0, 0, 148, 1200, 441, 1722, 441, 1722, 1722, 453, + 1171, 1722, 502, 1191, 1197, 1209, 1217, 1230, 1224, 1182, + 1236, 1233, 1242, 1252, 1258, 0, 0, 0, 0, 178, + 1312, 1722, 435, 1286, 1275, 1304, 1308, 1315, 1324, 1320, + 1330, 1337, 1365, 1374, 0, 0, 147, 1343, 1722, 1371, + 1380, 1295, 1389, 1383, 1422, 1408, 1393, 1429, 1432, 1450, + 0, 0, 166, 1409, 1417, 1457, 1435, 1483, 1442, 1445, + + 1490, 1469, 1479, 1508, 0, 0, 1722, 1536, 1486, 1525, + 1542, 1547, 1554, 0, 0, 1526, 1497, 1532, 1560, 1566, + 0, 0, 1633, 1605, 1588, 0, 0, 1577, 1593, 1610, + 0, 0, 1660, 1615, 1581, 0, 465, 1621, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 464, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 461, 0, 0, + 0, 0, 0, 0, 0, 0, 463, 459, 1722, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 460, 1722, 1722, 1704, 1707, 1712, 465, 464, 461, + 460, 459, 1716, 457, 456, 455, 449, 443, 430, 426, + + 422, 412, 411, 391, 390, 388, 387, 380, 378, 376, + 375, 368, 362, 360, 354, 347, 345, 335, 331, 330, + 327, 326, 323, 320, 316, 314, 313, 311, 307, 303, + 300, 287, 282, 273, 269, 268, 264, 263, 261, 255, + 253, 251, 250, 245, 225, 190, 186, 176, 150, 146, + 137, 124, 89 } ; -static const flex_int16_t yy_def[441] = +static const flex_int16_t yy_def[454] = { 0, - 371, 1, 371, 371, 371, 371, 371, 372, 373, 371, - 374, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 371, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 371, 371, 371, 371, 372, 371, - 371, 373, 373, 371, 371, 374, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 375, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 371, 373, 373, 373, 373, 371, - 373, 373, 373, 373, 373, 373, 373, 373, 371, 376, - 377, 371, 371, 371, 371, 371, 371, 371, 375, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 371, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 371, 371, 373, 373, 371, 373, - 373, 373, 373, 373, 373, 378, 379, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 373, 380, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 371, 373, 373, 373, 373, 373, 373, - 371, 371, 373, 373, 373, 381, 373, 382, 383, 371, - 371, 371, 371, 371, 371, 371, 371, 373, 371, 380, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 384, 385, 386, 387, 371, 371, 371, 371, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 388, 389, 371, 371, 371, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 390, 391, 371, - 371, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 392, 393, 371, 371, 373, 373, 373, 373, 373, - - 394, 395, 371, 373, 373, 373, 373, 396, 397, 371, - 373, 373, 398, 399, 371, 373, 373, 400, 401, 371, - 373, 373, 402, 371, 373, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 371, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 371, 421, 422, 423, 424, 425, - 426, 427, 428, 371, 371, 371, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 371, 371, - 0, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371 + 384, 1, 384, 384, 384, 384, 384, 385, 386, 384, + 387, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 384, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 384, 384, 384, 384, 384, 384, + 384, 385, 384, 384, 386, 386, 384, 384, 384, 384, + 384, 387, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 388, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 384, 386, 386, 386, 386, 384, 386, 386, 386, 386, + 386, 386, 386, 386, 384, 386, 384, 384, 389, 384, + 384, 390, 384, 384, 384, 384, 384, 384, 384, 388, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 384, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 384, 384, 386, 386, 384, + 386, 386, 386, 386, 386, 386, 384, 391, 384, 392, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384, 386, 393, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 384, 386, 386, 386, + 386, 386, 386, 384, 384, 386, 386, 386, 394, 386, + 395, 396, 384, 384, 384, 384, 384, 384, 384, 384, + 386, 384, 393, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 397, 398, 399, 400, 384, + 384, 384, 384, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 401, 402, 384, 384, 384, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 403, 404, 384, 384, 386, 386, 386, 386, 386, 386, + + 386, 386, 386, 386, 405, 406, 384, 384, 386, 386, + 386, 386, 386, 407, 408, 384, 386, 386, 386, 386, + 409, 410, 384, 386, 386, 411, 412, 384, 386, 386, + 413, 414, 384, 386, 386, 415, 384, 386, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 384, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 384, 434, 435, + 436, 437, 438, 439, 440, 441, 384, 384, 384, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 384, 384, 0, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384 } ; -static const flex_int16_t yy_nxt[1062] = +static const flex_int16_t yy_nxt[1806] = { 0, 4, 5, 6, 5, 7, 8, 9, 10, 11, 12, 12, 13, 12, 13, 14, 4, 15, 16, 16, 16, @@ -712,119 +718,201 @@ static const flex_int16_t yy_nxt[1062] = 27, 27, 27, 32, 33, 27, 27, 27, 27, 34, 4, 12, 27, 35, 36, 23, 24, 25, 37, 27, 27, 38, 27, 39, 27, 40, 41, 27, 27, 27, - 42, 43, 44, 27, 27, 27, 27, 27, 45, 46, - 50, 46, 53, 53, 53, 53, 57, 59, 369, 60, - 60, 60, 60, 63, 63, 63, 63, 64, 65, 90, - - 66, 66, 66, 66, 64, 65, 61, 66, 66, 66, - 66, 62, 86, 67, 69, 48, 54, 69, 70, 71, - 67, 50, 368, 54, 54, 51, 84, 91, 58, 57, - 46, 68, 46, 72, 61, 73, 85, 91, 62, 86, - 367, 67, 74, 75, 76, 122, 140, 80, 67, 81, - 77, 78, 87, 79, 82, 89, 88, 54, 92, 68, - 54, 54, 54, 54, 85, 113, 51, 54, 102, 172, - 54, 58, 122, 54, 103, 54, 83, 123, 85, 54, - 87, 82, 89, 95, 88, 93, 94, 94, 94, 94, - 96, 100, 100, 100, 100, 104, 93, 118, 97, 54, - - 54, 103, 52, 95, 98, 123, 85, 83, 54, 54, - 99, 95, 82, 96, 144, 54, 207, 101, 96, 54, - 54, 97, 105, 92, 106, 54, 97, 107, 107, 107, - 107, 95, 111, 99, 112, 109, 104, 99, 54, 82, - 101, 96, 103, 54, 101, 136, 54, 54, 54, 97, - 148, 178, 194, 108, 114, 49, 137, 54, 49, 115, - 99, 54, 117, 116, 52, 49, 49, 101, 52, 103, - 52, 53, 53, 53, 53, 56, 366, 148, 56, 178, - 109, 63, 63, 63, 63, 56, 56, 65, 54, 60, - 60, 60, 60, 63, 63, 63, 63, 54, 365, 134, - - 49, 140, 67, 141, 49, 54, 124, 135, 49, 125, - 125, 125, 125, 364, 363, 49, 54, 54, 362, 49, - 56, 49, 120, 142, 56, 54, 143, 175, 56, 54, - 67, 141, 171, 361, 124, 56, 142, 360, 160, 56, - 141, 56, 121, 126, 126, 126, 126, 64, 65, 54, - 66, 66, 66, 66, 143, 150, 124, 145, 164, 127, - 147, 127, 54, 67, 128, 128, 128, 128, 141, 207, - 146, 149, 54, 359, 151, 152, 54, 54, 54, 153, - 153, 358, 54, 150, 124, 145, 164, 147, 54, 54, - 54, 67, 94, 94, 94, 94, 154, 146, 149, 54, - - 54, 152, 152, 155, 157, 156, 158, 153, 153, 159, - 161, 100, 100, 100, 100, 160, 54, 163, 54, 355, - 54, 54, 162, 167, 54, 54, 54, 163, 54, 354, - 155, 157, 156, 158, 195, 54, 179, 161, 165, 165, - 165, 165, 141, 216, 163, 54, 107, 107, 107, 107, - 168, 54, 152, 220, 163, 107, 107, 107, 107, 166, - 168, 163, 195, 179, 54, 54, 54, 168, 353, 54, - 141, 182, 54, 352, 125, 125, 125, 125, 351, 170, - 54, 220, 350, 173, 54, 247, 349, 168, 163, 54, - 142, 180, 198, 180, 174, 193, 181, 181, 181, 181, - - 126, 126, 126, 126, 128, 128, 128, 128, 128, 128, - 128, 128, 247, 124, 196, 54, 54, 200, 54, 197, - 198, 199, 201, 193, 54, 54, 202, 54, 203, 54, - 205, 142, 264, 54, 204, 204, 204, 204, 206, 348, - 208, 124, 196, 346, 200, 54, 197, 280, 199, 202, - 210, 54, 54, 202, 54, 54, 203, 209, 205, 54, - 264, 213, 214, 54, 228, 214, 206, 208, 165, 165, - 165, 165, 166, 211, 280, 211, 54, 210, 212, 212, - 212, 212, 54, 54, 209, 202, 54, 232, 54, 214, - 214, 228, 54, 213, 217, 181, 181, 181, 181, 181, - - 181, 181, 181, 221, 221, 221, 221, 231, 54, 234, - 233, 235, 215, 236, 345, 232, 244, 54, 344, 54, - 239, 237, 238, 204, 204, 204, 204, 240, 54, 343, - 54, 241, 54, 54, 231, 54, 54, 234, 233, 235, - 294, 236, 54, 54, 252, 242, 242, 239, 238, 238, - 238, 54, 342, 251, 240, 54, 54, 54, 241, 212, - 212, 212, 212, 212, 212, 212, 212, 253, 294, 54, - 254, 252, 242, 242, 255, 54, 237, 221, 221, 221, - 221, 251, 256, 257, 341, 248, 54, 54, 54, 258, - 259, 340, 258, 260, 54, 253, 261, 339, 254, 54, - - 54, 255, 54, 267, 54, 248, 268, 54, 271, 256, - 54, 257, 338, 336, 54, 272, 258, 269, 259, 258, - 54, 260, 335, 261, 265, 265, 265, 265, 270, 54, - 54, 267, 334, 273, 268, 275, 271, 274, 54, 54, - 54, 54, 276, 272, 269, 54, 277, 333, 332, 331, - 54, 330, 329, 282, 283, 270, 284, 328, 326, 289, - 273, 54, 275, 54, 274, 54, 286, 54, 285, 276, - 287, 54, 54, 288, 277, 265, 265, 265, 265, 281, - 282, 291, 283, 284, 290, 54, 54, 289, 54, 295, - 295, 295, 295, 286, 54, 296, 285, 299, 287, 297, - - 300, 288, 304, 54, 298, 54, 324, 323, 319, 291, - 305, 318, 290, 314, 54, 313, 54, 54, 307, 54, - 54, 309, 306, 296, 311, 299, 297, 308, 300, 54, - 304, 298, 295, 295, 295, 295, 303, 312, 305, 54, - 302, 54, 310, 310, 310, 310, 307, 54, 316, 301, - 306, 322, 311, 310, 310, 310, 310, 315, 317, 293, - 292, 279, 54, 325, 54, 312, 320, 320, 320, 320, - 278, 321, 54, 54, 56, 49, 316, 54, 263, 322, - 320, 320, 320, 320, 54, 317, 262, 246, 245, 243, - 219, 325, 218, 177, 176, 129, 370, 357, 321, 49, - - 49, 49, 49, 49, 52, 52, 52, 56, 56, 56, - 56, 56, 230, 356, 230, 230, 347, 337, 54, 327, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 266, 54, 229, 250, 249, 225, 54, 54, 54, 54, - 229, 227, 226, 225, 224, 223, 222, 54, 54, 54, - 54, 54, 54, 192, 191, 190, 189, 188, 187, 186, - 185, 184, 183, 169, 54, 139, 138, 133, 132, 131, - 130, 54, 47, 119, 110, 54, 71, 55, 48, 47, - 371, 3, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371 + 42, 43, 44, 27, 27, 27, 27, 27, 45, 4, + 46, 47, 48, 49, 53, 49, 56, 56, 56, 56, + 63, 65, 382, 66, 66, 66, 66, 69, 69, 69, + + 69, 70, 71, 133, 72, 72, 72, 72, 75, 51, + 67, 75, 76, 77, 49, 68, 49, 73, 70, 71, + 57, 72, 72, 72, 72, 53, 63, 381, 145, 54, + 133, 134, 64, 90, 73, 74, 146, 78, 67, 79, + 380, 191, 68, 91, 57, 73, 80, 81, 82, 379, + 58, 59, 60, 378, 83, 84, 92, 85, 86, 134, + 87, 192, 73, 74, 57, 88, 147, 57, 64, 191, + 54, 91, 57, 95, 58, 59, 60, 148, 98, 377, + 93, 96, 233, 92, 94, 57, 260, 89, 192, 376, + 57, 293, 88, 375, 58, 59, 60, 58, 59, 60, + + 95, 57, 58, 59, 60, 99, 57, 99, 93, 97, + 233, 277, 94, 260, 307, 58, 59, 60, 293, 57, + 58, 59, 60, 100, 100, 100, 100, 102, 374, 55, + 57, 58, 59, 60, 98, 103, 58, 59, 60, 277, + 101, 104, 307, 106, 106, 106, 106, 105, 373, 58, + 59, 60, 57, 372, 371, 102, 368, 57, 367, 108, + 58, 59, 60, 103, 366, 109, 365, 364, 101, 107, + 57, 363, 362, 111, 105, 112, 361, 57, 113, 113, + 113, 113, 58, 59, 60, 359, 110, 58, 59, 60, + 358, 55, 109, 89, 91, 55, 107, 55, 88, 97, + + 58, 59, 60, 357, 114, 57, 356, 58, 59, 60, + 355, 101, 57, 107, 354, 57, 353, 352, 117, 351, + 118, 57, 91, 349, 57, 88, 348, 119, 57, 347, + 346, 115, 121, 345, 344, 58, 59, 60, 343, 101, + 107, 102, 58, 59, 60, 58, 59, 60, 342, 103, + 341, 58, 59, 60, 58, 59, 60, 339, 58, 59, + 60, 105, 110, 337, 52, 336, 57, 52, 109, 102, + 57, 332, 115, 57, 52, 52, 57, 103, 331, 327, + 57, 326, 120, 322, 56, 56, 56, 56, 105, 122, + 321, 315, 124, 314, 306, 109, 58, 59, 60, 123, + + 58, 59, 60, 58, 59, 60, 58, 59, 60, 52, + 58, 59, 60, 52, 305, 292, 62, 52, 57, 62, + 69, 69, 69, 69, 52, 291, 62, 62, 52, 62, + 52, 129, 71, 52, 66, 66, 66, 66, 69, 69, + 69, 69, 136, 136, 136, 136, 276, 73, 58, 59, + 60, 135, 275, 137, 137, 137, 137, 151, 259, 258, + 256, 62, 232, 231, 190, 62, 135, 188, 140, 62, + 383, 57, 370, 369, 360, 73, 62, 350, 340, 135, + 62, 154, 62, 132, 70, 71, 152, 72, 72, 72, + 72, 138, 155, 138, 135, 152, 139, 139, 139, 139, + + 73, 58, 59, 60, 57, 279, 153, 242, 57, 154, + 263, 262, 238, 156, 152, 158, 242, 57, 176, 176, + 176, 176, 240, 152, 57, 239, 157, 57, 73, 238, + 237, 236, 57, 235, 58, 59, 60, 55, 58, 59, + 60, 156, 158, 159, 126, 205, 57, 58, 59, 60, + 57, 161, 183, 157, 58, 59, 60, 58, 59, 60, + 160, 204, 58, 59, 60, 203, 202, 57, 201, 162, + 159, 200, 164, 57, 163, 199, 58, 59, 60, 161, + 58, 59, 60, 57, 198, 197, 196, 160, 57, 164, + 189, 55, 57, 187, 126, 180, 163, 58, 59, 60, + + 164, 163, 150, 58, 59, 60, 166, 149, 167, 57, + 144, 178, 143, 58, 59, 60, 57, 164, 58, 59, + 60, 57, 58, 59, 60, 100, 100, 100, 100, 165, + 168, 169, 142, 166, 141, 167, 57, 170, 179, 58, + 59, 60, 57, 171, 131, 57, 58, 59, 60, 57, + 130, 58, 59, 60, 55, 172, 50, 168, 169, 57, + 106, 106, 106, 106, 175, 173, 58, 59, 60, 57, + 174, 128, 58, 59, 60, 58, 59, 60, 57, 58, + 59, 60, 172, 113, 113, 113, 113, 127, 57, 58, + 59, 60, 175, 126, 57, 174, 125, 174, 116, 58, + + 59, 60, 179, 57, 77, 61, 51, 57, 58, 59, + 60, 113, 113, 113, 113, 177, 50, 57, 58, 59, + 60, 384, 174, 57, 58, 59, 60, 384, 384, 179, + 152, 384, 57, 58, 59, 60, 151, 58, 59, 60, + 384, 384, 163, 186, 384, 57, 384, 58, 59, 60, + 384, 384, 57, 58, 59, 60, 57, 384, 152, 57, + 384, 384, 58, 59, 60, 179, 384, 384, 384, 181, + 57, 174, 384, 384, 182, 58, 59, 60, 153, 57, + 171, 384, 58, 59, 60, 384, 58, 59, 60, 58, + 59, 60, 185, 184, 137, 137, 137, 137, 174, 384, + + 58, 59, 60, 139, 139, 139, 139, 135, 57, 58, + 59, 60, 193, 57, 193, 384, 57, 194, 194, 194, + 194, 195, 207, 384, 136, 136, 136, 136, 139, 139, + 139, 139, 206, 208, 384, 135, 384, 209, 58, 59, + 60, 57, 384, 58, 59, 60, 58, 59, 60, 384, + 57, 210, 384, 57, 384, 384, 384, 57, 384, 384, + 206, 208, 216, 211, 384, 209, 384, 57, 212, 384, + 384, 58, 59, 60, 57, 384, 384, 384, 210, 57, + 58, 59, 60, 58, 59, 60, 57, 58, 59, 60, + 216, 211, 384, 213, 57, 212, 214, 58, 59, 60, + + 57, 215, 384, 57, 58, 59, 60, 384, 57, 58, + 59, 60, 217, 217, 217, 217, 58, 59, 60, 219, + 213, 218, 57, 215, 58, 59, 60, 220, 215, 57, + 58, 59, 60, 58, 59, 60, 57, 221, 58, 59, + 60, 153, 57, 194, 194, 194, 194, 219, 57, 218, + 222, 57, 58, 59, 60, 384, 57, 384, 384, 58, + 59, 60, 57, 384, 221, 384, 58, 59, 60, 384, + 384, 384, 58, 59, 60, 223, 384, 222, 58, 59, + 60, 58, 59, 60, 57, 229, 58, 59, 60, 226, + 384, 384, 58, 59, 60, 176, 176, 176, 176, 177, + + 227, 224, 223, 224, 384, 57, 225, 225, 225, 225, + 57, 215, 220, 57, 58, 59, 60, 227, 57, 384, + 153, 57, 194, 194, 194, 194, 57, 384, 227, 234, + 234, 234, 234, 227, 384, 58, 59, 60, 228, 384, + 58, 59, 60, 58, 59, 60, 57, 384, 58, 59, + 60, 58, 59, 60, 57, 241, 58, 59, 60, 57, + 244, 226, 384, 384, 248, 230, 384, 57, 217, 217, + 217, 217, 57, 245, 384, 384, 58, 59, 60, 247, + 246, 57, 241, 384, 58, 59, 60, 244, 57, 58, + 59, 60, 248, 250, 57, 384, 384, 58, 59, 60, + + 57, 245, 58, 59, 60, 57, 249, 247, 246, 384, + 57, 58, 59, 60, 57, 384, 384, 384, 58, 59, + 60, 251, 251, 384, 58, 59, 60, 252, 57, 384, + 58, 59, 60, 57, 249, 58, 59, 60, 384, 57, + 58, 59, 60, 57, 58, 59, 60, 384, 384, 253, + 251, 384, 384, 384, 252, 57, 254, 384, 58, 59, + 60, 57, 255, 58, 59, 60, 384, 257, 384, 58, + 59, 60, 57, 58, 59, 60, 253, 225, 225, 225, + 225, 384, 384, 254, 251, 58, 59, 60, 255, 255, + 384, 58, 59, 60, 225, 225, 225, 225, 57, 264, + + 384, 384, 58, 59, 60, 57, 384, 384, 57, 384, + 384, 384, 250, 384, 384, 255, 234, 234, 234, 234, + 384, 57, 271, 384, 261, 384, 266, 264, 58, 59, + 60, 384, 57, 384, 265, 58, 59, 60, 58, 59, + 60, 57, 267, 384, 261, 384, 384, 57, 384, 271, + 384, 58, 59, 60, 266, 268, 384, 270, 384, 57, + 384, 265, 58, 59, 60, 384, 272, 57, 269, 384, + 267, 58, 59, 60, 57, 384, 271, 58, 59, 60, + 57, 273, 268, 57, 384, 270, 57, 384, 384, 58, + 59, 60, 57, 384, 272, 269, 384, 58, 59, 60, + + 274, 384, 57, 271, 58, 59, 60, 384, 57, 273, + 58, 59, 60, 58, 59, 60, 58, 59, 60, 280, + 384, 281, 58, 59, 60, 57, 384, 274, 278, 278, + 278, 278, 58, 59, 60, 384, 57, 384, 58, 59, + 60, 384, 282, 284, 384, 57, 283, 280, 384, 281, + 384, 285, 384, 384, 57, 58, 59, 60, 57, 278, + 278, 278, 278, 294, 286, 57, 58, 59, 60, 282, + 57, 284, 287, 283, 57, 58, 59, 60, 384, 285, + 57, 288, 384, 384, 58, 59, 60, 57, 58, 59, + 60, 286, 384, 384, 384, 58, 59, 60, 384, 287, + + 58, 59, 60, 290, 58, 59, 60, 289, 288, 295, + 58, 59, 60, 296, 384, 57, 298, 58, 59, 60, + 384, 57, 301, 384, 57, 308, 308, 308, 308, 384, + 57, 290, 297, 57, 289, 384, 295, 384, 384, 57, + 300, 296, 384, 57, 298, 58, 59, 60, 309, 384, + 301, 58, 59, 60, 58, 59, 60, 384, 57, 297, + 58, 59, 60, 58, 59, 60, 299, 57, 300, 58, + 59, 60, 57, 58, 59, 60, 309, 302, 304, 57, + 303, 384, 57, 384, 384, 57, 384, 384, 58, 59, + 60, 384, 57, 299, 384, 57, 384, 58, 59, 60, + + 57, 310, 58, 59, 60, 302, 304, 57, 303, 58, + 59, 60, 58, 59, 60, 58, 59, 60, 312, 57, + 384, 311, 58, 59, 60, 58, 59, 60, 310, 57, + 58, 59, 60, 57, 384, 384, 57, 58, 59, 60, + 57, 313, 323, 323, 323, 323, 312, 57, 311, 58, + 59, 60, 308, 308, 308, 308, 316, 317, 57, 58, + 59, 60, 384, 58, 59, 60, 58, 59, 60, 313, + 58, 59, 60, 318, 384, 57, 384, 58, 59, 60, + 319, 320, 57, 384, 384, 317, 384, 324, 58, 59, + 60, 325, 57, 333, 333, 333, 333, 57, 384, 384, + + 384, 318, 384, 384, 57, 58, 59, 60, 319, 320, + 57, 384, 58, 59, 60, 324, 57, 384, 384, 325, + 384, 384, 58, 59, 60, 384, 384, 58, 59, 60, + 329, 57, 330, 384, 58, 59, 60, 334, 57, 335, + 58, 59, 60, 57, 338, 384, 58, 59, 60, 323, + 323, 323, 323, 328, 384, 57, 384, 384, 329, 330, + 57, 58, 59, 60, 334, 57, 384, 335, 58, 59, + 60, 57, 338, 58, 59, 60, 333, 333, 333, 333, + 384, 384, 384, 384, 384, 58, 59, 60, 384, 384, + 58, 59, 60, 384, 384, 58, 59, 60, 384, 384, + + 384, 58, 59, 60, 52, 52, 52, 52, 52, 55, + 55, 55, 62, 62, 62, 62, 62, 243, 384, 243, + 243, 3, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384 } ; -static const flex_int16_t yy_chk[1062] = +static const flex_int16_t yy_chk[1806] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -833,126 +921,208 @@ static const flex_int16_t yy_chk[1062] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 8, 5, 9, 9, 9, 9, 11, 13, 440, 13, - 13, 13, 13, 14, 14, 14, 14, 15, 15, 26, - - 15, 15, 15, 15, 16, 16, 13, 16, 16, 16, - 16, 13, 23, 15, 17, 17, 9, 18, 18, 18, - 16, 49, 439, 23, 26, 8, 22, 26, 11, 56, - 46, 15, 46, 20, 13, 20, 22, 37, 13, 23, - 438, 15, 20, 20, 20, 61, 80, 21, 16, 21, - 20, 20, 24, 20, 21, 25, 24, 22, 28, 15, - 80, 21, 37, 115, 22, 37, 49, 25, 32, 115, - 28, 56, 61, 24, 32, 44, 21, 62, 36, 32, - 24, 21, 25, 39, 24, 28, 29, 29, 29, 29, - 30, 31, 31, 31, 31, 32, 38, 44, 30, 36, - - 39, 32, 54, 29, 30, 62, 36, 35, 38, 171, - 30, 39, 35, 40, 84, 30, 171, 31, 30, 35, - 29, 40, 33, 38, 33, 31, 30, 33, 33, 33, - 33, 29, 35, 40, 35, 43, 42, 30, 40, 35, - 41, 40, 42, 43, 31, 77, 84, 42, 41, 40, - 87, 122, 144, 33, 40, 51, 77, 87, 51, 41, - 40, 33, 43, 42, 54, 51, 51, 41, 54, 42, - 54, 53, 53, 53, 53, 58, 437, 87, 58, 122, - 33, 59, 59, 59, 59, 58, 58, 60, 111, 60, - 60, 60, 60, 63, 63, 63, 63, 144, 436, 76, - - 51, 111, 60, 81, 51, 53, 63, 76, 51, 64, - 64, 64, 64, 435, 434, 51, 118, 114, 433, 51, - 58, 51, 51, 81, 58, 81, 82, 118, 58, 173, - 60, 81, 114, 432, 63, 58, 173, 431, 114, 58, - 83, 58, 58, 65, 65, 65, 65, 66, 66, 82, - 66, 66, 66, 66, 82, 89, 65, 85, 103, 67, - 86, 67, 83, 66, 67, 67, 67, 67, 83, 159, - 85, 88, 86, 430, 90, 91, 85, 89, 88, 92, - 93, 429, 103, 89, 65, 85, 103, 86, 90, 91, - 159, 66, 94, 94, 94, 94, 94, 85, 88, 92, - - 93, 90, 91, 95, 96, 95, 97, 92, 93, 98, - 99, 100, 100, 100, 100, 98, 96, 104, 95, 428, - 97, 98, 102, 108, 99, 104, 94, 102, 108, 427, - 95, 96, 95, 97, 145, 102, 123, 99, 105, 105, - 105, 105, 112, 172, 104, 100, 106, 106, 106, 106, - 108, 145, 113, 178, 102, 107, 107, 107, 107, 107, - 109, 116, 145, 123, 112, 109, 113, 117, 426, 116, - 112, 125, 117, 425, 125, 125, 125, 125, 424, 113, - 106, 178, 423, 116, 172, 220, 422, 109, 116, 107, - 112, 124, 148, 124, 117, 143, 124, 124, 124, 124, - - 126, 126, 126, 126, 127, 127, 127, 127, 128, 128, - 128, 128, 220, 126, 146, 148, 143, 150, 146, 147, - 148, 149, 151, 143, 150, 147, 152, 149, 153, 151, - 155, 162, 247, 152, 154, 154, 154, 154, 156, 421, - 161, 126, 146, 420, 150, 153, 147, 264, 149, 151, - 164, 155, 162, 152, 161, 156, 153, 163, 155, 164, - 247, 167, 168, 163, 193, 174, 156, 161, 165, 165, - 165, 165, 165, 166, 264, 166, 193, 164, 166, 166, - 166, 166, 167, 168, 163, 170, 174, 196, 175, 167, - 168, 193, 170, 174, 175, 180, 180, 180, 180, 181, - - 181, 181, 181, 182, 182, 182, 182, 195, 196, 198, - 197, 199, 170, 200, 419, 196, 217, 200, 418, 195, - 203, 201, 202, 204, 204, 204, 204, 206, 199, 417, - 198, 210, 203, 206, 195, 197, 210, 198, 197, 199, - 280, 200, 201, 202, 231, 213, 214, 203, 215, 201, - 202, 231, 416, 228, 206, 213, 214, 217, 210, 211, - 211, 211, 211, 212, 212, 212, 212, 232, 280, 215, - 233, 231, 213, 214, 234, 228, 215, 221, 221, 221, - 221, 228, 235, 236, 415, 221, 234, 233, 232, 237, - 239, 414, 238, 241, 235, 232, 242, 413, 233, 237, - - 236, 234, 238, 251, 242, 221, 252, 239, 255, 235, - 252, 236, 412, 411, 241, 256, 237, 253, 239, 238, - 251, 241, 410, 242, 248, 248, 248, 248, 254, 253, - 255, 251, 409, 257, 252, 259, 255, 258, 256, 257, - 254, 259, 260, 256, 253, 258, 261, 408, 407, 406, - 260, 405, 404, 267, 268, 254, 270, 403, 402, 275, - 257, 275, 259, 270, 258, 267, 272, 261, 271, 260, - 273, 268, 272, 274, 261, 265, 265, 265, 265, 265, - 267, 277, 268, 270, 276, 271, 276, 275, 273, 281, - 281, 281, 281, 272, 274, 282, 271, 288, 273, 283, - - 291, 274, 297, 277, 285, 283, 401, 400, 399, 277, - 298, 398, 276, 397, 282, 396, 285, 291, 300, 288, - 297, 395, 299, 282, 306, 288, 283, 394, 291, 298, - 297, 285, 295, 295, 295, 295, 295, 307, 298, 299, - 393, 300, 303, 303, 303, 303, 300, 306, 311, 392, - 299, 317, 306, 310, 310, 310, 310, 310, 312, 391, - 390, 389, 307, 321, 312, 307, 315, 315, 315, 315, - 388, 316, 317, 311, 387, 386, 311, 316, 385, 317, - 320, 320, 320, 320, 321, 312, 384, 383, 382, 381, - 379, 321, 378, 377, 376, 375, 369, 355, 316, 372, - - 372, 372, 372, 372, 373, 373, 373, 374, 374, 374, - 374, 374, 380, 354, 380, 380, 345, 335, 325, 324, - 322, 305, 304, 296, 290, 289, 287, 286, 284, 269, - 250, 240, 230, 227, 224, 222, 209, 208, 207, 205, - 194, 192, 191, 189, 186, 185, 184, 160, 158, 157, - 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, - 132, 131, 130, 110, 101, 79, 78, 75, 74, 73, - 72, 52, 47, 45, 34, 27, 19, 10, 7, 6, - 3, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 5, 8, 5, 9, 9, 9, 9, + 11, 13, 453, 13, 13, 13, 13, 14, 14, 14, + + 14, 15, 15, 67, 15, 15, 15, 15, 17, 17, + 13, 18, 18, 18, 49, 13, 49, 15, 16, 16, + 9, 16, 16, 16, 16, 52, 62, 452, 82, 8, + 67, 68, 11, 22, 16, 15, 82, 20, 13, 20, + 451, 133, 13, 22, 27, 15, 20, 20, 20, 450, + 9, 9, 9, 449, 20, 20, 23, 20, 21, 68, + 21, 134, 16, 15, 22, 21, 83, 23, 62, 133, + 52, 22, 21, 25, 27, 27, 27, 83, 28, 448, + 24, 26, 191, 23, 24, 25, 233, 21, 134, 447, + 28, 277, 21, 446, 22, 22, 22, 23, 23, 23, + + 25, 24, 21, 21, 21, 28, 26, 38, 24, 26, + 191, 260, 24, 233, 293, 25, 25, 25, 277, 38, + 28, 28, 28, 29, 29, 29, 29, 30, 445, 57, + 55, 24, 24, 24, 38, 30, 26, 26, 26, 260, + 29, 30, 293, 31, 31, 31, 31, 30, 444, 38, + 38, 38, 30, 443, 442, 30, 441, 29, 440, 32, + 55, 55, 55, 30, 439, 32, 438, 437, 29, 31, + 32, 436, 435, 33, 30, 33, 434, 31, 33, 33, + 33, 33, 30, 30, 30, 433, 32, 29, 29, 29, + 432, 57, 32, 35, 36, 57, 31, 57, 35, 37, + + 32, 32, 32, 431, 33, 35, 430, 31, 31, 31, + 429, 39, 33, 41, 428, 36, 427, 426, 35, 425, + 35, 41, 36, 424, 37, 35, 423, 37, 39, 422, + 421, 33, 41, 420, 419, 35, 35, 35, 418, 39, + 41, 40, 33, 33, 33, 36, 36, 36, 417, 40, + 416, 41, 41, 41, 37, 37, 37, 415, 39, 39, + 39, 40, 42, 414, 54, 413, 40, 54, 42, 40, + 44, 412, 43, 42, 54, 54, 107, 40, 411, 410, + 43, 409, 40, 408, 56, 56, 56, 56, 40, 42, + 407, 406, 44, 405, 404, 42, 40, 40, 40, 43, + + 44, 44, 44, 42, 42, 42, 107, 107, 107, 54, + 43, 43, 43, 54, 403, 402, 64, 54, 56, 64, + 65, 65, 65, 65, 54, 401, 64, 64, 54, 400, + 54, 54, 66, 399, 66, 66, 66, 66, 69, 69, + 69, 69, 70, 70, 70, 70, 398, 66, 56, 56, + 56, 69, 397, 71, 71, 71, 71, 86, 396, 395, + 394, 64, 392, 391, 390, 64, 71, 389, 388, 64, + 382, 86, 368, 367, 358, 66, 64, 348, 337, 69, + 64, 88, 64, 64, 72, 72, 87, 72, 72, 72, + 72, 73, 90, 73, 71, 89, 73, 73, 73, 73, + + 72, 86, 86, 86, 88, 263, 87, 243, 87, 88, + 240, 237, 235, 91, 87, 92, 207, 89, 111, 111, + 111, 111, 205, 89, 90, 204, 91, 92, 72, 202, + 199, 198, 91, 197, 88, 88, 88, 189, 87, 87, + 87, 91, 92, 93, 187, 150, 121, 89, 89, 89, + 93, 95, 121, 91, 90, 90, 90, 92, 92, 92, + 94, 149, 91, 91, 91, 148, 147, 94, 146, 96, + 93, 145, 98, 95, 97, 144, 121, 121, 121, 95, + 93, 93, 93, 96, 143, 142, 141, 94, 97, 99, + 131, 130, 98, 128, 127, 116, 96, 94, 94, 94, + + 98, 97, 85, 95, 95, 95, 101, 84, 101, 99, + 81, 114, 80, 96, 96, 96, 114, 99, 97, 97, + 97, 101, 98, 98, 98, 100, 100, 100, 100, 100, + 102, 103, 79, 101, 78, 101, 126, 104, 114, 99, + 99, 99, 102, 104, 60, 103, 114, 114, 114, 104, + 59, 101, 101, 101, 58, 105, 50, 102, 103, 100, + 106, 106, 106, 106, 109, 108, 126, 126, 126, 105, + 108, 48, 102, 102, 102, 103, 103, 103, 108, 104, + 104, 104, 105, 112, 112, 112, 112, 47, 109, 100, + 100, 100, 109, 46, 106, 110, 45, 108, 34, 105, + + 105, 105, 115, 110, 19, 10, 7, 115, 108, 108, + 108, 113, 113, 113, 113, 113, 6, 112, 109, 109, + 109, 3, 110, 117, 106, 106, 106, 0, 0, 115, + 118, 0, 124, 110, 110, 110, 117, 115, 115, 115, + 0, 0, 119, 124, 0, 113, 0, 112, 112, 112, + 0, 0, 118, 117, 117, 117, 119, 0, 118, 120, + 0, 0, 124, 124, 124, 123, 0, 0, 0, 119, + 123, 122, 0, 0, 120, 113, 113, 113, 118, 122, + 120, 0, 118, 118, 118, 0, 119, 119, 119, 120, + 120, 120, 123, 122, 137, 137, 137, 137, 122, 0, + + 123, 123, 123, 138, 138, 138, 138, 137, 151, 122, + 122, 122, 135, 152, 135, 0, 153, 135, 135, 135, + 135, 136, 155, 0, 136, 136, 136, 136, 139, 139, + 139, 139, 154, 156, 0, 137, 0, 157, 151, 151, + 151, 157, 0, 152, 152, 152, 153, 153, 153, 0, + 156, 158, 0, 154, 0, 0, 0, 158, 0, 0, + 154, 156, 164, 159, 0, 157, 0, 155, 160, 0, + 0, 157, 157, 157, 160, 0, 0, 0, 158, 164, + 156, 156, 156, 154, 154, 154, 159, 158, 158, 158, + 164, 159, 0, 161, 168, 160, 162, 155, 155, 155, + + 161, 163, 0, 162, 160, 160, 160, 0, 163, 164, + 164, 164, 165, 165, 165, 165, 159, 159, 159, 167, + 161, 166, 169, 162, 168, 168, 168, 170, 163, 171, + 161, 161, 161, 162, 162, 162, 167, 172, 163, 163, + 163, 173, 166, 193, 193, 193, 193, 167, 170, 166, + 174, 172, 169, 169, 169, 0, 174, 0, 0, 171, + 171, 171, 173, 0, 172, 0, 167, 167, 167, 0, + 0, 0, 166, 166, 166, 175, 0, 174, 170, 170, + 170, 172, 172, 172, 175, 183, 174, 174, 174, 178, + 0, 0, 173, 173, 173, 176, 176, 176, 176, 176, + + 179, 177, 175, 177, 0, 182, 177, 177, 177, 177, + 178, 181, 182, 184, 175, 175, 175, 178, 181, 0, + 184, 179, 194, 194, 194, 194, 183, 0, 179, 195, + 195, 195, 195, 185, 0, 182, 182, 182, 181, 0, + 178, 178, 178, 184, 184, 184, 218, 0, 181, 181, + 181, 179, 179, 179, 185, 206, 183, 183, 183, 186, + 208, 185, 0, 0, 212, 186, 0, 206, 217, 217, + 217, 217, 208, 209, 0, 0, 218, 218, 218, 211, + 210, 212, 206, 0, 185, 185, 185, 208, 220, 186, + 186, 186, 212, 214, 209, 0, 0, 206, 206, 206, + + 211, 209, 208, 208, 208, 210, 213, 211, 210, 0, + 213, 212, 212, 212, 214, 0, 0, 0, 220, 220, + 220, 214, 215, 0, 209, 209, 209, 216, 221, 0, + 211, 211, 211, 222, 213, 210, 210, 210, 0, 216, + 213, 213, 213, 215, 214, 214, 214, 0, 0, 219, + 215, 0, 0, 0, 216, 219, 223, 0, 221, 221, + 221, 223, 226, 222, 222, 222, 0, 230, 0, 216, + 216, 216, 226, 215, 215, 215, 219, 224, 224, 224, + 224, 0, 0, 223, 228, 219, 219, 219, 227, 226, + 0, 223, 223, 223, 225, 225, 225, 225, 227, 241, + + 0, 0, 226, 226, 226, 228, 0, 0, 230, 0, + 0, 0, 228, 0, 0, 227, 234, 234, 234, 234, + 0, 241, 250, 0, 234, 0, 245, 241, 227, 227, + 227, 0, 250, 0, 244, 228, 228, 228, 230, 230, + 230, 244, 246, 0, 234, 0, 0, 245, 0, 250, + 0, 241, 241, 241, 245, 247, 0, 249, 0, 246, + 0, 244, 250, 250, 250, 0, 252, 247, 248, 0, + 246, 244, 244, 244, 249, 0, 251, 245, 245, 245, + 248, 254, 247, 252, 0, 249, 251, 0, 0, 246, + 246, 246, 253, 0, 252, 248, 0, 247, 247, 247, + + 255, 0, 254, 251, 249, 249, 249, 0, 255, 254, + 248, 248, 248, 252, 252, 252, 251, 251, 251, 264, + 0, 265, 253, 253, 253, 265, 0, 255, 261, 261, + 261, 261, 254, 254, 254, 0, 264, 0, 255, 255, + 255, 0, 266, 268, 0, 282, 267, 264, 0, 265, + 0, 269, 0, 0, 266, 265, 265, 265, 267, 278, + 278, 278, 278, 278, 270, 268, 264, 264, 264, 266, + 270, 268, 271, 267, 269, 282, 282, 282, 0, 269, + 271, 272, 0, 0, 266, 266, 266, 272, 267, 267, + 267, 270, 0, 0, 0, 268, 268, 268, 0, 271, + + 270, 270, 270, 274, 269, 269, 269, 273, 272, 280, + 271, 271, 271, 281, 0, 273, 284, 272, 272, 272, + 0, 280, 287, 0, 274, 294, 294, 294, 294, 0, + 281, 274, 283, 284, 273, 0, 280, 0, 0, 283, + 286, 281, 0, 287, 284, 273, 273, 273, 295, 0, + 287, 280, 280, 280, 274, 274, 274, 0, 286, 283, + 281, 281, 281, 284, 284, 284, 285, 295, 286, 283, + 283, 283, 285, 287, 287, 287, 295, 288, 290, 288, + 289, 0, 289, 0, 0, 297, 0, 0, 286, 286, + 286, 0, 299, 285, 0, 300, 0, 295, 295, 295, + + 290, 296, 285, 285, 285, 288, 290, 296, 289, 288, + 288, 288, 289, 289, 289, 297, 297, 297, 301, 302, + 0, 298, 299, 299, 299, 300, 300, 300, 296, 303, + 290, 290, 290, 298, 0, 0, 309, 296, 296, 296, + 301, 304, 316, 316, 316, 316, 301, 317, 298, 302, + 302, 302, 308, 308, 308, 308, 308, 310, 304, 303, + 303, 303, 0, 298, 298, 298, 309, 309, 309, 304, + 301, 301, 301, 311, 0, 310, 0, 317, 317, 317, + 312, 313, 318, 0, 0, 310, 0, 319, 304, 304, + 304, 320, 311, 328, 328, 328, 328, 312, 0, 0, + + 0, 311, 0, 0, 313, 310, 310, 310, 312, 313, + 319, 0, 318, 318, 318, 319, 320, 0, 0, 320, + 0, 0, 311, 311, 311, 0, 0, 312, 312, 312, + 324, 335, 325, 0, 313, 313, 313, 329, 325, 330, + 319, 319, 319, 329, 334, 0, 320, 320, 320, 323, + 323, 323, 323, 323, 0, 324, 0, 0, 324, 325, + 330, 335, 335, 335, 329, 334, 0, 330, 325, 325, + 325, 338, 334, 329, 329, 329, 333, 333, 333, 333, + 0, 0, 0, 0, 0, 324, 324, 324, 0, 0, + 330, 330, 330, 0, 0, 334, 334, 334, 0, 0, + + 0, 338, 338, 338, 385, 385, 385, 385, 385, 386, + 386, 386, 387, 387, 387, 387, 387, 393, 0, 393, + 393, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, + + 384, 384, 384, 384, 384 } ; static const flex_int16_t yy_rule_linenum[61] = { 0, - 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 92 + 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 93 } ; /* The intent behind this definition is that it'll catch @@ -1420,13 +1590,13 @@ YY_DECL while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 372 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 371 ); + while ( yy_current_state != 384 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2044,7 +2214,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 372 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -2079,11 +2249,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 372 ) + if ( yy_current_state >= 385 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 371); + yy_is_jam = (yy_current_state == 384); (void)yyg; return yy_is_jam ? 0 : yy_current_state; diff --git a/src/realm/parser/query_flex.ll b/src/realm/parser/query_flex.ll index 77e83174508..e2a117d2fbd 100644 --- a/src/realm/parser/query_flex.ll +++ b/src/realm/parser/query_flex.ll @@ -17,6 +17,7 @@ unicode "\\u"{hex}{4} escape "\\"[\"\'/bfnrt0\\] char1 [^\"\\] char2 [^\'\\] +utf8 [\xC2-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3} letter [a-zA-Z_$] ws "\\"[ nrt] id_char [a-zA-Z_\-$0-9] @@ -87,7 +88,7 @@ blank [ \t\r] ("B64\""[a-zA-Z0-9/\+=]*\") return yy::parser::make_BASE64(yytext); (\"({char1}|{escape}|{unicode})*\") return yy::parser::make_STRING (yytext); ('({char2}|{escape}|{unicode})*') return yy::parser::make_STRING (yytext); -{letter}({id_char}|{ws})* return yy::parser::make_ID (check_escapes(yytext)); +({letter}|{utf8})({id_char}|{utf8}|{ws})* return yy::parser::make_ID (check_escapes(yytext)); . { throw yy::parser::syntax_error diff --git a/test/test_parser.cpp b/test/test_parser.cpp index f35b39744ce..59eed914168 100644 --- a/test/test_parser.cpp +++ b/test/test_parser.cpp @@ -94,6 +94,9 @@ static std::vector valid_queries = { "'\\uffFf' = '\\u0020'", "'\\u01111' = 'asdf\\u0111asdf'", + // utf8 + "你好=5", + // expressions (numbers, bools, keypaths, arguments) "-1 = 12", "0 = 001", @@ -4970,4 +4973,22 @@ TEST(Parser_ClassPrefix) } } +TEST(Parser_UTF8) +{ + Group g; + TableRef t = g.add_table("person"); + ColKey col_dk = t->add_column(type_Int, "løbenummer"); + ColKey col_ch = t->add_column(type_String, "姓名"); + + std::vector names = {"Billy", "Bob", "Joe", "Jake", "Joel"}; + for (size_t i = 0; i < names.size(); ++i) { + Obj obj = t->create_object(); + obj.set(col_dk, int64_t(i)); + obj.set(col_ch, StringData(names[i])); + } + + verify_query(test_context, t, "løbenummer > 2", 2); + verify_query(test_context, t, "姓名 == 'Bob'", 1); +} + #endif // TEST_PARSER