351 #define s_3_0 (s_3_1 + 2)
353 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84,
355 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84,
357 0xD9, 0x84, 0xD9, 0x84,
359 0xD8, 0xA3, 0xD8, 0xA2,
361 0xD8, 0xA3, 0xD8, 0xA3,
363 0xD8, 0xA3, 0xD8, 0xA4,
365 0xD8, 0xA3, 0xD8, 0xA5,
367 0xD8, 0xA3, 0xD8, 0xA7,
372 #define s_6_0 (s_6_1 + 2)
374 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84,
376 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84,
378 0xD9, 0x84, 0xD9, 0x84,
381 0xD8, 0xA8, 0xD8, 0xA7,
383 0xD8, 0xA8, 0xD8, 0xA8,
385 0xD9, 0x83, 0xD9, 0x83,
387 0xD8, 0xB3, 0xD8, 0xA3,
389 0xD8, 0xB3, 0xD8, 0xAA,
391 0xD8, 0xB3, 0xD9, 0x86,
393 0xD8, 0xB3, 0xD9, 0x8A,
395 0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA,
397 0xD9, 0x86, 0xD8, 0xB3, 0xD8, 0xAA,
399 0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA,
400 #define s_10_0 s_10_1
401 #define s_10_1 s_10_6
402 #define s_10_2 s_10_7
404 0xD9, 0x87, 0xD9, 0x86,
405 #define s_10_4 s_10_2
409 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7,
411 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7,
413 0xD9, 0x86, 0xD8, 0xA7,
415 0xD9, 0x87, 0xD8, 0xA7,
425 0xD8, 0xA7, 0xD8, 0xAA,
432 #define s_17_0 s_17_1
433 #define s_17_1 s_17_6
434 #define s_17_2 s_17_9
436 0xD9, 0x83, 0xD9, 0x86,
438 0xD9, 0x87, 0xD9, 0x86,
439 #define s_17_5 s_17_2
441 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88,
443 0xD9, 0x86, 0xD9, 0x8A,
445 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7,
447 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7,
449 0xD9, 0x86, 0xD8, 0xA7,
451 0xD9, 0x87, 0xD8, 0xA7,
452 #define s_18_0 (s_18_1 + 2)
454 0xD9, 0x88, 0xD9, 0x86,
456 0xD9, 0x8A, 0xD9, 0x86,
458 0xD8, 0xA7, 0xD9, 0x86,
460 0xD8, 0xAA, 0xD9, 0x86,
461 #define s_18_5 s_18_2
462 #define s_18_6 s_18_3
464 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7,
466 0xD9, 0x86, 0xD8, 0xA7,
468 0xD8, 0xAA, 0xD8, 0xA7,
469 #define s_18_10 s_18_4
471 0xD8, 0xAA, 0xD9, 0x85,
473 0xD9, 0x88, 0xD8, 0xA7,
474 #define s_20_0 (s_20_1 + 4)
476 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88,
482 static const struct among a_0[161] =
899 static const symbol s_65[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
910 if (!(among_var))
goto lab3;
915 if (ret < 0)
return ret;
920 if (ret < 0)
return ret;
925 if (ret < 0)
return ret;
930 if (ret < 0)
return ret;
935 if (ret < 0)
return ret;
940 if (ret < 0)
return ret;
945 if (ret < 0)
return ret;
950 if (ret < 0)
return ret;
955 if (ret < 0)
return ret;
960 if (ret < 0)
return ret;
965 if (ret < 0)
return ret;
970 if (ret < 0)
return ret;
975 if (ret < 0)
return ret;
980 if (ret < 0)
return ret;
985 if (ret < 0)
return ret;
990 if (ret < 0)
return ret;
995 if (ret < 0)
return ret;
1000 if (ret < 0)
return ret;
1005 if (ret < 0)
return ret;
1010 if (ret < 0)
return ret;
1015 if (ret < 0)
return ret;
1020 if (ret < 0)
return ret;
1025 if (ret < 0)
return ret;
1030 if (ret < 0)
return ret;
1035 if (ret < 0)
return ret;
1040 if (ret < 0)
return ret;
1045 if (ret < 0)
return ret;
1050 if (ret < 0)
return ret;
1055 if (ret < 0)
return ret;
1060 if (ret < 0)
return ret;
1065 if (ret < 0)
return ret;
1070 if (ret < 0)
return ret;
1075 if (ret < 0)
return ret;
1080 if (ret < 0)
return ret;
1085 if (ret < 0)
return ret;
1090 if (ret < 0)
return ret;
1095 if (ret < 0)
return ret;
1100 if (ret < 0)
return ret;
1105 if (ret < 0)
return ret;
1110 if (ret < 0)
return ret;
1115 if (ret < 0)
return ret;
1120 if (ret < 0)
return ret;
1125 if (ret < 0)
return ret;
1130 if (ret < 0)
return ret;
1135 if (ret < 0)
return ret;
1140 if (ret < 0)
return ret;
1145 if (ret < 0)
return ret;
1150 if (ret < 0)
return ret;
1155 if (ret < 0)
return ret;
1160 if (ret < 0)
return ret;
1165 if (ret < 0)
return ret;
1173 if (ret < 0)
goto lab1;
1194 if (c - 1 <= lb || p[c - 1] >> 5 != 5 || !((124 >> (p[c - 1] & 0x1f)) & 1))
goto lab0;
1195 if (!(find_among_b(
s_pool,
a_1, 5, 0, 0)))
goto lab0;
1197 {
int ret = slice_from_s(2,
s_50);
1198 if (ret < 0)
return ret;
1209 if (c + 1 >= l || p[c + 1] >> 5 != 5 || !((124 >> (p[c + 1] & 0x1f)) & 1))
goto lab4;
1210 among_var = find_among(
s_pool,
a_2, 5, 0, 0);
1211 if (!(among_var))
goto lab4;
1213 switch (among_var) {
1215 {
int ret = slice_from_s(2,
s_51);
1216 if (ret < 0)
return ret;
1220 {
int ret = slice_from_s(2,
s_52);
1221 if (ret < 0)
return ret;
1225 {
int ret = slice_from_s(2,
s_53);
1226 if (ret < 0)
return ret;
1233 {
int ret = skip_utf8(p, c, 0, l, 1);
1234 if (ret < 0)
goto lab2;
1252 if (c + 3 >= l || (p[c + 3] != 132 && p[c + 3] != 167))
return 0;
1253 among_var = find_among(
s_pool,
a_3, 4, 0, 0);
1254 if (!(among_var))
return 0;
1256 switch (among_var) {
1258 if (!(len_utf8(p) > 4))
return 0;
1264 if (!(len_utf8(p) > 3))
return 0;
1276 if (c + 3 >= l || p[c + 3] >> 5 != 5 || !((188 >> (p[c + 3] & 0x1f)) & 1))
return 0;
1277 among_var = find_among(
s_pool,
a_4, 5, 0, 0);
1278 if (!(among_var))
return 0;
1280 switch (among_var) {
1282 if (!(len_utf8(p) > 3))
return 0;
1283 {
int ret = slice_from_s(2,
s_54);
1284 if (ret < 0)
return ret;
1288 if (!(len_utf8(p) > 3))
return 0;
1289 {
int ret = slice_from_s(2,
s_55);
1290 if (ret < 0)
return ret;
1294 if (!(len_utf8(p) > 3))
return 0;
1295 {
int ret = slice_from_s(2,
s_56);
1296 if (ret < 0)
return ret;
1300 if (!(len_utf8(p) > 3))
return 0;
1301 {
int ret = slice_from_s(2,
s_57);
1302 if (ret < 0)
return ret;
1311 if (c + 1 >= l || (p[c + 1] != 129 && p[c + 1] != 136))
return 0;
1312 if (!(find_among(
s_pool,
a_5, 2, 0, 0)))
return 0;
1314 if (!(len_utf8(p) > 3))
return 0;
1316 if (!(eq_s(2,
s_58)))
goto lab0;
1321 {
int ret = slice_del();
1322 if (ret < 0)
return ret;
1330 if (c + 3 >= l || (p[c + 3] != 132 && p[c + 3] != 167))
return 0;
1331 among_var = find_among(
s_pool,
a_6, 4, 0, 0);
1332 if (!(among_var))
return 0;
1334 switch (among_var) {
1336 if (!(len_utf8(p) > 5))
return 0;
1337 {
int ret = slice_del();
1338 if (ret < 0)
return ret;
1342 if (!(len_utf8(p) > 4))
return 0;
1343 {
int ret = slice_del();
1344 if (ret < 0)
return ret;
1354 if (c + 1 >= l || (p[c + 1] != 168 && p[c + 1] != 131))
return 0;
1355 among_var = find_among(
s_pool,
a_7, 4, 0, 0);
1356 if (!(among_var))
return 0;
1358 switch (among_var) {
1360 if (!(len_utf8(p) > 3))
return 0;
1361 {
int ret = slice_del();
1362 if (ret < 0)
return ret;
1366 if (!(len_utf8(p) > 3))
return 0;
1367 {
int ret = slice_from_s(2,
s_59);
1368 if (ret < 0)
return ret;
1372 if (!(len_utf8(p) > 3))
return 0;
1373 {
int ret = slice_from_s(2,
s_60);
1374 if (ret < 0)
return ret;
1384 among_var = find_among(
s_pool,
a_8, 4, 0, 0);
1385 if (!(among_var))
return 0;
1387 switch (among_var) {
1389 if (!(len_utf8(p) > 4))
return 0;
1390 {
int ret = slice_from_s(2,
s_61);
1391 if (ret < 0)
return ret;
1395 if (!(len_utf8(p) > 4))
return 0;
1396 {
int ret = slice_from_s(2,
s_62);
1397 if (ret < 0)
return ret;
1401 if (!(len_utf8(p) > 4))
return 0;
1402 {
int ret = slice_from_s(2,
s_63);
1403 if (ret < 0)
return ret;
1407 if (!(len_utf8(p) > 4))
return 0;
1408 {
int ret = slice_from_s(2,
s_64);
1409 if (ret < 0)
return ret;
1418 if (c + 5 >= l || p[c + 5] != 170)
return 0;
1419 if (!(find_among(
s_pool,
a_9, 3, 0, 0)))
return 0;
1421 if (!(len_utf8(p) > 4))
return 0;
1424 {
int ret = slice_from_s(6,
s_65);
1425 if (ret < 0)
return ret;
1433 among_var = find_among_b(
s_pool,
a_10, 10, 0, 0);
1434 if (!(among_var))
return 0;
1436 switch (among_var) {
1438 if (!(len_utf8(p) >= 4))
return 0;
1439 {
int ret = slice_del();
1440 if (ret < 0)
return ret;
1444 if (!(len_utf8(p) >= 5))
return 0;
1445 {
int ret = slice_del();
1446 if (ret < 0)
return ret;
1450 if (!(len_utf8(p) >= 6))
return 0;
1451 {
int ret = slice_del();
1452 if (ret < 0)
return ret;
1461 if (c - 1 <= lb || p[c - 1] != 134)
return 0;
1462 if (!(find_among_b(
s_pool,
a_11, 1, 0, 0)))
return 0;
1464 if (!(len_utf8(p) > 5))
return 0;
1465 {
int ret = slice_del();
1466 if (ret < 0)
return ret;
1473 if (!(find_among_b(
s_pool,
a_12, 3, 0, 0)))
return 0;
1475 if (!(len_utf8(p) > 4))
return 0;
1476 {
int ret = slice_del();
1477 if (ret < 0)
return ret;
1484 if (c - 3 <= lb || p[c - 1] != 170)
return 0;
1485 if (!(find_among_b(
s_pool,
a_13, 1, 0, 0)))
return 0;
1487 if (!(len_utf8(p) >= 5))
return 0;
1488 {
int ret = slice_del();
1489 if (ret < 0)
return ret;
1496 if (c - 1 <= lb || p[c - 1] != 170)
return 0;
1497 if (!(find_among_b(
s_pool,
a_14, 1, 0, 0)))
return 0;
1499 if (!(len_utf8(p) >= 4))
return 0;
1500 {
int ret = slice_del();
1501 if (ret < 0)
return ret;
1508 if (c - 1 <= lb || p[c - 1] != 169)
return 0;
1509 if (!(find_among_b(
s_pool,
a_15, 1, 0, 0)))
return 0;
1511 if (!(len_utf8(p) >= 4))
return 0;
1512 {
int ret = slice_del();
1513 if (ret < 0)
return ret;
1520 if (c - 1 <= lb || p[c - 1] != 138)
return 0;
1521 if (!(find_among_b(
s_pool,
a_16, 1, 0, 0)))
return 0;
1523 if (!(len_utf8(p) >= 3))
return 0;
1524 {
int ret = slice_del();
1525 if (ret < 0)
return ret;
1533 among_var = find_among_b(
s_pool,
a_17, 12, 0, 0);
1534 if (!(among_var))
return 0;
1536 switch (among_var) {
1538 if (!(len_utf8(p) >= 4))
return 0;
1539 {
int ret = slice_del();
1540 if (ret < 0)
return ret;
1544 if (!(len_utf8(p) >= 5))
return 0;
1545 {
int ret = slice_del();
1546 if (ret < 0)
return ret;
1550 if (!(len_utf8(p) >= 6))
return 0;
1551 {
int ret = slice_del();
1552 if (ret < 0)
return ret;
1562 among_var = find_among_b(
s_pool,
a_18, 11, 0, 0);
1563 if (!(among_var))
return 0;
1565 switch (among_var) {
1567 if (!(len_utf8(p) >= 4))
return 0;
1568 {
int ret = slice_del();
1569 if (ret < 0)
return ret;
1573 if (!(len_utf8(p) >= 5))
return 0;
1574 {
int ret = slice_del();
1575 if (ret < 0)
return ret;
1579 if (!(len_utf8(p) > 5))
return 0;
1580 {
int ret = slice_del();
1581 if (ret < 0)
return ret;
1585 if (!(len_utf8(p) >= 6))
return 0;
1586 {
int ret = slice_del();
1587 if (ret < 0)
return ret;
1596 if (c - 3 <= lb || (p[c - 1] != 133 && p[c - 1] != 167))
return 0;
1597 if (!(find_among_b(
s_pool,
a_19, 2, 0, 0)))
return 0;
1599 if (!(len_utf8(p) >= 5))
return 0;
1600 {
int ret = slice_del();
1601 if (ret < 0)
return ret;
1609 if (c - 1 <= lb || p[c - 1] != 136)
return 0;
1610 among_var = find_among_b(
s_pool,
a_20, 2, 0, 0);
1611 if (!(among_var))
return 0;
1613 switch (among_var) {
1615 if (!(len_utf8(p) >= 4))
return 0;
1616 {
int ret = slice_del();
1617 if (ret < 0)
return ret;
1621 if (!(len_utf8(p) >= 6))
return 0;
1622 {
int ret = slice_del();
1623 if (ret < 0)
return ret;
1632 if (c - 1 <= lb || p[c - 1] != 137)
return 0;
1633 if (!(find_among_b(
s_pool,
a_21, 1, 0, 0)))
return 0;
1635 {
int ret = slice_from_s(2,
s_66);
1636 if (ret < 0)
return ret;
1646 {
int ret = r_Checks1();
1647 if (ret < 0)
return ret;
1652 {
int ret = r_Normalize_pre();
1653 if (ret < 0)
return ret;
1657 {
int m2 = l - c; (void)m2;
1658 {
int m3 = l - c; (void)m3;
1659 if (!(I_is_verb))
goto lab2;
1660 {
int m4 = l - c; (void)m4;
1663 int m5 = l - c; (void)m5;
1664 {
int ret = r_Suffix_Verb_Step1();
1665 if (ret == 0)
goto lab5;
1666 if (ret < 0)
return ret;
1674 if (i > 0)
goto lab4;
1676 {
int m6 = l - c; (void)m6;
1677 {
int ret = r_Suffix_Verb_Step2a();
1678 if (ret == 0)
goto lab7;
1679 if (ret < 0)
return ret;
1684 {
int ret = r_Suffix_Verb_Step2c();
1685 if (ret == 0)
goto lab8;
1686 if (ret < 0)
return ret;
1691 {
int ret = skip_utf8(p, c, lb, 0, -1);
1692 if (ret < 0)
goto lab4;
1700 {
int ret = r_Suffix_Verb_Step2b();
1701 if (ret == 0)
goto lab9;
1702 if (ret < 0)
return ret;
1707 {
int ret = r_Suffix_Verb_Step2a();
1708 if (ret == 0)
goto lab2;
1709 if (ret < 0)
return ret;
1716 if (!(I_is_noun))
goto lab10;
1717 {
int m7 = l - c; (void)m7;
1718 {
int m8 = l - c; (void)m8;
1719 {
int ret = r_Suffix_Noun_Step2c2();
1720 if (ret == 0)
goto lab13;
1721 if (ret < 0)
return ret;
1727 if (!(I_is_defined))
goto lab15;
1730 {
int ret = r_Suffix_Noun_Step1a();
1731 if (ret == 0)
goto lab14;
1732 if (ret < 0)
return ret;
1734 {
int m9 = l - c; (void)m9;
1735 {
int ret = r_Suffix_Noun_Step2a();
1736 if (ret == 0)
goto lab17;
1737 if (ret < 0)
return ret;
1742 {
int ret = r_Suffix_Noun_Step2b();
1743 if (ret == 0)
goto lab18;
1744 if (ret < 0)
return ret;
1749 {
int ret = r_Suffix_Noun_Step2c1();
1750 if (ret == 0)
goto lab19;
1751 if (ret < 0)
return ret;
1756 {
int ret = skip_utf8(p, c, lb, 0, -1);
1757 if (ret < 0)
goto lab14;
1765 {
int ret = r_Suffix_Noun_Step1b();
1766 if (ret == 0)
goto lab20;
1767 if (ret < 0)
return ret;
1769 {
int m10 = l - c; (void)m10;
1770 {
int ret = r_Suffix_Noun_Step2a();
1771 if (ret == 0)
goto lab22;
1772 if (ret < 0)
return ret;
1777 {
int ret = r_Suffix_Noun_Step2b();
1778 if (ret == 0)
goto lab23;
1779 if (ret < 0)
return ret;
1784 {
int ret = r_Suffix_Noun_Step2c1();
1785 if (ret == 0)
goto lab20;
1786 if (ret < 0)
return ret;
1794 if (!(I_is_defined))
goto lab25;
1797 {
int ret = r_Suffix_Noun_Step2a();
1798 if (ret == 0)
goto lab24;
1799 if (ret < 0)
return ret;
1804 {
int ret = r_Suffix_Noun_Step2b();
1805 if (ret == 0) { c = l - m7;
goto lab11; }
1806 if (ret < 0)
return ret;
1813 {
int ret = r_Suffix_Noun_Step3();
1814 if (ret == 0)
goto lab10;
1815 if (ret < 0)
return ret;
1820 {
int ret = r_Suffix_All_alef_maqsura();
1821 if (ret == 0)
goto lab0;
1822 if (ret < 0)
return ret;
1832 {
int ret = r_Prefix_Step1();
1833 if (ret == 0) { c = c12;
goto lab27; }
1834 if (ret < 0)
return ret;
1840 {
int ret = r_Prefix_Step2();
1841 if (ret == 0) { c = c13;
goto lab28; }
1842 if (ret < 0)
return ret;
1848 {
int ret = r_Prefix_Step3a_Noun();
1849 if (ret == 0)
goto lab30;
1850 if (ret < 0)
return ret;
1855 if (!(I_is_noun))
goto lab31;
1856 {
int ret = r_Prefix_Step3b_Noun();
1857 if (ret == 0)
goto lab31;
1858 if (ret < 0)
return ret;
1863 if (!(I_is_verb))
goto lab26;
1865 {
int ret = r_Prefix_Step3_Verb();
1866 if (ret == 0) { c = c15;
goto lab32; }
1867 if (ret < 0)
return ret;
1872 {
int ret = r_Prefix_Step4_Verb();
1873 if (ret == 0)
goto lab26;
1874 if (ret < 0)
return ret;
1882 {
int ret = r_Normalize_post();
1883 if (ret < 0)
return ret;
1889 : I_is_defined(0), I_is_verb(0), I_is_noun(0)
static const struct among a_2[5]
static const symbol s_25[]
static const symbol s_2[]
static const symbol s_60[]
static const struct among a_7[4]
static const symbol s_55[]
static const struct among a_11[1]
static const symbol s_52[]
static const symbol s_4[]
static const symbol s_48[]
static const struct among a_8[4]
static const symbol s_50[]
static const struct among a_19[2]
static const symbol s_61[]
static const symbol s_42[]
static const symbol s_65[]
static const symbol s_30[]
static const symbol s_38[]
static const symbol s_29[]
static const symbol s_53[]
static const symbol s_27[]
static const struct among a_6[4]
static const struct among a_10[10]
static const struct among a_3[4]
static const symbol s_51[]
static const symbol s_6[]
static const symbol s_21[]
static const symbol s_3[]
static const struct among a_13[1]
static const symbol s_37[]
static const symbol s_49[]
static const struct among a_5[2]
static const symbol s_7[]
static const symbol s_59[]
static const symbol s_32[]
static const symbol s_47[]
static const symbol s_13[]
static const symbol s_20[]
static const struct among a_17[12]
static const symbol s_35[]
static const symbol s_19[]
static const symbol s_23[]
static const struct among a_20[2]
static const symbol s_58[]
static const symbol s_24[]
static const struct among a_1[5]
static const symbol s_63[]
static const struct among a_16[1]
static const struct among a_18[11]
static const symbol s_16[]
static const struct among a_0[161]
static const symbol s_14[]
static const struct among a_4[5]
static const struct among a_15[1]
static const symbol s_22[]
static const struct among a_9[3]
static const symbol s_45[]
static const symbol s_10[]
static const symbol s_1[]
static const symbol s_66[]
static const symbol s_39[]
static const symbol s_31[]
static const symbol s_11[]
static const symbol s_12[]
static const symbol s_36[]
static const symbol s_33[]
static const symbol s_57[]
static const symbol s_41[]
static const struct among a_21[1]
static const symbol s_pool[]
static const symbol s_64[]
static const symbol s_18[]
static const symbol s_17[]
static const symbol s_40[]
static const symbol s_44[]
static const symbol s_54[]
static const symbol s_43[]
static const symbol s_28[]
static const symbol s_46[]
static const struct among a_14[1]
static const symbol s_62[]
static const symbol s_56[]
static const symbol s_8[]
static const symbol s_9[]
static const struct among a_12[3]
static const symbol s_5[]
static const symbol s_15[]
static const symbol s_26[]
static const symbol s_0[]
static const symbol s_34[]
int stem()
Virtual method implemented by the subclass to actually do the work.
int r_Suffix_Noun_Step2c1()
int r_Suffix_Noun_Step3()
int r_Suffix_Noun_Step2c2()
int r_Suffix_Noun_Step1a()
int r_Prefix_Step3b_Noun()
int r_Prefix_Step4_Verb()
std::string get_description() const
Return a string describing this object.
int r_Suffix_Verb_Step2b()
int r_Prefix_Step3_Verb()
int r_Suffix_Noun_Step2b()
int r_Suffix_Noun_Step2a()
int r_Suffix_Noun_Step1b()
int r_Suffix_All_alef_maqsura()
int r_Prefix_Step3a_Noun()
int r_Suffix_Verb_Step1()
int r_Suffix_Verb_Step2c()
int r_Suffix_Verb_Step2a()
int slice_from_s(int s_size, const symbol *s)
int find_among(const symbol *pool, const struct among *v, int v_size, const unsigned char *fnum, const among_function *f)
static int skip_utf8(const symbol *p, int c, int lb, int l, int n)