20 using Among = SF.Snowball.Among;
22 namespace SF.Snowball.Ext
24 #pragma warning disable 162,164
33 private void InitBlock()
35 a_0 =
new Among[]{
new Among(
"\u00D7\u00DB\u00C9", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D7\u00DB\u00C9", 0, 2,
"",
this),
new Among(
"\u00D9\u00D7\u00DB\u00C9", 0, 2,
"",
this),
new Among(
"\u00D7", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D7", 3, 2,
"",
this),
new Among(
"\u00D9\u00D7", 3, 2,
"",
this),
new Among(
"\u00D7\u00DB\u00C9\u00D3\u00D8", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D7\u00DB\u00C9\u00D3\u00D8", 6, 2,
"",
this),
new Among(
"\u00D9\u00D7\u00DB\u00C9\u00D3\u00D8", 6, 2,
"",
this)};
36 a_1 =
new Among[]{
new Among(
"\u00C0\u00C0", - 1, 1,
"",
this),
new Among(
"\u00C5\u00C0", - 1, 1,
"",
this),
new Among(
"\u00CF\u00C0", - 1, 1,
"",
this),
new Among(
"\u00D5\u00C0", - 1, 1,
"",
this),
new Among(
"\u00C5\u00C5", - 1, 1,
"",
this),
new Among(
"\u00C9\u00C5", - 1, 1,
"",
this),
new Among(
"\u00CF\u00C5", - 1, 1,
"",
this),
new Among(
"\u00D9\u00C5", - 1, 1,
"",
this),
new Among(
"\u00C9\u00C8", - 1, 1,
"",
this),
new Among(
"\u00D9\u00C8", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CD\u00C9", - 1, 1,
"",
this),
new Among(
"\u00D9\u00CD\u00C9", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CA", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CA", - 1, 1,
"",
this),
new Among(
"\u00CF\u00CA", - 1, 1,
"",
this),
new Among(
"\u00D9\u00CA", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CD", - 1, 1,
"",
this),
new Among(
"\u00CF\u00CD", - 1, 1,
"",
this),
new Among(
"\u00D9\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C5\u00C7\u00CF", - 1, 1,
"",
this),
new Among(
"\u00CF\u00C7\u00CF", - 1, 1,
"",
this),
new Among(
"\u00C1\u00D1", - 1, 1,
"",
this),
new Among(
"\u00D1\u00D1", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CD\u00D5", - 1, 1,
"",
this),
new Among(
"\u00CF\u00CD\u00D5", - 1, 1,
"",
this)};
37 a_2 =
new Among[]{
new Among(
"\u00C5\u00CD", - 1, 1,
"",
this),
new Among(
"\u00CE\u00CE", - 1, 1,
"",
this),
new Among(
"\u00D7\u00DB", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D7\u00DB", 2, 2,
"",
this),
new Among(
"\u00D9\u00D7\u00DB", 2, 2,
"",
this),
new Among(
"\u00DD", - 1, 1,
"",
this),
new Among(
"\u00C0\u00DD", 5, 1,
"",
this),
new Among(
"\u00D5\u00C0\u00DD", 6, 2,
"",
this)};
38 a_3 =
new Among[]{
new Among(
"\u00D3\u00D1", - 1, 1,
"",
this),
new Among(
"\u00D3\u00D8", - 1, 1,
"",
this)};
39 a_4 =
new Among[]{
new Among(
"\u00C0", - 1, 2,
"",
this),
new Among(
"\u00D5\u00C0", 0, 2,
"",
this),
new Among(
"\u00CC\u00C1", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CC\u00C1", 2, 2,
"",
this),
new Among(
"\u00D9\u00CC\u00C1", 2, 2,
"",
this),
new Among(
"\u00CE\u00C1", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CE\u00C1", 5, 2,
"",
this),
new Among(
"\u00C5\u00D4\u00C5", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D4\u00C5", - 1, 2,
"",
this),
new Among(
"\u00CA\u00D4\u00C5", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CA\u00D4\u00C5", 9, 2,
"",
this),
new Among(
"\u00D5\u00CA\u00D4\u00C5", 9, 2,
"",
this),
new Among(
"\u00CC\u00C9", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CC\u00C9", 12, 2,
"",
this),
new Among(
"\u00D9\u00CC\u00C9", 12, 2,
"",
this),
new Among(
"\u00CA", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CA", 15, 2,
"",
this),
new Among(
"\u00D5\u00CA", 15, 2,
"",
this),
new Among(
"\u00CC", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CC", 18, 2,
"",
this),
new Among(
"\u00D9\u00CC", 18, 2,
"",
this),
new Among(
"\u00C5\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CD", - 1, 2,
"",
this),
new Among(
"\u00D9\u00CD", - 1, 2,
"",
this),
new Among(
"\u00CE", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CE", 24, 2,
"",
this),
new Among(
"\u00CC\u00CF", - 1, 1,
"",
this),
new Among(
"\u00C9\u00CC\u00CF", 26, 2,
"",
this),
new Among(
"\u00D9\u00CC\u00CF", 26, 2,
"",
this),
new Among(
"\u00CE\u00CF", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CE\u00CF", 29, 2,
"",
this),
new Among(
"\u00CE\u00CE\u00CF", 29, 1,
"",
this),
new Among(
"\u00C0\u00D4", - 1, 1,
"",
this),
new Among(
"\u00D5\u00C0\u00D4", 32, 2,
"",
this),
new Among(
"\u00C5\u00D4", - 1, 1,
"",
this),
new Among(
"\u00D5\u00C5\u00D4", 34, 2,
"",
this),
new Among(
"\u00C9\u00D4", - 1, 2,
"",
this),
new Among(
"\u00D1\u00D4", - 1, 2,
"",
this),
new Among(
"\u00D9\u00D4", - 1, 2,
"",
this),
new Among(
"\u00D4\u00D8", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D4\u00D8", 39, 2,
"",
this),
new Among(
"\u00D9\u00D4\u00D8", 39, 2,
"",
this),
new Among(
"\u00C5\u00DB\u00D8", - 1, 1,
"",
this),
40 new Among(
"\u00C9\u00DB\u00D8", - 1, 2,
"",
this),
new Among(
"\u00CE\u00D9", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CE\u00D9", 44, 2,
"",
this)};
41 a_5 =
new Among[]{
new Among(
"\u00C0", - 1, 1,
"",
this),
new Among(
"\u00C9\u00C0", 0, 1,
"",
this),
new Among(
"\u00D8\u00C0", 0, 1,
"",
this),
new Among(
"\u00C1", - 1, 1,
"",
this),
new Among(
"\u00C5", - 1, 1,
"",
this),
new Among(
"\u00C9\u00C5", 4, 1,
"",
this),
new Among(
"\u00D8\u00C5", 4, 1,
"",
this),
new Among(
"\u00C1\u00C8", - 1, 1,
"",
this),
new Among(
"\u00D1\u00C8", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D1\u00C8", 8, 1,
"",
this),
new Among(
"\u00C9", - 1, 1,
"",
this),
new Among(
"\u00C5\u00C9", 10, 1,
"",
this),
new Among(
"\u00C9\u00C9", 10, 1,
"",
this),
new Among(
"\u00C1\u00CD\u00C9", 10, 1,
"",
this),
new Among(
"\u00D1\u00CD\u00C9", 10, 1,
"",
this),
new Among(
"\u00C9\u00D1\u00CD\u00C9", 14, 1,
"",
this),
new Among(
"\u00CA", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CA", 16, 1,
"",
this),
new Among(
"\u00C9\u00C5\u00CA", 17, 1,
"",
this),
new Among(
"\u00C9\u00CA", 16, 1,
"",
this),
new Among(
"\u00CF\u00CA", 16, 1,
"",
this),
new Among(
"\u00C1\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C5\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C9\u00C5\u00CD", 22, 1,
"",
this),
new Among(
"\u00CF\u00CD", - 1, 1,
"",
this),
new Among(
"\u00D1\u00CD", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D1\u00CD", 25, 1,
"",
this),
new Among(
"\u00CF", - 1, 1,
"",
this),
new Among(
"\u00D1", - 1, 1,
"",
this),
new Among(
"\u00C9\u00D1", 28, 1,
"",
this),
new Among(
"\u00D8\u00D1", 28, 1,
"",
this),
new Among(
"\u00D5", - 1, 1,
"",
this),
new Among(
"\u00C5\u00D7", - 1, 1,
"",
this),
new Among(
"\u00CF\u00D7", - 1, 1,
"",
this),
new Among(
"\u00D8", - 1, 1,
"",
this),
new Among(
"\u00D9", - 1, 1,
"",
this)};
42 a_6 =
new Among[]{
new Among(
"\u00CF\u00D3\u00D4", - 1, 1,
"",
this),
new Among(
"\u00CF\u00D3\u00D4\u00D8", - 1, 1,
"",
this)};
43 a_7 =
new Among[]{
new Among(
"\u00C5\u00CA\u00DB\u00C5", - 1, 1,
"",
this),
new Among(
"\u00CE", - 1, 2,
"",
this),
new Among(
"\u00D8", - 1, 3,
"",
this),
new Among(
"\u00C5\u00CA\u00DB", - 1, 1,
"",
this)};
54 private static readonly
char[] g_v =
new char[]{(char) (35), (char) (130), (char) (34), (char) (18)};
59 protected internal virtual void copy_from(RussianStemmer other)
63 base.copy_from(other);
66 private bool r_mark_regions()
82 if (!(in_grouping(g_v, 192, 220)))
108 if (!(out_grouping(g_v, 192, 220)))
132 if (!(in_grouping(g_v, 192, 220)))
156 if (!(out_grouping(g_v, 192, 220)))
188 if (!(I_p2 <= cursor))
195 private bool r_perfective_gerund()
203 among_var = find_among_b(a_0, 9);
222 v_1 = limit - cursor;
226 if (!(eq_s_b(1,
"\u00C1")))
236 cursor = limit - v_1;
238 if (!(eq_s_b(1,
"\u00D1")))
257 private bool r_adjective()
264 among_var = find_among_b(a_1, 26);
286 private bool r_adjectival()
298 v_1 = limit - cursor;
305 among_var = find_among_b(a_2, 8);
308 cursor = limit - v_1;
317 cursor = limit - v_1;
325 v_2 = limit - cursor;
329 if (!(eq_s_b(1,
"\u00C1")))
339 cursor = limit - v_2;
341 if (!(eq_s_b(1,
"\u00D1")))
343 cursor = limit - v_1;
369 private bool r_reflexive()
376 among_var = find_among_b(a_3, 2);
398 private bool r_verb()
406 among_var = find_among_b(a_4, 46);
425 v_1 = limit - cursor;
429 if (!(eq_s_b(1,
"\u00C1")))
439 cursor = limit - v_1;
441 if (!(eq_s_b(1,
"\u00D1")))
460 private bool r_noun()
467 among_var = find_among_b(a_5, 36);
489 private bool r_derivational()
496 among_var = find_among_b(a_6, 2);
523 private bool r_tidy_up()
530 among_var = find_among_b(a_7, 4);
550 if (!(eq_s_b(1,
"\u00CE")))
557 if (!(eq_s_b(1,
"\u00CE")))
568 if (!(eq_s_b(1,
"\u00CE")))
585 public override bool Stem()
603 if (!r_mark_regions())
614 limit_backward = cursor; cursor = limit;
616 v_2 = limit - cursor;
623 v_3 = limit_backward;
624 limit_backward = cursor;
625 cursor = limit - v_2;
628 v_4 = limit - cursor;
635 v_5 = limit - cursor;
639 if (!r_perfective_gerund())
649 cursor = limit - v_5;
652 v_6 = limit - cursor;
658 cursor = limit - v_6;
669 v_7 = limit - cursor;
683 cursor = limit - v_7;
697 cursor = limit - v_7;
718 cursor = limit - v_4;
720 v_8 = limit - cursor;
727 if (!(eq_s_b(1,
"\u00C9")))
729 cursor = limit - v_8;
742 v_9 = limit - cursor;
746 if (!r_derivational())
755 cursor = limit - v_9;
757 v_10 = limit - cursor;
770 cursor = limit - v_10;
771 limit_backward = v_3;
772 cursor = limit_backward;
return true;