9 using System.Collections.Generic;
12 namespace TraceLab.Components.DevelopmentKit.Preprocessors.Stemmers.Snowball.Languages
27 public delegate
bool DelegateType();
29 private readonly
static Among[] a_0 = {
30 new Among (
"pa", -1, 1, null ),
31 new Among (
"sti", -1, 2, null ),
32 new Among (
"kaan", -1, 1, null ),
33 new Among (
"han", -1, 1, null ),
34 new Among (
"kin", -1, 1, null ),
35 new Among (
"h\u00E4n", -1, 1, null ),
36 new Among (
"k\u00E4\u00E4n", -1, 1, null ),
37 new Among (
"ko", -1, 1, null ),
38 new Among (
"p\u00E4", -1, 1, null ),
39 new Among (
"k\u00F6", -1, 1, null )
42 private readonly
static Among[] a_1 = {
43 new Among (
"lla", -1, -1, null ),
44 new Among (
"na", -1, -1, null ),
45 new Among (
"ssa", -1, -1, null ),
46 new Among (
"ta", -1, -1, null ),
47 new Among (
"lta", 3, -1, null ),
48 new Among (
"sta", 3, -1, null )
51 private readonly
static Among[] a_2 = {
52 new Among (
"ll\u00E4", -1, -1, null ),
53 new Among (
"n\u00E4", -1, -1, null ),
54 new Among (
"ss\u00E4", -1, -1, null ),
55 new Among (
"t\u00E4", -1, -1, null ),
56 new Among (
"lt\u00E4", 3, -1, null ),
57 new Among (
"st\u00E4", 3, -1, null )
60 private readonly
static Among[] a_3 = {
61 new Among (
"lle", -1, -1, null ),
62 new Among (
"ine", -1, -1, null )
65 private readonly
static Among[] a_4 = {
66 new Among (
"nsa", -1, 3, null ),
67 new Among (
"mme", -1, 3, null ),
68 new Among (
"nne", -1, 3, null ),
69 new Among (
"ni", -1, 2, null ),
70 new Among (
"si", -1, 1, null ),
71 new Among (
"an", -1, 4, null ),
72 new Among (
"en", -1, 6, null ),
73 new Among (
"\u00E4n", -1, 5, null ),
74 new Among (
"ns\u00E4", -1, 3, null )
77 private readonly
static Among[] a_5 = {
78 new Among (
"aa", -1, -1, null ),
79 new Among (
"ee", -1, -1, null ),
80 new Among (
"ii", -1, -1, null ),
81 new Among (
"oo", -1, -1, null ),
82 new Among (
"uu", -1, -1, null ),
83 new Among (
"\u00E4\u00E4", -1, -1, null ),
84 new Among (
"\u00F6\u00F6", -1, -1, null )
87 private readonly
static Among[] a_6 = {
88 new Among (
"a", -1, 8, null ),
89 new Among (
"lla", 0, -1, null ),
90 new Among (
"na", 0, -1, null ),
91 new Among (
"ssa", 0, -1, null ),
92 new Among (
"ta", 0, -1, null ),
93 new Among (
"lta", 4, -1, null ),
94 new Among (
"sta", 4, -1, null ),
95 new Among (
"tta", 4, 9, null ),
96 new Among (
"lle", -1, -1, null ),
97 new Among (
"ine", -1, -1, null ),
98 new Among (
"ksi", -1, -1, null ),
99 new Among (
"n", -1, 7, null ),
100 new Among (
"han", 11, 1, null ),
101 new Among (
"den", 11, -1, delegate{
return methodObject.r_VI();} ),
102 new Among (
"seen", 11, -1, delegate{
return methodObject.r_LONG();} ),
103 new Among (
"hen", 11, 2, null ),
104 new Among (
"tten", 11, -1,delegate{
return methodObject.r_VI();} ),
105 new Among (
"hin", 11, 3, null ),
106 new Among (
"siin", 11, -1,delegate{
return methodObject.r_VI();} ),
107 new Among (
"hon", 11, 4, null ),
108 new Among (
"h\u00E4n", 11, 5, null ),
109 new Among (
"h\u00F6n", 11, 6, null ),
110 new Among (
"\u00E4", -1, 8, null ),
111 new Among (
"ll\u00E4", 22, -1, null ),
112 new Among (
"n\u00E4", 22, -1, null ),
113 new Among (
"ss\u00E4", 22, -1, null ),
114 new Among (
"t\u00E4", 22, -1, null ),
115 new Among (
"lt\u00E4", 26, -1, null ),
116 new Among (
"st\u00E4", 26, -1, null ),
117 new Among (
"tt\u00E4", 26, 9, null )
120 private readonly
static Among[] a_7 = {
121 new Among (
"eja", -1, -1, null ),
122 new Among (
"mma", -1, 1, null ),
123 new Among (
"imma", 1, -1, null ),
124 new Among (
"mpa", -1, 1, null ),
125 new Among (
"impa", 3, -1, null ),
126 new Among (
"mmi", -1, 1, null ),
127 new Among (
"immi", 5, -1, null ),
128 new Among (
"mpi", -1, 1, null ),
129 new Among (
"impi", 7, -1, null ),
130 new Among (
"ej\u00E4", -1, -1, null ),
131 new Among (
"mm\u00E4", -1, 1, null ),
132 new Among (
"imm\u00E4", 10, -1, null ),
133 new Among (
"mp\u00E4", -1, 1, null ),
134 new Among (
"imp\u00E4", 12, -1, null )
137 private readonly
static Among[] a_8 = {
138 new Among (
"i", -1, -1, null ),
139 new Among (
"j", -1, -1, null )
142 private readonly
static Among[] a_9 = {
143 new Among (
"mma", -1, 1, null ),
144 new Among (
"imma", 0, -1, null )
147 private static readonly
char[] g_AEI = {(char)17, (
char)1, (char)0, (
char)0, (char)0, (
char)0,
148 (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
149 (char)0, (
char)0, (char)0, (
char)0, (char)8 };
151 private static readonly
char[] g_V1 = {(char)17, (
char)65, (char)16, (
char)1, (char)0, (
char)0,
152 (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
153 (char)0, (
char)0, (char)0, (
char)0, (char)8, (
char)0,
156 private static readonly
char[] g_V2 = {(char)17, (
char)65, (char)16, (
char)0, (char)0, (
char)0,
157 (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
158 (char)0, (
char)0, (char)0, (
char)0, (char)8, (
char)0,
161 private static readonly
char[] g_particle_end = {(char)17, (
char)97, (char)24, (
char)1, (char)0,
162 (
char)0, (char)0, (
char)0, (char)0, (
char)0,
163 (char)0, (
char)0, (char)0, (
char)0, (char)0,
164 (
char)0, (char)8, (
char)0, (char)32 };
166 private bool B_ending_removed;
167 private StringBuilder S_x =
new StringBuilder();
174 B_ending_removed = other.B_ending_removed;
178 base.copy_from(other);
182 private bool r_mark_regions()
184 bool subroot =
false;
196 if (!(in_grouping(g_V1, 97, 246)))
204 if (subroot) { subroot =
false;
break; }
217 if (!(out_grouping(g_V1, 97, 246)))
224 if (subroot) { subroot =
false;
break; }
239 if (!(in_grouping(g_V1, 97, 246)))
247 if (subroot) { subroot =
false;
break; }
260 if (!(out_grouping(g_V1, 97, 246)))
267 if (subroot) { subroot =
false;
break; }
281 if (!(I_p2 <= cursor))
290 private bool r_particle_etc()
297 v_1 = limit - cursor;
304 v_2 = limit_backward;
305 limit_backward = cursor;
306 cursor = limit - v_1;
311 among_var = find_among_b(a_0, 10);
314 limit_backward = v_2;
319 limit_backward = v_2;
326 if (!(in_grouping_b(g_particle_end, 97, 246)))
346 private bool r_possessive()
348 bool returnn =
false;
355 v_1 = limit - cursor;
362 v_2 = limit_backward;
363 limit_backward = cursor;
364 cursor = limit - v_1;
369 among_var = find_among_b(a_4, 9);
372 limit_backward = v_2;
377 limit_backward = v_2;
386 v_3 = limit - cursor;
391 if (!(eq_s_b(1,
"k")))
401 cursor = limit - v_3;
413 if (!(eq_s_b(3,
"kse")))
430 if (find_among_b(a_1, 6) == 0)
440 if (find_among_b(a_2, 6) == 0)
450 if (find_among_b(a_3, 2) == 0)
461 private bool r_LONG()
464 if (find_among_b(a_5, 7) == 0)
475 if (!(eq_s_b(1,
"i")))
479 if (!(in_grouping_b(g_V2, 97, 246)))
487 private bool r_case_ending()
489 bool subroot =
false;
498 v_1 = limit - cursor;
505 v_2 = limit_backward;
506 limit_backward = cursor;
507 cursor = limit - v_1;
512 among_var = find_among_b(a_6, 30);
515 limit_backward = v_2;
520 limit_backward = v_2;
528 if (!(eq_s_b(1,
"a")))
536 if (!(eq_s_b(1,
"e")))
544 if (!(eq_s_b(1,
"i")))
552 if (!(eq_s_b(1,
"o")))
560 if (!(eq_s_b(1,
"\u00E4")))
568 if (!(eq_s_b(1,
"\u00F6")))
576 v_3 = limit - cursor;
581 v_4 = limit - cursor;
585 v_5 = limit - cursor;
596 if (subroot) { subroot =
false;
break; }
597 cursor = limit - v_5;
599 if (!(eq_s_b(2,
"ie")))
601 cursor = limit - v_3;
606 if (subroot) { subroot =
false;
break; }
607 cursor = limit - v_4;
609 if (cursor <= limit_backward)
611 cursor = limit - v_3;
621 if (!(in_grouping_b(g_V1, 97, 246)))
625 if (!(out_grouping_b(g_V1, 97, 246)))
633 if (!(eq_s_b(1,
"e")))
642 B_ending_removed =
true;
647 private bool r_other_endings()
649 bool returnn =
false;
656 v_1 = limit - cursor;
663 v_2 = limit_backward;
664 limit_backward = cursor;
665 cursor = limit - v_1;
670 among_var = find_among_b(a_7, 14);
673 limit_backward = v_2;
678 limit_backward = v_2;
687 v_3 = limit - cursor;
692 if (!(eq_s_b(2,
"po")))
702 cursor = limit - v_3;
712 private bool r_i_plural()
718 v_1 = limit - cursor;
725 v_2 = limit_backward;
726 limit_backward = cursor;
727 cursor = limit - v_1;
732 if (find_among_b(a_8, 2) == 0)
734 limit_backward = v_2;
739 limit_backward = v_2;
746 private bool r_t_plural()
748 bool returnn =
false;
758 v_1 = limit - cursor;
765 v_2 = limit_backward;
766 limit_backward = cursor;
767 cursor = limit - v_1;
772 if (!(eq_s_b(1,
"t")))
774 limit_backward = v_2;
780 v_3 = limit - cursor;
781 if (!(in_grouping_b(g_V1, 97, 246)))
783 limit_backward = v_2;
786 cursor = limit - v_3;
789 limit_backward = v_2;
791 v_4 = limit - cursor;
798 v_5 = limit_backward;
799 limit_backward = cursor;
800 cursor = limit - v_4;
805 among_var = find_among_b(a_9, 2);
808 limit_backward = v_5;
813 limit_backward = v_5;
822 v_6 = limit - cursor;
827 if (!(eq_s_b(2,
"po")))
837 cursor = limit - v_6;
847 private bool r_tidy()
849 bool subroot =
false;
861 v_1 = limit - cursor;
868 v_2 = limit_backward;
869 limit_backward = cursor;
870 cursor = limit - v_1;
873 v_3 = limit - cursor;
878 v_4 = limit - cursor;
884 cursor = limit - v_4;
889 if (cursor <= limit_backward)
899 cursor = limit - v_3;
901 v_5 = limit - cursor;
907 if (!(in_grouping_b(g_AEI, 97, 228)))
913 if (!(out_grouping_b(g_V1, 97, 246)))
920 cursor = limit - v_5;
922 v_6 = limit - cursor;
929 if (!(eq_s_b(1,
"j")))
939 v_7 = limit - cursor;
943 if (!(eq_s_b(1,
"o")))
950 if (subroot) { subroot =
false;
break; }
951 cursor = limit - v_7;
953 if (!(eq_s_b(1,
"u")))
959 if (subroot) { subroot =
false;
break; }
963 cursor = limit - v_6;
965 v_8 = limit - cursor;
972 if (!(eq_s_b(1,
"o")))
979 if (!(eq_s_b(1,
"j")))
986 cursor = limit - v_8;
987 limit_backward = v_2;
991 v_9 = limit - cursor;
994 if (!(out_grouping_b(g_V1, 97, 246)))
998 cursor = limit - v_9;
1002 if (subroot) { subroot =
false;
break; }
1003 cursor = limit - v_9;
1004 if (cursor <= limit_backward)
1013 if (cursor <= limit_backward)
1021 S_x = slice_to(S_x);
1033 private bool CanStem()
1035 bool subroot =
false;
1051 if (!r_mark_regions())
1058 B_ending_removed =
false;
1060 limit_backward = cursor; cursor = limit;
1063 v_2 = limit - cursor;
1067 if (!r_particle_etc())
1072 cursor = limit - v_2;
1074 v_3 = limit - cursor;
1078 if (!r_possessive())
1083 cursor = limit - v_3;
1085 v_4 = limit - cursor;
1089 if (!r_case_ending())
1094 cursor = limit - v_4;
1096 v_5 = limit - cursor;
1100 if (!r_other_endings())
1105 cursor = limit - v_5;
1109 v_6 = limit - cursor;
1114 if (!(B_ending_removed))
1119 v_7 = limit - cursor;
1128 cursor = limit - v_7;
1132 if (subroot) { subroot =
false;
break; }
1133 cursor = limit - v_6;
1135 v_8 = limit - cursor;
1144 cursor = limit - v_8;
1147 v_9 = limit - cursor;
1156 cursor = limit - v_9;
1157 cursor = limit_backward;
1168 this.setCurrent(s.ToLowerInvariant());
1170 return this.getCurrent();