9 using System.Collections.Generic;
12 namespace TraceLab.Components.DevelopmentKit.Preprocessors.Stemmers.Snowball.Languages
21 private readonly
static Among[] a_0 =
23 new Among (
"", -1, 3, null ),
24 new Among (
"\u00E3", 0, 1, null ),
25 new Among (
"\u00F5", 0, 2, null )
29 private readonly
static Among[] a_1 =
31 new Among (
"", -1, 3, null ),
32 new Among (
"a~", 0, 1, null ),
33 new Among (
"o~", 0, 2, null )
37 private readonly
static Among[] a_2 =
39 new Among (
"ic", -1, -1, null ),
40 new Among (
"ad", -1, -1, null ),
41 new Among (
"os", -1, -1, null ),
42 new Among (
"iv", -1, 1, null )
46 private readonly
static Among[] a_3 =
48 new Among (
"ante", -1, 1, null ),
49 new Among (
"avel", -1, 1, null ),
50 new Among (
"\u00EDvel", -1, 1, null )
54 private readonly
static Among[] a_4 =
56 new Among (
"ic", -1, 1, null ),
57 new Among (
"abil", -1, 1, null ),
58 new Among (
"iv", -1, 1, null )
62 private readonly
static Among[] a_5 =
64 new Among (
"ica", -1, 1, null ),
65 new Among (
"\u00E2ncia", -1, 1, null ),
66 new Among (
"\u00EAncia", -1, 4, null ),
67 new Among (
"ira", -1, 9, null ),
68 new Among (
"adora", -1, 1, null ),
69 new Among (
"osa", -1, 1, null ),
70 new Among (
"ista", -1, 1, null ),
71 new Among (
"iva", -1, 8, null ),
72 new Among (
"eza", -1, 1, null ),
73 new Among (
"log\u00EDa", -1, 2, null ),
74 new Among (
"idade", -1, 7, null ),
75 new Among (
"ante", -1, 1, null ),
76 new Among (
"mente", -1, 6, null ),
77 new Among (
"amente", 12, 5, null ),
78 new Among (
"\u00E1vel", -1, 1, null ),
79 new Among (
"\u00EDvel", -1, 1, null ),
80 new Among (
"uci\u00F3n", -1, 3, null ),
81 new Among (
"ico", -1, 1, null ),
82 new Among (
"ismo", -1, 1, null ),
83 new Among (
"oso", -1, 1, null ),
84 new Among (
"amento", -1, 1, null ),
85 new Among (
"imento", -1, 1, null ),
86 new Among (
"ivo", -1, 8, null ),
87 new Among (
"a\u00E7a~o", -1, 1, null ),
88 new Among (
"ador", -1, 1, null ),
89 new Among (
"icas", -1, 1, null ),
90 new Among (
"\u00EAncias", -1, 4, null ),
91 new Among (
"iras", -1, 9, null ),
92 new Among (
"adoras", -1, 1, null ),
93 new Among (
"osas", -1, 1, null ),
94 new Among (
"istas", -1, 1, null ),
95 new Among (
"ivas", -1, 8, null ),
96 new Among (
"ezas", -1, 1, null ),
97 new Among (
"log\u00EDas", -1, 2, null ),
98 new Among (
"idades", -1, 7, null ),
99 new Among (
"uciones", -1, 3, null ),
100 new Among (
"adores", -1, 1, null ),
101 new Among (
"antes", -1, 1, null ),
102 new Among (
"a\u00E7o~es", -1, 1, null ),
103 new Among (
"icos", -1, 1, null ),
104 new Among (
"ismos", -1, 1, null ),
105 new Among (
"osos", -1, 1, null ),
106 new Among (
"amentos", -1, 1, null ),
107 new Among (
"imentos", -1, 1, null ),
108 new Among (
"ivos", -1, 8, null )
113 private readonly
static Among[] a_6 =
115 new Among (
"ada", -1, 1, null ),
116 new Among (
"ida", -1, 1, null ),
117 new Among (
"ia", -1, 1, null ),
118 new Among (
"aria", 2, 1, null ),
119 new Among (
"eria", 2, 1, null ),
120 new Among (
"iria", 2, 1, null ),
121 new Among (
"ara", -1, 1, null ),
122 new Among (
"era", -1, 1, null ),
123 new Among (
"ira", -1, 1, null ),
124 new Among (
"ava", -1, 1, null ),
125 new Among (
"asse", -1, 1, null ),
126 new Among (
"esse", -1, 1, null ),
127 new Among (
"isse", -1, 1, null ),
128 new Among (
"aste", -1, 1, null ),
129 new Among (
"este", -1, 1, null ),
130 new Among (
"iste", -1, 1, null ),
131 new Among (
"ei", -1, 1, null ),
132 new Among (
"arei", 16, 1, null ),
133 new Among (
"erei", 16, 1, null ),
134 new Among (
"irei", 16, 1, null ),
135 new Among (
"am", -1, 1, null ),
136 new Among (
"iam", 20, 1, null ),
137 new Among (
"ariam", 21, 1, null ),
138 new Among (
"eriam", 21, 1, null ),
139 new Among (
"iriam", 21, 1, null ),
140 new Among (
"aram", 20, 1, null ),
141 new Among (
"eram", 20, 1, null ),
142 new Among (
"iram", 20, 1, null ),
143 new Among (
"avam", 20, 1, null ),
144 new Among (
"em", -1, 1, null ),
145 new Among (
"arem", 29, 1, null ),
146 new Among (
"erem", 29, 1, null ),
147 new Among (
"irem", 29, 1, null ),
148 new Among (
"assem", 29, 1, null ),
149 new Among (
"essem", 29, 1, null ),
150 new Among (
"issem", 29, 1, null ),
151 new Among (
"ado", -1, 1, null ),
152 new Among (
"ido", -1, 1, null ),
153 new Among (
"ando", -1, 1, null ),
154 new Among (
"endo", -1, 1, null ),
155 new Among (
"indo", -1, 1, null ),
156 new Among (
"ara~o", -1, 1, null ),
157 new Among (
"era~o", -1, 1, null ),
158 new Among (
"ira~o", -1, 1, null ),
159 new Among (
"ar", -1, 1, null ),
160 new Among (
"er", -1, 1, null ),
161 new Among (
"ir", -1, 1, null ),
162 new Among (
"as", -1, 1, null ),
163 new Among (
"adas", 47, 1, null ),
164 new Among (
"idas", 47, 1, null ),
165 new Among (
"ias", 47, 1, null ),
166 new Among (
"arias", 50, 1, null ),
167 new Among (
"erias", 50, 1, null ),
168 new Among (
"irias", 50, 1, null ),
169 new Among (
"aras", 47, 1, null ),
170 new Among (
"eras", 47, 1, null ),
171 new Among (
"iras", 47, 1, null ),
172 new Among (
"avas", 47, 1, null ),
173 new Among (
"es", -1, 1, null ),
174 new Among (
"ardes", 58, 1, null ),
175 new Among (
"erdes", 58, 1, null ),
176 new Among (
"irdes", 58, 1, null ),
177 new Among (
"ares", 58, 1, null ),
178 new Among (
"eres", 58, 1, null ),
179 new Among (
"ires", 58, 1, null ),
180 new Among (
"asses", 58, 1, null ),
181 new Among (
"esses", 58, 1, null ),
182 new Among (
"isses", 58, 1, null ),
183 new Among (
"astes", 58, 1, null ),
184 new Among (
"estes", 58, 1, null ),
185 new Among (
"istes", 58, 1, null ),
186 new Among (
"is", -1, 1, null ),
187 new Among (
"ais", 71, 1, null ),
188 new Among (
"eis", 71, 1, null ),
189 new Among (
"areis", 73, 1, null ),
190 new Among (
"ereis", 73, 1, null ),
191 new Among (
"ireis", 73, 1, null ),
192 new Among (
"\u00E1reis", 73, 1, null ),
193 new Among (
"\u00E9reis", 73, 1, null ),
194 new Among (
"\u00EDreis", 73, 1, null ),
195 new Among (
"\u00E1sseis", 73, 1, null ),
196 new Among (
"\u00E9sseis", 73, 1, null ),
197 new Among (
"\u00EDsseis", 73, 1, null ),
198 new Among (
"\u00E1veis", 73, 1, null ),
199 new Among (
"\u00EDeis", 73, 1, null ),
200 new Among (
"ar\u00EDeis", 84, 1, null ),
201 new Among (
"er\u00EDeis", 84, 1, null ),
202 new Among (
"ir\u00EDeis", 84, 1, null ),
203 new Among (
"ados", -1, 1, null ),
204 new Among (
"idos", -1, 1, null ),
205 new Among (
"amos", -1, 1, null ),
206 new Among (
"\u00E1ramos", 90, 1, null ),
207 new Among (
"\u00E9ramos", 90, 1, null ),
208 new Among (
"\u00EDramos", 90, 1, null ),
209 new Among (
"\u00E1vamos", 90, 1, null ),
210 new Among (
"\u00EDamos", 90, 1, null ),
211 new Among (
"ar\u00EDamos", 95, 1, null ),
212 new Among (
"er\u00EDamos", 95, 1, null ),
213 new Among (
"ir\u00EDamos", 95, 1, null ),
214 new Among (
"emos", -1, 1, null ),
215 new Among (
"aremos", 99, 1, null ),
216 new Among (
"eremos", 99, 1, null ),
217 new Among (
"iremos", 99, 1, null ),
218 new Among (
"\u00E1ssemos", 99, 1, null ),
219 new Among (
"\u00EAssemos", 99, 1, null ),
220 new Among (
"\u00EDssemos", 99, 1, null ),
221 new Among (
"imos", -1, 1, null ),
222 new Among (
"armos", -1, 1, null ),
223 new Among (
"ermos", -1, 1, null ),
224 new Among (
"irmos", -1, 1, null ),
225 new Among (
"\u00E1mos", -1, 1, null ),
226 new Among (
"ar\u00E1s", -1, 1, null ),
227 new Among (
"er\u00E1s", -1, 1, null ),
228 new Among (
"ir\u00E1s", -1, 1, null ),
229 new Among (
"eu", -1, 1, null ),
230 new Among (
"iu", -1, 1, null ),
231 new Among (
"ou", -1, 1, null ),
232 new Among (
"ar\u00E1", -1, 1, null ),
233 new Among (
"er\u00E1", -1, 1, null ),
234 new Among (
"ir\u00E1", -1, 1, null )
239 private readonly
static Among[] a_7 =
241 new Among (
"a", -1, 1, null ),
242 new Among (
"i", -1, 1, null ),
243 new Among (
"o", -1, 1, null ),
244 new Among (
"os", -1, 1, null ),
245 new Among (
"\u00E1", -1, 1, null ),
246 new Among (
"\u00ED", -1, 1, null ),
247 new Among (
"\u00F3", -1, 1, null )
251 private readonly
static Among[] a_8 =
253 new Among (
"e", -1, 1, null ),
254 new Among (
"\u00E7", -1, 2, null ),
255 new Among (
"\u00E9", -1, 1, null ),
256 new Among (
"\u00EA", -1, 1, null )
260 private static readonly
char[] g_v = {(char)17, (
char)65, (char)16, (
char)0, (char)0, (
char)0, (char)0,
261 (
char)0, (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
262 (char)0, (
char)0, (char)3, (
char)19, (char)12, (
char)2 };
274 base.copy_from(other);
279 private bool r_prelude()
281 bool subroot =
false;
285 replab0:
while (
true)
294 among_var = find_among(a_0, 3);
327 if (subroot) { subroot =
false;
break; }
340 private bool r_mark_regions()
342 bool subroot =
false;
364 if (!(in_grouping(g_v, 97, 250)))
375 if (!(out_grouping(g_v, 97, 250)))
385 if (!(in_grouping(g_v, 97, 250)))
392 if (subroot) { subroot =
false;
break; }
400 if (subroot) { subroot =
false;
break; }
404 if (subroot) { subroot =
false;
break; }
407 if (!(in_grouping(g_v, 97, 250)))
417 if (!(out_grouping(g_v, 97, 250)))
424 if (subroot) { subroot =
false;
break; }
433 if (subroot) { subroot =
false;
break; }
437 if (subroot) { subroot =
false;
break; }
440 if (!(out_grouping(g_v, 97, 250)))
452 if (!(out_grouping(g_v, 97, 250)))
461 if (!(in_grouping(g_v, 97, 250)))
468 if (subroot) { subroot =
false;
break; }
476 if (subroot) { subroot =
false;
break; }
480 if (subroot) { subroot =
false;
break; }
483 if (!(in_grouping(g_v, 97, 250)))
497 if (subroot) { subroot =
false;
break; }
512 if (!(in_grouping(g_v, 97, 250)))
519 if (subroot) { subroot =
false;
break; }
527 if (subroot) { subroot =
false;
break; }
533 if (!(out_grouping(g_v, 97, 250)))
540 if (subroot) { subroot =
false;
break; }
548 if (subroot) { subroot =
false;
break; }
556 if (!(in_grouping(g_v, 97, 250)))
563 if (subroot) { subroot =
false;
break; }
571 if (subroot) { subroot =
false;
break; }
577 if (!(out_grouping(g_v, 97, 250)))
584 if (subroot) { subroot =
false;
break; }
592 if (subroot) { subroot =
false;
break; }
601 private bool r_postlude()
603 bool subroot =
false;
607 replab0:
while (
true)
617 among_var = find_among(a_1, 3);
632 slice_from(
"\u00E3");
637 slice_from(
"\u00F5");
650 if (subroot) { subroot =
false;
break; }
664 if (!(I_pV <= cursor))
673 if (!(I_p1 <= cursor))
682 if (!(I_p2 <= cursor))
690 private bool r_standard_suffix()
692 bool subroot =
false;
702 among_var = find_among_b(a_5, 45);
763 v_1 = limit - cursor;
770 among_var = find_among_b(a_2, 4);
773 cursor = limit - v_1;
781 cursor = limit - v_1;
789 cursor = limit - v_1;
797 if (!(eq_s_b(2,
"at")))
799 cursor = limit - v_1;
808 cursor = limit - v_1;
816 if (subroot) { subroot =
false;
break; }
829 v_2 = limit - cursor;
836 among_var = find_among_b(a_3, 3);
839 cursor = limit - v_2;
847 cursor = limit - v_2;
855 cursor = limit - v_2;
863 if (subroot) { subroot =
false;
break; }
876 v_3 = limit - cursor;
883 among_var = find_among_b(a_4, 3);
886 cursor = limit - v_3;
894 cursor = limit - v_3;
902 cursor = limit - v_3;
910 if (subroot) { subroot =
false;
break; }
923 v_4 = limit - cursor;
930 if (!(eq_s_b(2,
"at")))
932 cursor = limit - v_4;
940 cursor = limit - v_4;
955 if (!(eq_s_b(1,
"e")))
967 private bool r_verb_suffix()
973 v_1 = limit - cursor;
980 v_2 = limit_backward;
981 limit_backward = cursor;
982 cursor = limit - v_1;
987 among_var = find_among_b(a_6, 120);
990 limit_backward = v_2;
998 limit_backward = v_2;
1006 limit_backward = v_2;
1011 private bool r_residual_suffix()
1018 among_var = find_among_b(a_7, 7);
1044 private bool r_residual_form()
1046 bool subroot =
false;
1055 among_var = find_among_b(a_8, 4);
1080 v_1 = limit - cursor;
1085 if (!(eq_s_b(1,
"u")))
1092 v_2 = limit - cursor;
1094 if (!(eq_s_b(1,
"g")))
1098 cursor = limit - v_2;
1102 if (subroot) { subroot =
false;
break; }
1103 cursor = limit - v_1;
1106 if (!(eq_s_b(1,
"i")))
1113 v_3 = limit - cursor;
1115 if (!(eq_s_b(1,
"c")))
1119 cursor = limit - v_3;
1139 private bool CanStem()
1141 bool subroot =
false;
1169 if (!r_mark_regions())
1176 limit_backward = cursor; cursor = limit;
1179 v_3 = limit - cursor;
1186 v_4 = limit - cursor;
1191 v_5 = limit - cursor;
1196 v_6 = limit - cursor;
1200 if (!r_standard_suffix())
1207 if (subroot) { subroot =
false;
break; }
1208 cursor = limit - v_6;
1210 if (!r_verb_suffix())
1216 if (subroot) { subroot =
false;
break; }
1217 cursor = limit - v_5;
1219 v_7 = limit - cursor;
1226 if (!(eq_s_b(1,
"i")))
1233 v_8 = limit - cursor;
1235 if (!(eq_s_b(1,
"c")))
1239 cursor = limit - v_8;
1248 cursor = limit - v_7;
1252 if (subroot) { subroot =
false;
break; }
1253 cursor = limit - v_4;
1255 if (!r_residual_suffix())
1261 if (subroot) { subroot =
false;
break; }
1263 cursor = limit - v_3;
1265 v_9 = limit - cursor;
1269 if (!r_residual_form())
1274 cursor = limit - v_9;
1275 cursor = limit_backward;
1296 this.setCurrent(s.ToLowerInvariant());
1298 return this.getCurrent();