9 using System.Collections.Generic;
12 namespace TraceLab.Components.DevelopmentKit.Preprocessors.Stemmers.Snowball.Languages
21 private readonly
static Among[] a_0 = {
22 new Among (
"", -1, 3, null ),
23 new Among (
"I", 0, 1, null ),
24 new Among (
"U", 0, 2, null )
27 private readonly
static Among[] a_1 = {
28 new Among (
"ea", -1, 3, null ),
29 new Among (
"a\u0163ia", -1, 7, null ),
30 new Among (
"aua", -1, 2, null ),
31 new Among (
"iua", -1, 4, null ),
32 new Among (
"a\u0163ie", -1, 7, null ),
33 new Among (
"ele", -1, 3, null ),
34 new Among (
"ile", -1, 5, null ),
35 new Among (
"iile", 6, 4, null ),
36 new Among (
"iei", -1, 4, null ),
37 new Among (
"atei", -1, 6, null ),
38 new Among (
"ii", -1, 4, null ),
39 new Among (
"ului", -1, 1, null ),
40 new Among (
"ul", -1, 1, null ),
41 new Among (
"elor", -1, 3, null ),
42 new Among (
"ilor", -1, 4, null ),
43 new Among (
"iilor", 14, 4, null )
46 private readonly
static Among[] a_2 = {
47 new Among (
"icala", -1, 4, null ),
48 new Among (
"iciva", -1, 4, null ),
49 new Among (
"ativa", -1, 5, null ),
50 new Among (
"itiva", -1, 6, null ),
51 new Among (
"icale", -1, 4, null ),
52 new Among (
"a\u0163iune", -1, 5, null ),
53 new Among (
"i\u0163iune", -1, 6, null ),
54 new Among (
"atoare", -1, 5, null ),
55 new Among (
"itoare", -1, 6, null ),
56 new Among (
"\u0103toare", -1, 5, null ),
57 new Among (
"icitate", -1, 4, null ),
58 new Among (
"abilitate", -1, 1, null ),
59 new Among (
"ibilitate", -1, 2, null ),
60 new Among (
"ivitate", -1, 3, null ),
61 new Among (
"icive", -1, 4, null ),
62 new Among (
"ative", -1, 5, null ),
63 new Among (
"itive", -1, 6, null ),
64 new Among (
"icali", -1, 4, null ),
65 new Among (
"atori", -1, 5, null ),
66 new Among (
"icatori", 18, 4, null ),
67 new Among (
"itori", -1, 6, null ),
68 new Among (
"\u0103tori", -1, 5, null ),
69 new Among (
"icitati", -1, 4, null ),
70 new Among (
"abilitati", -1, 1, null ),
71 new Among (
"ivitati", -1, 3, null ),
72 new Among (
"icivi", -1, 4, null ),
73 new Among (
"ativi", -1, 5, null ),
74 new Among (
"itivi", -1, 6, null ),
75 new Among (
"icit\u0103i", -1, 4, null ),
76 new Among (
"abilit\u0103i", -1, 1, null ),
77 new Among (
"ivit\u0103i", -1, 3, null ),
78 new Among (
"icit\u0103\u0163i", -1, 4, null ),
79 new Among (
"abilit\u0103\u0163i", -1, 1, null ),
80 new Among (
"ivit\u0103\u0163i", -1, 3, null ),
81 new Among (
"ical", -1, 4, null ),
82 new Among (
"ator", -1, 5, null ),
83 new Among (
"icator", 35, 4, null ),
84 new Among (
"itor", -1, 6, null ),
85 new Among (
"\u0103tor", -1, 5, null ),
86 new Among (
"iciv", -1, 4, null ),
87 new Among (
"ativ", -1, 5, null ),
88 new Among (
"itiv", -1, 6, null ),
89 new Among (
"ical\u0103", -1, 4, null ),
90 new Among (
"iciv\u0103", -1, 4, null ),
91 new Among (
"ativ\u0103", -1, 5, null ),
92 new Among (
"itiv\u0103", -1, 6, null )
95 private readonly
static Among[] a_3 = {
96 new Among (
"ica", -1, 1, null ),
97 new Among (
"abila", -1, 1, null ),
98 new Among (
"ibila", -1, 1, null ),
99 new Among (
"oasa", -1, 1, null ),
100 new Among (
"ata", -1, 1, null ),
101 new Among (
"ita", -1, 1, null ),
102 new Among (
"anta", -1, 1, null ),
103 new Among (
"ista", -1, 3, null ),
104 new Among (
"uta", -1, 1, null ),
105 new Among (
"iva", -1, 1, null ),
106 new Among (
"ic", -1, 1, null ),
107 new Among (
"ice", -1, 1, null ),
108 new Among (
"abile", -1, 1, null ),
109 new Among (
"ibile", -1, 1, null ),
110 new Among (
"isme", -1, 3, null ),
111 new Among (
"iune", -1, 2, null ),
112 new Among (
"oase", -1, 1, null ),
113 new Among (
"ate", -1, 1, null ),
114 new Among (
"itate", 17, 1, null ),
115 new Among (
"ite", -1, 1, null ),
116 new Among (
"ante", -1, 1, null ),
117 new Among (
"iste", -1, 3, null ),
118 new Among (
"ute", -1, 1, null ),
119 new Among (
"ive", -1, 1, null ),
120 new Among (
"ici", -1, 1, null ),
121 new Among (
"abili", -1, 1, null ),
122 new Among (
"ibili", -1, 1, null ),
123 new Among (
"iuni", -1, 2, null ),
124 new Among (
"atori", -1, 1, null ),
125 new Among (
"osi", -1, 1, null ),
126 new Among (
"ati", -1, 1, null ),
127 new Among (
"itati", 30, 1, null ),
128 new Among (
"iti", -1, 1, null ),
129 new Among (
"anti", -1, 1, null ),
130 new Among (
"isti", -1, 3, null ),
131 new Among (
"uti", -1, 1, null ),
132 new Among (
"i\u015Fti", -1, 3, null ),
133 new Among (
"ivi", -1, 1, null ),
134 new Among (
"it\u0103i", -1, 1, null ),
135 new Among (
"o\u015Fi", -1, 1, null ),
136 new Among (
"it\u0103\u0163i", -1, 1, null ),
137 new Among (
"abil", -1, 1, null ),
138 new Among (
"ibil", -1, 1, null ),
139 new Among (
"ism", -1, 3, null ),
140 new Among (
"ator", -1, 1, null ),
141 new Among (
"os", -1, 1, null ),
142 new Among (
"at", -1, 1, null ),
143 new Among (
"it", -1, 1, null ),
144 new Among (
"ant", -1, 1, null ),
145 new Among (
"ist", -1, 3, null ),
146 new Among (
"ut", -1, 1, null ),
147 new Among (
"iv", -1, 1, null ),
148 new Among (
"ic\u0103", -1, 1, null ),
149 new Among (
"abil\u0103", -1, 1, null ),
150 new Among (
"ibil\u0103", -1, 1, null ),
151 new Among (
"oas\u0103", -1, 1, null ),
152 new Among (
"at\u0103", -1, 1, null ),
153 new Among (
"it\u0103", -1, 1, null ),
154 new Among (
"ant\u0103", -1, 1, null ),
155 new Among (
"ist\u0103", -1, 3, null ),
156 new Among (
"ut\u0103", -1, 1, null ),
157 new Among (
"iv\u0103", -1, 1, null )
160 private readonly
static Among[] a_4 = {
161 new Among (
"ea", -1, 1, null ),
162 new Among (
"ia", -1, 1, null ),
163 new Among (
"esc", -1, 1, null ),
164 new Among (
"\u0103sc", -1, 1, null ),
165 new Among (
"ind", -1, 1, null ),
166 new Among (
"\u00E2nd", -1, 1, null ),
167 new Among (
"are", -1, 1, null ),
168 new Among (
"ere", -1, 1, null ),
169 new Among (
"ire", -1, 1, null ),
170 new Among (
"\u00E2re", -1, 1, null ),
171 new Among (
"se", -1, 2, null ),
172 new Among (
"ase", 10, 1, null ),
173 new Among (
"sese", 10, 2, null ),
174 new Among (
"ise", 10, 1, null ),
175 new Among (
"use", 10, 1, null ),
176 new Among (
"\u00E2se", 10, 1, null ),
177 new Among (
"e\u015Fte", -1, 1, null ),
178 new Among (
"\u0103\u015Fte", -1, 1, null ),
179 new Among (
"eze", -1, 1, null ),
180 new Among (
"ai", -1, 1, null ),
181 new Among (
"eai", 19, 1, null ),
182 new Among (
"iai", 19, 1, null ),
183 new Among (
"sei", -1, 2, null ),
184 new Among (
"e\u015Fti", -1, 1, null ),
185 new Among (
"\u0103\u015Fti", -1, 1, null ),
186 new Among (
"ui", -1, 1, null ),
187 new Among (
"ezi", -1, 1, null ),
188 new Among (
"\u00E2i", -1, 1, null ),
189 new Among (
"a\u015Fi", -1, 1, null ),
190 new Among (
"se\u015Fi", -1, 2, null ),
191 new Among (
"ase\u015Fi", 29, 1, null ),
192 new Among (
"sese\u015Fi", 29, 2, null ),
193 new Among (
"ise\u015Fi", 29, 1, null ),
194 new Among (
"use\u015Fi", 29, 1, null ),
195 new Among (
"\u00E2se\u015Fi", 29, 1, null ),
196 new Among (
"i\u015Fi", -1, 1, null ),
197 new Among (
"u\u015Fi", -1, 1, null ),
198 new Among (
"\u00E2\u015Fi", -1, 1, null ),
199 new Among (
"a\u0163i", -1, 2, null ),
200 new Among (
"ea\u0163i", 38, 1, null ),
201 new Among (
"ia\u0163i", 38, 1, null ),
202 new Among (
"e\u0163i", -1, 2, null ),
203 new Among (
"i\u0163i", -1, 2, null ),
204 new Among (
"\u00E2\u0163i", -1, 2, null ),
205 new Among (
"ar\u0103\u0163i", -1, 1, null ),
206 new Among (
"ser\u0103\u0163i", -1, 2, null ),
207 new Among (
"aser\u0103\u0163i", 45, 1, null ),
208 new Among (
"seser\u0103\u0163i", 45, 2, null ),
209 new Among (
"iser\u0103\u0163i", 45, 1, null ),
210 new Among (
"user\u0103\u0163i", 45, 1, null ),
211 new Among (
"\u00E2ser\u0103\u0163i", 45, 1, null ),
212 new Among (
"ir\u0103\u0163i", -1, 1, null ),
213 new Among (
"ur\u0103\u0163i", -1, 1, null ),
214 new Among (
"\u00E2r\u0103\u0163i", -1, 1, null ),
215 new Among (
"am", -1, 1, null ),
216 new Among (
"eam", 54, 1, null ),
217 new Among (
"iam", 54, 1, null ),
218 new Among (
"em", -1, 2, null ),
219 new Among (
"asem", 57, 1, null ),
220 new Among (
"sesem", 57, 2, null ),
221 new Among (
"isem", 57, 1, null ),
222 new Among (
"usem", 57, 1, null ),
223 new Among (
"\u00E2sem", 57, 1, null ),
224 new Among (
"im", -1, 2, null ),
225 new Among (
"\u00E2m", -1, 2, null ),
226 new Among (
"\u0103m", -1, 2, null ),
227 new Among (
"ar\u0103m", 65, 1, null ),
228 new Among (
"ser\u0103m", 65, 2, null ),
229 new Among (
"aser\u0103m", 67, 1, null ),
230 new Among (
"seser\u0103m", 67, 2, null ),
231 new Among (
"iser\u0103m", 67, 1, null ),
232 new Among (
"user\u0103m", 67, 1, null ),
233 new Among (
"\u00E2ser\u0103m", 67, 1, null ),
234 new Among (
"ir\u0103m", 65, 1, null ),
235 new Among (
"ur\u0103m", 65, 1, null ),
236 new Among (
"\u00E2r\u0103m", 65, 1, null ),
237 new Among (
"au", -1, 1, null ),
238 new Among (
"eau", 76, 1, null ),
239 new Among (
"iau", 76, 1, null ),
240 new Among (
"indu", -1, 1, null ),
241 new Among (
"\u00E2ndu", -1, 1, null ),
242 new Among (
"ez", -1, 1, null ),
243 new Among (
"easc\u0103", -1, 1, null ),
244 new Among (
"ar\u0103", -1, 1, null ),
245 new Among (
"ser\u0103", -1, 2, null ),
246 new Among (
"aser\u0103", 84, 1, null ),
247 new Among (
"seser\u0103", 84, 2, null ),
248 new Among (
"iser\u0103", 84, 1, null ),
249 new Among (
"user\u0103", 84, 1, null ),
250 new Among (
"\u00E2ser\u0103", 84, 1, null ),
251 new Among (
"ir\u0103", -1, 1, null ),
252 new Among (
"ur\u0103", -1, 1, null ),
253 new Among (
"\u00E2r\u0103", -1, 1, null ),
254 new Among (
"eaz\u0103", -1, 1, null )
257 private readonly
static Among[] a_5 = {
258 new Among (
"a", -1, 1, null ),
259 new Among (
"e", -1, 1, null ),
260 new Among (
"ie", 1, 1, null ),
261 new Among (
"i", -1, 1, null ),
262 new Among (
"\u0103", -1, 1, null )
265 private static readonly
char[] g_v = {(char)17, (
char)65, (char)16, (
char)0, (char)0, (
char)0,
266 (char)0,(
char) 0, (char)0, (
char)0, (char)0, (
char)0,
267 (char)0, (
char)0, (char)0, (
char)0, (char)2, (
char)32,
268 (char)0, (
char)0, (char)4 };
270 private bool B_standard_suffix_removed;
278 B_standard_suffix_removed = other.B_standard_suffix_removed;
282 base.copy_from(other);
286 private bool r_prelude()
288 bool subroot =
false;
294 replab0:
while (
true)
306 if (!(in_grouping(g_v, 97, 259)))
326 if (!(in_grouping(g_v, 97, 259)))
335 if (subroot) { subroot =
false;
break; }
346 if (!(in_grouping(g_v, 97, 259)))
354 if (subroot) { subroot =
false;
break; }
359 if (subroot) { subroot =
false;
break; }
368 if (subroot) { subroot =
false;
break; }
381 private bool r_mark_regions()
383 bool subroot =
false;
405 if (!(in_grouping(g_v, 97, 259)))
416 if (!(out_grouping(g_v, 97, 259)))
425 if (!(in_grouping(g_v, 97, 259)))
432 if (subroot) { subroot =
false;
break; }
440 if (subroot) { subroot =
false;
break; }
444 if (subroot) { subroot =
false;
break; }
447 if (!(in_grouping(g_v, 97, 259)))
457 if (!(out_grouping(g_v, 97, 259)))
464 if (subroot) { subroot =
false;
break; }
474 if (subroot) { subroot =
false;
break; }
478 if (subroot) { subroot =
false;
break; }
481 if (!(out_grouping(g_v, 97, 259)))
493 if (!(out_grouping(g_v, 97, 259)))
502 if (!(in_grouping(g_v, 97, 259)))
509 if (subroot) { subroot =
false;
break; }
517 if (subroot) { subroot =
false;
break; }
521 if (subroot) { subroot =
false;
break; }
524 if (!(in_grouping(g_v, 97, 259)))
539 if (subroot) { subroot =
false;
break; }
554 if (!(in_grouping(g_v, 97, 259)))
561 if (subroot) { subroot =
false;
break; }
569 if (subroot) { subroot =
false;
break; }
575 if (!(out_grouping(g_v, 97, 259)))
582 if (subroot) { subroot =
false;
break; }
590 if (subroot) { subroot =
false;
break; }
598 if (!(in_grouping(g_v, 97, 259)))
605 if (subroot) { subroot =
false;
break; }
613 if (subroot) { subroot =
false;
break; }
619 if (!(out_grouping(g_v, 97, 259)))
626 if (subroot) { subroot =
false;
break; }
634 if (subroot) { subroot =
false;
break; }
643 private bool r_postlude()
645 bool subroot =
false;
649 replab0:
while (
true)
658 among_var = find_among(a_0, 3);
691 if (subroot) { subroot =
false;
break; }
705 if (!(I_pV <= cursor))
714 if (!(I_p1 <= cursor))
723 if (!(I_p2 <= cursor))
731 private bool r_step_0()
733 bool returnn =
false;
740 among_var = find_among_b(a_1, 16);
780 v_1 = limit - cursor;
785 if (!(eq_s_b(2,
"ab")))
795 cursor = limit - v_1;
808 slice_from(
"a\u0163i");
815 private bool r_combo_suffix()
820 v_1 = limit - cursor;
825 among_var = find_among_b(a_2, 46);
874 B_standard_suffix_removed =
true;
875 cursor = limit - v_1;
880 private bool r_standard_suffix()
886 B_standard_suffix_removed =
false;
888 replab0:
while (
true)
890 v_1 = limit - cursor;
894 if (!r_combo_suffix())
898 else if (r_combo_suffix())
903 cursor = limit - v_1;
909 among_var = find_among_b(a_3, 62);
934 if (!(eq_s_b(1,
"\u0163")))
950 B_standard_suffix_removed =
true;
955 private bool r_verb_suffix()
957 bool subroot =
false;
963 v_1 = limit - cursor;
970 v_2 = limit_backward;
971 limit_backward = cursor;
972 cursor = limit - v_1;
977 among_var = find_among_b(a_4, 94);
980 limit_backward = v_2;
988 limit_backward = v_2;
995 v_3 = limit - cursor;
998 if (!(out_grouping_b(g_v, 97, 259)))
1005 if (subroot) { subroot =
false;
break; }
1006 cursor = limit - v_3;
1008 if (!(eq_s_b(1,
"u")))
1010 limit_backward = v_2;
1023 limit_backward = v_2;
1028 private bool r_vowel_suffix()
1035 among_var = find_among_b(a_5, 5);
1061 private bool CanStem()
1063 bool subroot =
false;
1089 if (!r_mark_regions())
1096 limit_backward = cursor; cursor = limit;
1099 v_3 = limit - cursor;
1108 cursor = limit - v_3;
1110 v_4 = limit - cursor;
1114 if (!r_standard_suffix())
1119 cursor = limit - v_4;
1121 v_5 = limit - cursor;
1128 v_6 = limit - cursor;
1132 if (!(B_standard_suffix_removed))
1139 if (subroot) { subroot =
false;
break; }
1140 cursor = limit - v_6;
1142 if (!r_verb_suffix())
1148 if (subroot) { subroot =
false;
break; }
1150 cursor = limit - v_5;
1152 v_7 = limit - cursor;
1156 if (!r_vowel_suffix())
1161 cursor = limit - v_7;
1162 cursor = limit_backward;
1183 this.setCurrent(s.ToLowerInvariant());
1185 return this.getCurrent();