27 #define s_1_5 (s_1_6 + 1)
34 #define s_2_2 (s_2_3 + 1)
111 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 };
136 if (!(
eq_s(2,
s_0)))
goto lab2;
139 if (ret < 0)
return ret;
145 if (ret < 0)
goto lab0;
164 if (
c ==
l ||
p[
c] !=
'u')
goto lab6;
169 if (ret < 0)
return ret;
174 if (
c ==
l ||
p[
c] !=
'y')
goto lab4;
179 if (ret < 0)
return ret;
188 if (ret < 0)
goto lab3;
204 {
int ret = skip_utf8(p, c, 0, l, + 3);
205 if (ret < 0)
return 0;
212 int ret = out_grouping_U(
g_v, 97, 252, 1);
213 if (ret < 0)
return 0;
217 int ret = in_grouping_U(
g_v, 97, 252, 1);
218 if (ret < 0)
return 0;
223 if (!(I_p1 < I_x))
goto lab0;
227 int ret = out_grouping_U(
g_v, 97, 252, 1);
228 if (ret < 0)
return 0;
232 int ret = in_grouping_U(
g_v, 97, 252, 1);
233 if (ret < 0)
return 0;
245 among_var = find_among(
s_pool,
a_0, 6, 0, 0);
246 if (!(among_var))
goto lab0;
250 {
int ret = slice_from_s(1,
s_4);
251 if (ret < 0)
return ret;
255 {
int ret = slice_from_s(1,
s_5);
256 if (ret < 0)
return ret;
260 {
int ret = slice_from_s(1,
s_6);
261 if (ret < 0)
return ret;
265 {
int ret = slice_from_s(1,
s_7);
266 if (ret < 0)
return ret;
270 {
int ret = skip_utf8(p, c, 0, l, 1);
271 if (ret < 0)
goto lab0;
285 if (!(I_p1 <= c))
return 0;
290 if (!(I_p2 <= c))
return 0;
296 {
int m1 = l - c; (void)m1;
298 if (c <= lb || p[c - 1] >> 5 != 3 || !((811040 >> (p[c - 1] & 0x1f)) & 1))
goto lab0;
299 among_var = find_among_b(
s_pool,
a_1, 7, 0, 0);
300 if (!(among_var))
goto lab0;
303 if (ret == 0)
goto lab0;
304 if (ret < 0)
return ret;
308 {
int ret = slice_del();
309 if (ret < 0)
return ret;
313 {
int ret = slice_del();
314 if (ret < 0)
return ret;
316 {
int m2 = l - c; (void)m2;
318 if (c <= lb || p[c - 1] !=
's') { c = l - m2;
goto lab1; }
321 if (!(eq_s_b(3,
s_8))) { c = l - m2;
goto lab1; }
322 {
int ret = slice_del();
323 if (ret < 0)
return ret;
330 if (in_grouping_b_U(
g_s_ending, 98, 116, 0))
goto lab0;
331 {
int ret = slice_del();
332 if (ret < 0)
return ret;
339 {
int m3 = l - c; (void)m3;
341 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1327104 >> (p[c - 1] & 0x1f)) & 1))
goto lab2;
342 among_var = find_among_b(
s_pool,
a_2, 4, 0, 0);
343 if (!(among_var))
goto lab2;
346 if (ret == 0)
goto lab2;
347 if (ret < 0)
return ret;
351 {
int ret = slice_del();
352 if (ret < 0)
return ret;
356 if (in_grouping_b_U(
g_st_ending, 98, 116, 0))
goto lab2;
357 {
int ret = skip_utf8(p, c, lb, l, - 3);
358 if (ret < 0)
goto lab2;
361 {
int ret = slice_del();
362 if (ret < 0)
return ret;
369 {
int m4 = l - c; (void)m4;
371 if (c - 1 <= lb || p[c - 1] >> 5 != 3 || !((1051024 >> (p[c - 1] & 0x1f)) & 1))
goto lab3;
372 among_var = find_among_b(
s_pool,
a_4, 8, 0, 0);
373 if (!(among_var))
goto lab3;
376 if (ret == 0)
goto lab3;
377 if (ret < 0)
return ret;
381 {
int ret = slice_del();
382 if (ret < 0)
return ret;
384 {
int m5 = l - c; (void)m5;
386 if (!(eq_s_b(2,
s_9))) { c = l - m5;
goto lab4; }
388 {
int m6 = l - c; (void)m6;
389 if (c <= lb || p[c - 1] !=
'e')
goto lab5;
391 { c = l - m5;
goto lab4; }
396 if (ret == 0) { c = l - m5;
goto lab4; }
397 if (ret < 0)
return ret;
399 {
int ret = slice_del();
400 if (ret < 0)
return ret;
407 {
int m7 = l - c; (void)m7;
408 if (c <= lb || p[c - 1] !=
'e')
goto lab6;
414 {
int ret = slice_del();
415 if (ret < 0)
return ret;
419 {
int ret = slice_del();
420 if (ret < 0)
return ret;
422 {
int m8 = l - c; (void)m8;
424 {
int m9 = l - c; (void)m9;
425 if (!(eq_s_b(2,
s_10)))
goto lab9;
429 if (!(eq_s_b(2,
s_11))) { c = l - m8;
goto lab7; }
434 if (ret == 0) { c = l - m8;
goto lab7; }
435 if (ret < 0)
return ret;
437 {
int ret = slice_del();
438 if (ret < 0)
return ret;
445 {
int ret = slice_del();
446 if (ret < 0)
return ret;
448 {
int m10 = l - c; (void)m10;
450 if (c - 1 <= lb || (p[c - 1] != 103 && p[c - 1] != 104)) { c = l - m10;
goto lab10; }
451 if (!(find_among_b(
s_pool,
a_3, 2, 0, 0))) { c = l - m10;
goto lab10; }
454 if (ret == 0) { c = l - m10;
goto lab10; }
455 if (ret < 0)
return ret;
457 {
int ret = slice_del();
458 if (ret < 0)
return ret;
473 {
int ret = r_prelude();
474 if (ret < 0)
return ret;
479 {
int ret = r_mark_regions();
480 if (ret < 0)
return ret;
487 {
int ret = r_standard_suffix();
488 if (ret < 0)
return ret;
492 {
int ret = r_postlude();
493 if (ret < 0)
return ret;
501 : I_x(0), I_p2(0), I_p1(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 eq_s(int s_size, const symbol *s)
int in_grouping_U(const unsigned char *s, int min, int max, int repeat)
int slice_from_s(int s_size, const symbol *s)
static int skip_utf8(const symbol *p, int c, int lb, int l, int n)
static const symbol s_2[]
static const struct among a_3[2]
static const symbol s_4[]
static const struct among a_1[7]
static const unsigned char g_st_ending[]
static const symbol s_6[]
static const symbol s_3[]
static const symbol s_7[]
static const struct among a_4[8]
static const symbol s_10[]
static const struct among a_2[4]
static const symbol s_1[]
static const struct among a_0[6]
static const symbol s_11[]
static const symbol s_pool[]
static const unsigned char g_v[]
static const unsigned char g_s_ending[]
static const symbol s_8[]
static const symbol s_9[]
static const symbol s_5[]
static const symbol s_0[]