20 using Among = SF.Snowball.Among;
22 namespace SF.Snowball.Ext
24 #pragma warning disable 162
33 private void InitBlock()
35 a_0 =
new Among[]{
new Among(
"", - 1, 6,
"",
this),
new Among(
"U", 0, 2,
"",
this),
new Among(
"Y", 0, 1,
"",
this),
new Among(
"\u00E4", 0, 3,
"",
this),
new Among(
"\u00F6", 0, 4,
"",
this),
new Among(
"\u00FC", 0, 5,
"",
this)};
36 a_1 =
new Among[]{
new Among(
"e", - 1, 1,
"",
this),
new Among(
"em", - 1, 1,
"",
this),
new Among(
"en", - 1, 1,
"",
this),
new Among(
"ern", - 1, 1,
"",
this),
new Among(
"er", - 1, 1,
"",
this),
new Among(
"s", - 1, 2,
"",
this),
new Among(
"es", 5, 1,
"",
this)};
37 a_2 =
new Among[]{
new Among(
"en", - 1, 1,
"",
this),
new Among(
"er", - 1, 1,
"",
this),
new Among(
"st", - 1, 2,
"",
this),
new Among(
"est", 2, 1,
"",
this)};
38 a_3 =
new Among[]{
new Among(
"ig", - 1, 1,
"",
this),
new Among(
"lich", - 1, 1,
"",
this)};
39 a_4 =
new Among[]{
new Among(
"end", - 1, 1,
"",
this),
new Among(
"ig", - 1, 2,
"",
this),
new Among(
"ung", - 1, 1,
"",
this),
new Among(
"lich", - 1, 3,
"",
this),
new Among(
"isch", - 1, 2,
"",
this),
new Among(
"ik", - 1, 2,
"",
this),
new Among(
"heit", - 1, 3,
"",
this),
new Among(
"keit", - 1, 4,
"",
this)};
47 private static readonly
char[] g_v =
new char[]{(char) (17), (char) (65), (char) (16), (char) (1), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (8), (char) (0), (char) (32), (char) (8)};
48 private static readonly
char[] g_s_ending =
new char[]{(char) (117), (char) (30), (char) (5)};
49 private static readonly
char[] g_st_ending =
new char[]{(char) (117), (char) (30), (char) (4)};
54 protected internal virtual void copy_from(GermanStemmer other)
58 base.copy_from(other);
61 private bool r_prelude()
89 if (!(eq_s(1,
"\u00DF")))
143 if (!(in_grouping(g_v, 97, 252)))
163 if (!(in_grouping(g_v, 97, 252)))
184 if (!(in_grouping(g_v, 97, 252)))
229 private bool r_mark_regions()
239 if (!(in_grouping(g_v, 97, 252)))
263 if (!(out_grouping(g_v, 97, 252)))
303 if (!(in_grouping(g_v, 97, 252)))
327 if (!(out_grouping(g_v, 97, 252)))
351 private bool r_postlude()
365 among_var = find_among(a_0, 6);
437 if (!(I_p1 <= cursor))
446 if (!(I_p2 <= cursor))
453 private bool r_standard_suffix()
467 v_1 = limit - cursor;
474 among_var = find_among_b(a_1, 7);
500 if (!(in_grouping_b(g_s_ending, 98, 116)))
513 cursor = limit - v_1;
515 v_2 = limit - cursor;
522 among_var = find_among_b(a_2, 4);
548 if (!(in_grouping_b(g_st_ending, 98, 116)))
555 if (limit_backward > c || c > limit)
570 cursor = limit - v_2;
572 v_3 = limit - cursor;
579 among_var = find_among_b(a_4, 8);
603 v_4 = limit - cursor;
610 if (!(eq_s_b(2,
"ig")))
612 cursor = limit - v_4;
619 v_5 = limit - cursor;
623 if (!(eq_s_b(1,
"e")))
627 cursor = limit - v_4;
634 cursor = limit - v_5;
639 cursor = limit - v_4;
655 v_6 = limit - cursor;
659 if (!(eq_s_b(1,
"e")))
669 cursor = limit - v_6;
680 v_7 = limit - cursor;
689 v_8 = limit - cursor;
693 if (!(eq_s_b(2,
"er")))
703 cursor = limit - v_8;
705 if (!(eq_s_b(2,
"en")))
707 cursor = limit - v_7;
720 cursor = limit - v_7;
737 v_9 = limit - cursor;
744 among_var = find_among_b(a_3, 2);
747 cursor = limit - v_9;
755 cursor = limit - v_9;
762 cursor = limit - v_9;
783 cursor = limit - v_3;
787 public override bool Stem()
814 if (!r_mark_regions())
825 limit_backward = cursor; cursor = limit;
827 v_3 = limit - cursor;
831 if (!r_standard_suffix())
840 cursor = limit - v_3;
841 cursor = limit_backward;