19 #define s_1_0 (s_1_1 + 2)
25 #define s_1_5 (s_1_6 + 2)
27 #define s_1_7 (s_1_8 + 2)
29 's',
'e',
'l',
'a',
's',
32 #define s_1_10 (s_1_11 + 2)
34 's',
'e',
'l',
'o',
's',
40 'i',
'e',
'n',
'd',
'o',
42 'y',
'e',
'n',
'd',
'o',
44 0xC3, 0xA1,
'n',
'd',
'o',
46 'i', 0xC3, 0xA9,
'n',
'd',
'o',
92 #define s_6_13 (s_6_14 + 1)
94 'a',
'm',
'e',
'n',
't',
'e',
96 'a',
'c',
'i', 0xC3, 0xB3,
'n',
98 'u',
'c',
'i', 0xC3, 0xB3,
'n',
100 #define s_6_18 s_6_41
101 #define s_6_19 s_6_42
102 #define s_6_20 s_6_43
103 #define s_6_21 s_6_44
104 #define s_6_22 s_6_45
109 'a',
'n',
'c',
'i',
'a',
's',
111 'e',
'n',
'c',
'i',
'a',
's',
113 'a',
'd',
'o',
'r',
'a',
's',
117 'i',
's',
't',
'a',
's',
121 'a',
'n',
'z',
'a',
's',
123 'l',
'o',
'g', 0xC3, 0xAD,
'a',
's',
125 'i',
'd',
'a',
'd',
'e',
's',
127 'a',
'b',
'l',
'e',
's',
129 'i',
'b',
'l',
'e',
's',
131 'a',
'c',
'i',
'o',
'n',
'e',
's',
133 'u',
'c',
'i',
'o',
'n',
'e',
's',
135 'a',
'd',
'o',
'r',
'e',
's',
137 'a',
'n',
't',
'e',
's',
141 'i',
's',
'm',
'o',
's',
145 'a',
'm',
'i',
'e',
'n',
't',
'o',
's',
147 'i',
'm',
'i',
'e',
'n',
't',
'o',
's',
156 'y',
'e',
'r',
'o',
'n',
158 'y',
'e',
'n',
'd',
'o',
168 'y',
'a',
'm',
'o',
's',
176 #define s_8_5 (s_8_6 + 2)
184 #define s_8_12 s_8_25
185 #define s_8_13 s_8_26
186 #define s_8_14 s_8_61
187 #define s_8_15 s_8_62
188 #define s_8_16 (s_8_17 + 2)
194 'i',
'e',
'r',
'a',
'n',
195 #define s_8_20 (s_8_21 + 2)
197 'a',
'r', 0xC3, 0xAD,
'a',
'n',
199 'e',
'r', 0xC3, 0xAD,
'a',
'n',
201 'i',
'r', 0xC3, 0xAD,
'a',
'n',
202 #define s_8_24 (s_8_25 + 2)
206 'i',
'e',
's',
'e',
'n',
210 'i',
'e',
'r',
'o',
'n',
212 'a',
'r', 0xC3, 0xA1,
'n',
214 'e',
'r', 0xC3, 0xA1,
'n',
216 'i',
'r', 0xC3, 0xA1,
'n',
217 #define s_8_32 s_8_68
218 #define s_8_33 s_8_69
222 'i',
'e',
'n',
'd',
'o',
224 #define s_8_37 (s_8_4 + 1)
226 #define s_8_39 s_8_12
236 'i',
'e',
'r',
'a',
's',
237 #define s_8_45 (s_8_46 + 2)
239 'a',
'r', 0xC3, 0xAD,
'a',
's',
241 'e',
'r', 0xC3, 0xAD,
'a',
's',
243 'i',
'r', 0xC3, 0xAD,
'a',
's',
244 #define s_8_49 (s_8_13 + 1)
248 'i',
'e',
's',
'e',
's',
250 'a',
'b',
'a',
'i',
's',
252 'a',
'r',
'a',
'i',
's',
254 'i',
'e',
'r',
'a',
'i',
's',
255 #define s_8_55 (s_8_56 + 2)
257 'a',
'r', 0xC3, 0xAD,
'a',
'i',
's',
259 'e',
'r', 0xC3, 0xAD,
'a',
'i',
's',
261 'i',
'r', 0xC3, 0xAD,
'a',
'i',
's',
263 'a',
's',
'e',
'i',
's',
265 'i',
'e',
's',
'e',
'i',
's',
267 'a',
's',
't',
'e',
'i',
's',
269 'i',
's',
't',
'e',
'i',
's',
271 0xC3, 0xA1,
'i',
's',
272 #define s_8_64 (s_8_65 + 2)
274 'a',
'r', 0xC3, 0xA9,
'i',
's',
276 'e',
'r', 0xC3, 0xA9,
'i',
's',
278 'i',
'r', 0xC3, 0xA9,
'i',
's',
283 #define s_8_70 (s_8_71 + 3)
285 0xC3, 0xA1,
'b',
'a',
'm',
'o',
's',
287 0xC3, 0xA1,
'r',
'a',
'm',
'o',
's',
289 'i', 0xC3, 0xA9,
'r',
'a',
'm',
'o',
's',
290 #define s_8_74 (s_8_75 + 2)
292 'a',
'r', 0xC3, 0xAD,
'a',
'm',
'o',
's',
294 'e',
'r', 0xC3, 0xAD,
'a',
'm',
'o',
's',
296 'i',
'r', 0xC3, 0xAD,
'a',
'm',
'o',
's',
297 #define s_8_78 (s_8_79 + 2)
299 'a',
'r',
'e',
'm',
'o',
's',
301 'e',
'r',
'e',
'm',
'o',
's',
303 'i',
'r',
'e',
'm',
'o',
's',
305 0xC3, 0xA1,
's',
'e',
'm',
'o',
's',
307 'i', 0xC3, 0xA9,
's',
'e',
'm',
'o',
's',
311 'a',
'r', 0xC3, 0xA1,
's',
313 'e',
'r', 0xC3, 0xA1,
's',
315 'i',
'r', 0xC3, 0xA1,
's',
318 #define s_8_89 s_8_29
319 #define s_8_90 s_8_30
320 #define s_8_91 s_8_31
321 #define s_8_92 s_8_65
322 #define s_8_93 s_8_66
323 #define s_8_94 s_8_67
595 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 };
602 static const symbol s_5[] = {
'i',
'e',
'n',
'd',
'o' };
625 if (ret < 0)
goto lab4;
634 if (ret < 0)
goto lab2;
647 if (ret < 0)
goto lab6;
655 if (ret < 0)
goto lab0;
670 if (ret < 0)
goto lab7;
675 if (ret < 0)
goto lab7;
681 if (ret < 0)
goto lab7;
686 if (ret < 0)
goto lab7;
701 if (c + 1 >= l || p[c + 1] >> 5 != 5 || !((67641858 >> (p[c + 1] & 0x1f)) & 1)) among_var = 6;
else
702 among_var = find_among(
s_pool,
a_0, 6, 0, 0);
703 if (!(among_var))
goto lab0;
707 {
int ret = slice_from_s(1,
s_0);
708 if (ret < 0)
return ret;
712 {
int ret = slice_from_s(1,
s_1);
713 if (ret < 0)
return ret;
717 {
int ret = slice_from_s(1,
s_2);
718 if (ret < 0)
return ret;
722 {
int ret = slice_from_s(1,
s_3);
723 if (ret < 0)
return ret;
727 {
int ret = slice_from_s(1,
s_4);
728 if (ret < 0)
return ret;
732 {
int ret = skip_utf8(p, c, 0, l, 1);
733 if (ret < 0)
goto lab0;
747 if (!(I_pV <= c))
return 0;
752 if (!(I_p1 <= c))
return 0;
757 if (!(I_p2 <= c))
return 0;
764 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((557090 >> (p[c - 1] & 0x1f)) & 1))
return 0;
765 if (!(find_among_b(
s_pool,
a_1, 13, 0, 0)))
return 0;
767 if (c - 1 <= lb || (p[c - 1] != 111 && p[c - 1] != 114))
return 0;
768 among_var = find_among_b(
s_pool,
a_2, 11, 0, 0);
769 if (!(among_var))
return 0;
771 if (ret <= 0)
return ret;
776 {
int ret = slice_from_s(5,
s_5);
777 if (ret < 0)
return ret;
782 {
int ret = slice_from_s(4,
s_6);
783 if (ret < 0)
return ret;
788 {
int ret = slice_from_s(2,
s_7);
789 if (ret < 0)
return ret;
794 {
int ret = slice_from_s(2,
s_8);
795 if (ret < 0)
return ret;
800 {
int ret = slice_from_s(2,
s_9);
801 if (ret < 0)
return ret;
805 {
int ret = slice_del();
806 if (ret < 0)
return ret;
810 if (c <= lb || p[c - 1] !=
'u')
return 0;
812 {
int ret = slice_del();
813 if (ret < 0)
return ret;
823 if (c - 2 <= lb || p[c - 1] >> 5 != 3 || !((835634 >> (p[c - 1] & 0x1f)) & 1))
return 0;
824 among_var = find_among_b(
s_pool,
a_6, 46, 0, 0);
825 if (!(among_var))
return 0;
830 if (ret <= 0)
return ret;
832 {
int ret = slice_del();
833 if (ret < 0)
return ret;
838 if (ret <= 0)
return ret;
840 {
int ret = slice_del();
841 if (ret < 0)
return ret;
843 {
int m1 = l - c; (void)m1;
845 if (!(eq_s_b(2,
s_10))) { c = l - m1;
goto lab0; }
848 if (ret == 0) { c = l - m1;
goto lab0; }
849 if (ret < 0)
return ret;
851 {
int ret = slice_del();
852 if (ret < 0)
return ret;
860 if (ret <= 0)
return ret;
862 {
int ret = slice_from_s(3,
s_11);
863 if (ret < 0)
return ret;
868 if (ret <= 0)
return ret;
870 {
int ret = slice_from_s(1,
s_12);
871 if (ret < 0)
return ret;
876 if (ret <= 0)
return ret;
878 {
int ret = slice_from_s(4,
s_13);
879 if (ret < 0)
return ret;
884 if (ret <= 0)
return ret;
886 {
int ret = slice_del();
887 if (ret < 0)
return ret;
889 {
int m2 = l - c; (void)m2;
891 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4718616 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m2;
goto lab1; }
892 among_var = find_among_b(
s_pool,
a_3, 4, 0, 0);
893 if (!(among_var)) { c = l - m2;
goto lab1; }
896 if (ret == 0) { c = l - m2;
goto lab1; }
897 if (ret < 0)
return ret;
899 {
int ret = slice_del();
900 if (ret < 0)
return ret;
905 if (!(eq_s_b(2,
s_14))) { c = l - m2;
goto lab1; }
908 if (ret == 0) { c = l - m2;
goto lab1; }
909 if (ret < 0)
return ret;
911 {
int ret = slice_del();
912 if (ret < 0)
return ret;
922 if (ret <= 0)
return ret;
924 {
int ret = slice_del();
925 if (ret < 0)
return ret;
927 {
int m3 = l - c; (void)m3;
929 if (c - 3 <= lb || p[c - 1] != 101) { c = l - m3;
goto lab2; }
930 if (!(find_among_b(
s_pool,
a_4, 3, 0, 0))) { c = l - m3;
goto lab2; }
933 if (ret == 0) { c = l - m3;
goto lab2; }
934 if (ret < 0)
return ret;
936 {
int ret = slice_del();
937 if (ret < 0)
return ret;
945 if (ret <= 0)
return ret;
947 {
int ret = slice_del();
948 if (ret < 0)
return ret;
950 {
int m4 = l - c; (void)m4;
952 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((4198408 >> (p[c - 1] & 0x1f)) & 1)) { c = l - m4;
goto lab3; }
953 if (!(find_among_b(
s_pool,
a_5, 3, 0, 0))) { c = l - m4;
goto lab3; }
956 if (ret == 0) { c = l - m4;
goto lab3; }
957 if (ret < 0)
return ret;
959 {
int ret = slice_del();
960 if (ret < 0)
return ret;
968 if (ret <= 0)
return ret;
970 {
int ret = slice_del();
971 if (ret < 0)
return ret;
973 {
int m5 = l - c; (void)m5;
975 if (!(eq_s_b(2,
s_15))) { c = l - m5;
goto lab4; }
978 if (ret == 0) { c = l - m5;
goto lab4; }
979 if (ret < 0)
return ret;
981 {
int ret = slice_del();
982 if (ret < 0)
return ret;
995 if (c < I_pV)
return 0;
996 mlimit1 = lb; lb = I_pV;
998 if (!(find_among_b(
s_pool,
a_7, 12, 0, 0))) { lb = mlimit1;
return 0; }
1002 if (c <= lb || p[c - 1] !=
'u')
return 0;
1004 {
int ret = slice_del();
1005 if (ret < 0)
return ret;
1014 if (c < I_pV)
return 0;
1015 mlimit1 = lb; lb = I_pV;
1017 among_var = find_among_b(
s_pool,
a_8, 96, 0, 0);
1018 if (!(among_var)) { lb = mlimit1;
return 0; }
1022 switch (among_var) {
1024 {
int m2 = l - c; (void)m2;
1025 if (c <= lb || p[c - 1] !=
'u') { c = l - m2;
goto lab0; }
1027 {
int m_test3 = l - c;
1028 if (c <= lb || p[c - 1] !=
'g') { c = l - m2;
goto lab0; }
1036 {
int ret = slice_del();
1037 if (ret < 0)
return ret;
1041 {
int ret = slice_del();
1042 if (ret < 0)
return ret;
1052 among_var = find_among_b(
s_pool,
a_9, 8, 0, 0);
1053 if (!(among_var))
return 0;
1055 switch (among_var) {
1058 if (ret <= 0)
return ret;
1060 {
int ret = slice_del();
1061 if (ret < 0)
return ret;
1066 if (ret <= 0)
return ret;
1068 {
int ret = slice_del();
1069 if (ret < 0)
return ret;
1071 {
int m1 = l - c; (void)m1;
1073 if (c <= lb || p[c - 1] !=
'u') { c = l - m1;
goto lab0; }
1076 {
int m_test2 = l - c;
1077 if (c <= lb || p[c - 1] !=
'g') { c = l - m1;
goto lab0; }
1082 if (ret == 0) { c = l - m1;
goto lab0; }
1083 if (ret < 0)
return ret;
1085 {
int ret = slice_del();
1086 if (ret < 0)
return ret;
1098 {
int ret = r_mark_regions();
1099 if (ret < 0)
return ret;
1103 {
int m1 = l - c; (void)m1;
1104 {
int ret = r_attached_pronoun();
1105 if (ret < 0)
return ret;
1109 {
int m2 = l - c; (void)m2;
1110 {
int m3 = l - c; (void)m3;
1111 {
int ret = r_standard_suffix();
1112 if (ret == 0)
goto lab2;
1113 if (ret < 0)
return ret;
1118 {
int ret = r_y_verb_suffix();
1119 if (ret == 0)
goto lab3;
1120 if (ret < 0)
return ret;
1125 {
int ret = r_verb_suffix();
1126 if (ret == 0)
goto lab0;
1127 if (ret < 0)
return ret;
1134 {
int m4 = l - c; (void)m4;
1135 {
int ret = r_residual_suffix();
1136 if (ret < 0)
return ret;
1142 {
int ret = r_postlude();
1143 if (ret < 0)
return ret;
1151 : I_p2(0), I_p1(0), I_pV(0)
int stem()
Virtual method implemented by the subclass to actually do the work.
std::string get_description() const
Return a string describing this object.
int out_grouping_U(const unsigned char *s, int min, int max, int repeat)
int in_grouping_U(const unsigned char *s, int min, int max, int repeat)
static int skip_utf8(const symbol *p, int c, int lb, int l, int n)
static const symbol s_2[]
static const symbol s_4[]
static const struct among a_4[3]
static const struct among a_6[46]
static const struct among a_3[4]
static const symbol s_6[]
static const symbol s_3[]
static const symbol s_7[]
static const symbol s_13[]
static const struct among a_7[12]
static const symbol s_14[]
static const struct among a_5[3]
static const symbol s_10[]
static const struct among a_9[8]
static const symbol s_1[]
static const struct among a_0[6]
static const struct among a_2[11]
static const struct among a_1[13]
static const symbol s_11[]
static const symbol s_12[]
static const struct among a_8[96]
static const symbol s_pool[]
static const unsigned char g_v[]
static const symbol s_8[]
static const symbol s_9[]
static const symbol s_5[]
static const symbol s_15[]
static const symbol s_0[]