9 using System.Collections.Generic;
12 namespace TraceLab.Components.DevelopmentKit.Preprocessors.Stemmers.Snowball.Languages
22 private readonly
static Among[] a_0 =
24 new Among (
"", -1, 6, null ),
25 new Among (
"\u00E1", 0, 1, null ),
26 new Among (
"\u00E9", 0, 2, null ),
27 new Among (
"\u00ED", 0, 3, null ),
28 new Among (
"\u00F3", 0, 4, null ),
29 new Among (
"\u00FA", 0, 5, null )
33 private readonly
static Among[] a_1 =
35 new Among (
"la", -1, -1, null ),
36 new Among (
"sela", 0, -1, null ),
37 new Among (
"le", -1, -1, null ),
38 new Among (
"me", -1, -1, null ),
39 new Among (
"se", -1, -1, null ),
40 new Among (
"lo", -1, -1, null ),
41 new Among (
"selo", 5, -1, null ),
42 new Among (
"las", -1, -1, null ),
43 new Among (
"selas", 7, -1, null ),
44 new Among (
"les", -1, -1, null ),
45 new Among (
"los", -1, -1, null ),
46 new Among (
"selos", 10, -1, null ),
47 new Among (
"nos", -1, -1, null )
51 private readonly
static Among[] a_2 =
53 new Among (
"ando", -1, 6, null ),
54 new Among (
"iendo", -1, 6, null ),
55 new Among (
"yendo", -1, 7, null ),
56 new Among (
"\u00E1ndo", -1, 2, null ),
57 new Among (
"i\u00E9ndo", -1, 1, null ),
58 new Among (
"ar", -1, 6, null ),
59 new Among (
"er", -1, 6, null ),
60 new Among (
"ir", -1, 6, null ),
61 new Among (
"\u00E1r", -1, 3, null ),
62 new Among (
"\u00E9r", -1, 4, null ),
63 new Among (
"\u00EDr", -1, 5, null )
67 private readonly
static Among[] a_3 =
69 new Among (
"ic", -1, -1, null ),
70 new Among (
"ad", -1, -1, null ),
71 new Among (
"os", -1, -1, null ),
72 new Among (
"iv", -1, 1, null )
76 private readonly
static Among[] a_4 =
78 new Among (
"able", -1, 1, null ),
79 new Among (
"ible", -1, 1, null ),
80 new Among (
"ante", -1, 1, null )
84 private readonly
static Among[] a_5 =
86 new Among (
"ic", -1, 1, null ),
87 new Among (
"abil", -1, 1, null ),
88 new Among (
"iv", -1, 1, null )
92 private readonly
static Among[] a_6 =
94 new Among (
"ica", -1, 1, null ),
95 new Among (
"ancia", -1, 2, null ),
96 new Among (
"encia", -1, 5, null ),
97 new Among (
"adora", -1, 2, null ),
98 new Among (
"osa", -1, 1, null ),
99 new Among (
"ista", -1, 1, null ),
100 new Among (
"iva", -1, 9, null ),
101 new Among (
"anza", -1, 1, null ),
102 new Among (
"log\u00EDa", -1, 3, null ),
103 new Among (
"idad", -1, 8, null ),
104 new Among (
"able", -1, 1, null ),
105 new Among (
"ible", -1, 1, null ),
106 new Among (
"ante", -1, 2, null ),
107 new Among (
"mente", -1, 7, null ),
108 new Among (
"amente", 13, 6, null ),
109 new Among (
"aci\u00F3n", -1, 2, null ),
110 new Among (
"uci\u00F3n", -1, 4, null ),
111 new Among (
"ico", -1, 1, null ),
112 new Among (
"ismo", -1, 1, null ),
113 new Among (
"oso", -1, 1, null ),
114 new Among (
"amiento", -1, 1, null ),
115 new Among (
"imiento", -1, 1, null ),
116 new Among (
"ivo", -1, 9, null ),
117 new Among (
"ador", -1, 2, null ),
118 new Among (
"icas", -1, 1, null ),
119 new Among (
"ancias", -1, 2, null ),
120 new Among (
"encias", -1, 5, null ),
121 new Among (
"adoras", -1, 2, null ),
122 new Among (
"osas", -1, 1, null ),
123 new Among (
"istas", -1, 1, null ),
124 new Among (
"ivas", -1, 9, null ),
125 new Among (
"anzas", -1, 1, null ),
126 new Among (
"log\u00EDas", -1, 3, null ),
127 new Among (
"idades", -1, 8, null ),
128 new Among (
"ables", -1, 1, null ),
129 new Among (
"ibles", -1, 1, null ),
130 new Among (
"aciones", -1, 2, null ),
131 new Among (
"uciones", -1, 4, null ),
132 new Among (
"adores", -1, 2, null ),
133 new Among (
"antes", -1, 2, null ),
134 new Among (
"icos", -1, 1, null ),
135 new Among (
"ismos", -1, 1, null ),
136 new Among (
"osos", -1, 1, null ),
137 new Among (
"amientos", -1, 1, null ),
138 new Among (
"imientos", -1, 1, null ),
139 new Among (
"ivos", -1, 9, null )
144 private readonly
static Among[] a_7 =
146 new Among (
"ya", -1, 1, null ),
147 new Among (
"ye", -1, 1, null ),
148 new Among (
"yan", -1, 1, null ),
149 new Among (
"yen", -1, 1, null ),
150 new Among (
"yeron", -1, 1, null ),
151 new Among (
"yendo", -1, 1, null ),
152 new Among (
"yo", -1, 1, null ),
153 new Among (
"yas", -1, 1, null ),
154 new Among (
"yes", -1, 1, null ),
155 new Among (
"yais", -1, 1, null ),
156 new Among (
"yamos", -1, 1, null ),
157 new Among (
"y\u00F3", -1, 1, null )
162 private readonly
static Among[] a_8 =
164 new Among (
"aba", -1, 2, null ),
165 new Among (
"ada", -1, 2, null ),
166 new Among (
"ida", -1, 2, null ),
167 new Among (
"ara", -1, 2, null ),
168 new Among (
"iera", -1, 2, null ),
169 new Among (
"\u00EDa", -1, 2, null ),
170 new Among (
"ar\u00EDa", 5, 2, null ),
171 new Among (
"er\u00EDa", 5, 2, null ),
172 new Among (
"ir\u00EDa", 5, 2, null ),
173 new Among (
"ad", -1, 2, null ),
174 new Among (
"ed", -1, 2, null ),
175 new Among (
"id", -1, 2, null ),
176 new Among (
"ase", -1, 2, null ),
177 new Among (
"iese", -1, 2, null ),
178 new Among (
"aste", -1, 2, null ),
179 new Among (
"iste", -1, 2, null ),
180 new Among (
"an", -1, 2, null ),
181 new Among (
"aban", 16, 2, null ),
182 new Among (
"aran", 16, 2, null ),
183 new Among (
"ieran", 16, 2, null ),
184 new Among (
"\u00EDan", 16, 2, null ),
185 new Among (
"ar\u00EDan", 20, 2, null ),
186 new Among (
"er\u00EDan", 20, 2, null ),
187 new Among (
"ir\u00EDan", 20, 2, null ),
188 new Among (
"en", -1, 1, null ),
189 new Among (
"asen", 24, 2, null ),
190 new Among (
"iesen", 24, 2, null ),
191 new Among (
"aron", -1, 2, null ),
192 new Among (
"ieron", -1, 2, null ),
193 new Among (
"ar\u00E1n", -1, 2, null ),
194 new Among (
"er\u00E1n", -1, 2, null ),
195 new Among (
"ir\u00E1n", -1, 2, null ),
196 new Among (
"ado", -1, 2, null ),
197 new Among (
"ido", -1, 2, null ),
198 new Among (
"ando", -1, 2, null ),
199 new Among (
"iendo", -1, 2, null ),
200 new Among (
"ar", -1, 2, null ),
201 new Among (
"er", -1, 2, null ),
202 new Among (
"ir", -1, 2, null ),
203 new Among (
"as", -1, 2, null ),
204 new Among (
"abas", 39, 2, null ),
205 new Among (
"adas", 39, 2, null ),
206 new Among (
"idas", 39, 2, null ),
207 new Among (
"aras", 39, 2, null ),
208 new Among (
"ieras", 39, 2, null ),
209 new Among (
"\u00EDas", 39, 2, null ),
210 new Among (
"ar\u00EDas", 45, 2, null ),
211 new Among (
"er\u00EDas", 45, 2, null ),
212 new Among (
"ir\u00EDas", 45, 2, null ),
213 new Among (
"es", -1, 1, null ),
214 new Among (
"ases", 49, 2, null ),
215 new Among (
"ieses", 49, 2, null ),
216 new Among (
"abais", -1, 2, null ),
217 new Among (
"arais", -1, 2, null ),
218 new Among (
"ierais", -1, 2, null ),
219 new Among (
"\u00EDais", -1, 2, null ),
220 new Among (
"ar\u00EDais", 55, 2, null ),
221 new Among (
"er\u00EDais", 55, 2, null ),
222 new Among (
"ir\u00EDais", 55, 2, null ),
223 new Among (
"aseis", -1, 2, null ),
224 new Among (
"ieseis", -1, 2, null ),
225 new Among (
"asteis", -1, 2, null ),
226 new Among (
"isteis", -1, 2, null ),
227 new Among (
"\u00E1is", -1, 2, null ),
228 new Among (
"\u00E9is", -1, 1, null ),
229 new Among (
"ar\u00E9is", 64, 2, null ),
230 new Among (
"er\u00E9is", 64, 2, null ),
231 new Among (
"ir\u00E9is", 64, 2, null ),
232 new Among (
"ados", -1, 2, null ),
233 new Among (
"idos", -1, 2, null ),
234 new Among (
"amos", -1, 2, null ),
235 new Among (
"\u00E1bamos", 70, 2, null ),
236 new Among (
"\u00E1ramos", 70, 2, null ),
237 new Among (
"i\u00E9ramos", 70, 2, null ),
238 new Among (
"\u00EDamos", 70, 2, null ),
239 new Among (
"ar\u00EDamos", 74, 2, null ),
240 new Among (
"er\u00EDamos", 74, 2, null ),
241 new Among (
"ir\u00EDamos", 74, 2, null ),
242 new Among (
"emos", -1, 1, null ),
243 new Among (
"aremos", 78, 2, null ),
244 new Among (
"eremos", 78, 2, null ),
245 new Among (
"iremos", 78, 2, null ),
246 new Among (
"\u00E1semos", 78, 2, null ),
247 new Among (
"i\u00E9semos", 78, 2, null ),
248 new Among (
"imos", -1, 2, null ),
249 new Among (
"ar\u00E1s", -1, 2, null ),
250 new Among (
"er\u00E1s", -1, 2, null ),
251 new Among (
"ir\u00E1s", -1, 2, null ),
252 new Among (
"\u00EDs", -1, 2, null ),
253 new Among (
"ar\u00E1", -1, 2, null ),
254 new Among (
"er\u00E1", -1, 2, null ),
255 new Among (
"ir\u00E1", -1, 2, null ),
256 new Among (
"ar\u00E9", -1, 2, null ),
257 new Among (
"er\u00E9", -1, 2, null ),
258 new Among (
"ir\u00E9", -1, 2, null ),
259 new Among (
"i\u00F3", -1, 2, null )
264 private readonly
static Among[] a_9 =
266 new Among (
"a", -1, 1, null ),
267 new Among (
"e", -1, 2, null ),
268 new Among (
"o", -1, 1, null ),
269 new Among (
"os", -1, 1, null ),
270 new Among (
"\u00E1", -1, 1, null ),
271 new Among (
"\u00E9", -1, 2, null ),
272 new Among (
"\u00ED", -1, 1, null ),
273 new Among (
"\u00F3", -1, 1, null )
277 private static readonly
char[] g_v = { (char)17, (
char)65, (char)16, (
char)0, (char)0, (
char)0, (char)0,
278 (
char)0, (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
279 (char)0,(
char)0, (char)1, (
char)17, (char)4, (
char)10 };
291 base.copy_from(other);
295 private bool r_mark_regions()
298 bool subroot =
false;
320 if (!(in_grouping(g_v, 97, 252)))
331 if (!(out_grouping(g_v, 97, 252)))
340 if (!(in_grouping(g_v, 97, 252)))
347 if (subroot) { subroot =
false;
break; }
355 if (subroot) { subroot =
false;
break; }
359 if (subroot) { subroot =
false;
break; }
362 if (!(in_grouping(g_v, 97, 252)))
372 if (!(out_grouping(g_v, 97, 252)))
379 if (subroot) { subroot =
false;
break; }
388 breaklab2:
if (subroot) { subroot =
false;
break; }
392 if (subroot) { subroot =
false;
break; }
395 if (!(out_grouping(g_v, 97, 252)))
407 if (!(out_grouping(g_v, 97, 252)))
416 if (!(in_grouping(g_v, 97, 252)))
423 if (subroot) { subroot =
false;
break; }
431 if (subroot) { subroot =
false;
break; }
435 if (subroot) { subroot =
false;
break; }
438 if (!(in_grouping(g_v, 97, 252)))
452 breaklab0:
if (subroot) { subroot =
false;
break; }
467 if (!(in_grouping(g_v, 97, 252)))
474 if (subroot) { subroot =
false;
break; }
482 if (subroot) { subroot =
false;
break; }
488 if (!(out_grouping(g_v, 97, 252)))
495 if (subroot) { subroot =
false;
break; }
503 if (subroot) { subroot =
false;
break; }
511 if (!(in_grouping(g_v, 97, 252)))
518 if (subroot) { subroot =
false;
break; }
526 if (subroot) { subroot =
false;
break; }
532 if (!(out_grouping(g_v, 97, 252)))
539 if (subroot) { subroot =
false;
break; }
547 if (subroot) { subroot =
false;
break; }
556 private bool r_postlude()
558 bool subroot =
false;
562 replab0:
while (
true)
571 among_var = find_among(a_0, 6);
619 if (subroot) { subroot =
false;
break; }
634 if (!(I_pV <= cursor))
644 if (!(I_p1 <= cursor))
654 if (!(I_p2 <= cursor))
662 private bool r_attached_pronoun()
670 if (find_among_b(a_1, 13) == 0)
677 among_var = find_among_b(a_2, 11);
734 if (!(eq_s_b(1,
"u")))
746 private bool r_standard_suffix()
748 bool subroot =
false;
759 among_var = find_among_b(a_6, 46);
790 v_1 = limit - cursor;
797 if (!(eq_s_b(2,
"ic")))
799 cursor = limit - v_1;
807 cursor = limit - v_1;
854 v_2 = limit - cursor;
861 among_var = find_among_b(a_3, 4);
864 cursor = limit - v_2;
872 cursor = limit - v_2;
880 cursor = limit - v_2;
888 if (!(eq_s_b(2,
"at")))
890 cursor = limit - v_2;
899 cursor = limit - v_2;
907 if (subroot) { subroot =
false;
break; }
920 v_3 = limit - cursor;
927 among_var = find_among_b(a_4, 3);
930 cursor = limit - v_3;
938 cursor = limit - v_3;
946 cursor = limit - v_3;
954 if (subroot) { subroot =
false;
break; }
967 v_4 = limit - cursor;
974 among_var = find_among_b(a_5, 3);
977 cursor = limit - v_4;
985 cursor = limit - v_4;
993 cursor = limit - v_4;
1001 if (subroot) { subroot =
false;
break; }
1014 v_5 = limit - cursor;
1021 if (!(eq_s_b(2,
"at")))
1023 cursor = limit - v_5;
1031 cursor = limit - v_5;
1043 private bool r_y_verb_suffix()
1050 v_1 = limit - cursor;
1057 v_2 = limit_backward;
1058 limit_backward = cursor;
1059 cursor = limit - v_1;
1064 among_var = find_among_b(a_7, 12);
1067 limit_backward = v_2;
1072 limit_backward = v_2;
1080 if (!(eq_s_b(1,
"u")))
1092 private bool r_verb_suffix()
1101 v_1 = limit - cursor;
1108 v_2 = limit_backward;
1109 limit_backward = cursor;
1110 cursor = limit - v_1;
1115 among_var = find_among_b(a_8, 96);
1118 limit_backward = v_2;
1123 limit_backward = v_2;
1131 v_3 = limit - cursor;
1136 if (!(eq_s_b(1,
"u")))
1138 cursor = limit - v_3;
1142 v_4 = limit - cursor;
1144 if (!(eq_s_b(1,
"g")))
1146 cursor = limit - v_3;
1149 cursor = limit - v_4;
1166 private bool r_residual_suffix()
1175 among_var = find_among_b(a_9, 8);
1206 v_1 = limit - cursor;
1213 if (!(eq_s_b(1,
"u")))
1215 cursor = limit - v_1;
1221 v_2 = limit - cursor;
1223 if (!(eq_s_b(1,
"g")))
1225 cursor = limit - v_1;
1228 cursor = limit - v_2;
1232 cursor = limit - v_1;
1244 private bool CanStem()
1246 bool subroot =
false;
1259 if (!r_mark_regions())
1266 limit_backward = cursor; cursor = limit;
1269 v_2 = limit - cursor;
1273 if (!r_attached_pronoun())
1278 cursor = limit - v_2;
1280 v_3 = limit - cursor;
1287 v_4 = limit - cursor;
1291 if (!r_standard_suffix())
1298 if (subroot) { subroot =
false;
break; }
1299 cursor = limit - v_4;
1303 if (!r_y_verb_suffix())
1310 if (subroot) { subroot =
false;
break; }
1311 cursor = limit - v_4;
1313 if (!r_verb_suffix())
1319 if (subroot) { subroot =
false;
break; }
1321 cursor = limit - v_3;
1323 v_5 = limit - cursor;
1327 if (!r_residual_suffix())
1332 cursor = limit - v_5;
1333 cursor = limit_backward;
1354 this.setCurrent(s.ToLowerInvariant());
1356 return this.getCurrent();