8 #define s_0_0 (s_0_1 + 2)
11 'e',
't',
'h',
'e',
'd',
13 #define s_0_3 (s_0_0 + 1)
15 'e',
'r',
'e',
'd',
'e',
16 #define s_0_5 (s_0_6 + 2)
26 'h',
'e',
'd',
'e',
'r',
29 #define s_0_16 (s_0_17 + 3)
32 #define s_0_18 (s_0_19 + 3)
33 #define s_0_19 (s_0_20 + 2)
35 'e',
'r',
'e',
'n',
'd',
'e',
's',
39 'e',
'r',
'n',
'e',
's',
42 #define s_0_24 (s_0_25 + 3)
44 'h',
'e',
'd',
'e',
'n',
's',
46 'e',
'r',
'e',
'n',
's',
49 #define s_0_28 (s_0_29 + 2)
51 'e',
'r',
'e',
't',
's',
62 #define s_2_0 (s_2_1 + 1)
63 #define s_2_1 (s_2_2 + 1)
69 'l', 0xC3, 0xB8,
's',
't',
128 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
130 static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 };
140 if (ret < 0)
return 0;
148 if (ret < 0)
return 0;
153 if (ret < 0)
return 0;
168 if (c < I_p1)
return 0;
169 mlimit1 = lb; lb = I_p1;
171 if (c <= lb || p[c - 1] >> 5 != 3 || !((1851440 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit1;
return 0; }
172 among_var = find_among_b(
s_pool,
a_0, 32, 0, 0);
173 if (!(among_var)) { lb = mlimit1;
return 0; }
179 {
int ret = slice_del();
180 if (ret < 0)
return ret;
184 if (in_grouping_b_U(
g_s_ending, 97, 229, 0))
return 0;
185 {
int ret = slice_del();
186 if (ret < 0)
return ret;
194 {
int m_test1 = l - c;
197 if (c < I_p1)
return 0;
198 mlimit2 = lb; lb = I_p1;
200 if (c - 1 <= lb || (p[c - 1] != 100 && p[c - 1] != 116)) { lb = mlimit2;
return 0; }
201 if (!(find_among_b(
s_pool,
a_1, 4, 0, 0))) { lb = mlimit2;
return 0; }
207 {
int ret = skip_utf8(p, c, lb, 0, -1);
208 if (ret < 0)
return 0;
212 {
int ret = slice_del();
213 if (ret < 0)
return ret;
220 {
int m1 = l - c; (void)m1;
222 if (!(eq_s_b(2,
s_0)))
goto lab0;
224 if (!(eq_s_b(2,
s_1)))
goto lab0;
225 {
int ret = slice_del();
226 if (ret < 0)
return ret;
233 if (c < I_p1)
return 0;
234 mlimit2 = lb; lb = I_p1;
236 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1572992 >> (p[c - 1] & 0x1f)) & 1)) { lb = mlimit2;
return 0; }
237 among_var = find_among_b(
s_pool,
a_2, 5, 0, 0);
238 if (!(among_var)) { lb = mlimit2;
return 0; }
244 {
int ret = slice_del();
245 if (ret < 0)
return ret;
247 {
int m3 = l - c; (void)m3;
248 {
int ret = r_consonant_pair();
249 if (ret < 0)
return ret;
255 {
int ret = slice_from_s(4,
s_2);
256 if (ret < 0)
return ret;
266 if (c < I_p1)
return 0;
267 mlimit1 = lb; lb = I_p1;
269 if (out_grouping_b_U(
g_v, 97, 248, 0)) { lb = mlimit1;
return 0; }
271 {
symbol * ret = slice_to(S_ch);
272 if (ret == 0)
return -1;
277 if (!(eq_v_b(S_ch)))
return 0;
278 {
int ret = slice_del();
279 if (ret < 0)
return ret;
286 {
int ret = r_mark_regions();
287 if (ret < 0)
return ret;
293 {
int m2 = l - c; (void)m2;
294 {
int ret = r_main_suffix();
295 if (ret < 0)
return ret;
299 {
int m3 = l - c; (void)m3;
300 {
int ret = r_consonant_pair();
301 if (ret < 0)
return ret;
305 {
int m4 = l - c; (void)m4;
306 {
int ret = r_other_suffix();
307 if (ret < 0)
return ret;
311 {
int m5 = l - c; (void)m5;
312 {
int ret = r_undouble();
313 if (ret < 0)
return ret;
322 : I_x(0), I_p1(0), S_ch(0)
std::string get_description() const
Return a string describing this object.
int stem()
Virtual method implemented by the subclass to actually do the work.
static symbol * create_s()
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 struct among a_2[5]
static const symbol s_2[]
static const struct among a_0[32]
static const struct among a_1[4]
static const symbol s_1[]
static const symbol s_pool[]
static const unsigned char g_v[]
static const unsigned char g_s_ending[]
static const symbol s_0[]