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, 7, null ),
25 new Among (
"qu", 0, 6, null ),
26 new Among (
"\u00E1", 0, 1, null ),
27 new Among (
"\u00E9", 0, 2, null ),
28 new Among (
"\u00ED", 0, 3, null ),
29 new Among (
"\u00F3", 0, 4, null ),
30 new Among (
"\u00FA", 0, 5, null )
34 private readonly
static Among[] a_1 =
36 new Among (
"", -1, 3, null ),
37 new Among (
"I", 0, 1, null ),
38 new Among (
"U", 0, 2, null )
42 private readonly
static Among[] a_2 =
44 new Among (
"la", -1, -1, null ),
45 new Among (
"cela", 0, -1, null ),
46 new Among (
"gliela", 0, -1, null ),
47 new Among (
"mela", 0, -1, null ),
48 new Among (
"tela", 0, -1, null ),
49 new Among (
"vela", 0, -1, null ),
50 new Among (
"le", -1, -1, null ),
51 new Among (
"cele", 6, -1, null ),
52 new Among (
"gliele", 6, -1, null ),
53 new Among (
"mele", 6, -1, null ),
54 new Among (
"tele", 6, -1, null ),
55 new Among (
"vele", 6, -1, null ),
56 new Among (
"ne", -1, -1, null ),
57 new Among (
"cene", 12, -1, null ),
58 new Among (
"gliene", 12, -1, null ),
59 new Among (
"mene", 12, -1, null ),
60 new Among (
"sene", 12, -1, null ),
61 new Among (
"tene", 12, -1, null ),
62 new Among (
"vene", 12, -1, null ),
63 new Among (
"ci", -1, -1, null ),
64 new Among (
"li", -1, -1, null ),
65 new Among (
"celi", 20, -1, null ),
66 new Among (
"glieli", 20, -1, null ),
67 new Among (
"meli", 20, -1, null ),
68 new Among (
"teli", 20, -1, null ),
69 new Among (
"veli", 20, -1, null ),
70 new Among (
"gli", 20, -1, null ),
71 new Among (
"mi", -1, -1, null ),
72 new Among (
"si", -1, -1, null ),
73 new Among (
"ti", -1, -1, null ),
74 new Among (
"vi", -1, -1, null ),
75 new Among (
"lo", -1, -1, null ),
76 new Among (
"celo", 31, -1, null ),
77 new Among (
"glielo", 31, -1, null ),
78 new Among (
"melo", 31, -1, null ),
79 new Among (
"telo", 31, -1, null ),
80 new Among (
"velo", 31, -1, null )
85 private readonly
static Among[] a_3 =
87 new Among (
"ando", -1, 1, null ),
88 new Among (
"endo", -1, 1, null ),
89 new Among (
"ar", -1, 2, null ),
90 new Among (
"er", -1, 2, null ),
91 new Among (
"ir", -1, 2, null )
95 private readonly
static Among[] a_4 =
97 new Among (
"ic", -1, -1, null ),
98 new Among (
"abil", -1, -1, null ),
99 new Among (
"os", -1, -1, null ),
100 new Among (
"iv", -1, 1, null )
104 private readonly
static Among[] a_5 =
106 new Among (
"ic", -1, 1, null ),
107 new Among (
"abil", -1, 1, null ),
108 new Among (
"iv", -1, 1, null )
112 private readonly
static Among[] a_6 =
114 new Among (
"ica", -1, 1, null ),
115 new Among (
"logia", -1, 3, null ),
116 new Among (
"osa", -1, 1, null ),
117 new Among (
"ista", -1, 1, null ),
118 new Among (
"iva", -1, 9, null ),
119 new Among (
"anza", -1, 1, null ),
120 new Among (
"enza", -1, 5, null ),
121 new Among (
"ice", -1, 1, null ),
122 new Among (
"atrice", 7, 1, null ),
123 new Among (
"iche", -1, 1, null ),
124 new Among (
"logie", -1, 3, null ),
125 new Among (
"abile", -1, 1, null ),
126 new Among (
"ibile", -1, 1, null ),
127 new Among (
"usione", -1, 4, null ),
128 new Among (
"azione", -1, 2, null ),
129 new Among (
"uzione", -1, 4, null ),
130 new Among (
"atore", -1, 2, null ),
131 new Among (
"ose", -1, 1, null ),
132 new Among (
"ante", -1, 1, null ),
133 new Among (
"mente", -1, 1, null ),
134 new Among (
"amente", 19, 7, null ),
135 new Among (
"iste", -1, 1, null ),
136 new Among (
"ive", -1, 9, null ),
137 new Among (
"anze", -1, 1, null ),
138 new Among (
"enze", -1, 5, null ),
139 new Among (
"ici", -1, 1, null ),
140 new Among (
"atrici", 25, 1, null ),
141 new Among (
"ichi", -1, 1, null ),
142 new Among (
"abili", -1, 1, null ),
143 new Among (
"ibili", -1, 1, null ),
144 new Among (
"ismi", -1, 1, null ),
145 new Among (
"usioni", -1, 4, null ),
146 new Among (
"azioni", -1, 2, null ),
147 new Among (
"uzioni", -1, 4, null ),
148 new Among (
"atori", -1, 2, null ),
149 new Among (
"osi", -1, 1, null ),
150 new Among (
"anti", -1, 1, null ),
151 new Among (
"amenti", -1, 6, null ),
152 new Among (
"imenti", -1, 6, null ),
153 new Among (
"isti", -1, 1, null ),
154 new Among (
"ivi", -1, 9, null ),
155 new Among (
"ico", -1, 1, null ),
156 new Among (
"ismo", -1, 1, null ),
157 new Among (
"oso", -1, 1, null ),
158 new Among (
"amento", -1, 6, null ),
159 new Among (
"imento", -1, 6, null ),
160 new Among (
"ivo", -1, 9, null ),
161 new Among (
"it\u00E0", -1, 8, null ),
162 new Among (
"ist\u00E0", -1, 1, null ),
163 new Among (
"ist\u00E8", -1, 1, null ),
164 new Among (
"ist\u00EC", -1, 1, null )
168 private readonly
static Among[] a_7 =
170 new Among (
"isca", -1, 1, null ),
171 new Among (
"enda", -1, 1, null ),
172 new Among (
"ata", -1, 1, null ),
173 new Among (
"ita", -1, 1, null ),
174 new Among (
"uta", -1, 1, null ),
175 new Among (
"ava", -1, 1, null ),
176 new Among (
"eva", -1, 1, null ),
177 new Among (
"iva", -1, 1, null ),
178 new Among (
"erebbe", -1, 1, null ),
179 new Among (
"irebbe", -1, 1, null ),
180 new Among (
"isce", -1, 1, null ),
181 new Among (
"ende", -1, 1, null ),
182 new Among (
"are", -1, 1, null ),
183 new Among (
"ere", -1, 1, null ),
184 new Among (
"ire", -1, 1, null ),
185 new Among (
"asse", -1, 1, null ),
186 new Among (
"ate", -1, 1, null ),
187 new Among (
"avate", 16, 1, null ),
188 new Among (
"evate", 16, 1, null ),
189 new Among (
"ivate", 16, 1, null ),
190 new Among (
"ete", -1, 1, null ),
191 new Among (
"erete", 20, 1, null ),
192 new Among (
"irete", 20, 1, null ),
193 new Among (
"ite", -1, 1, null ),
194 new Among (
"ereste", -1, 1, null ),
195 new Among (
"ireste", -1, 1, null ),
196 new Among (
"ute", -1, 1, null ),
197 new Among (
"erai", -1, 1, null ),
198 new Among (
"irai", -1, 1, null ),
199 new Among (
"isci", -1, 1, null ),
200 new Among (
"endi", -1, 1, null ),
201 new Among (
"erei", -1, 1, null ),
202 new Among (
"irei", -1, 1, null ),
203 new Among (
"assi", -1, 1, null ),
204 new Among (
"ati", -1, 1, null ),
205 new Among (
"iti", -1, 1, null ),
206 new Among (
"eresti", -1, 1, null ),
207 new Among (
"iresti", -1, 1, null ),
208 new Among (
"uti", -1, 1, null ),
209 new Among (
"avi", -1, 1, null ),
210 new Among (
"evi", -1, 1, null ),
211 new Among (
"ivi", -1, 1, null ),
212 new Among (
"isco", -1, 1, null ),
213 new Among (
"ando", -1, 1, null ),
214 new Among (
"endo", -1, 1, null ),
215 new Among (
"Yamo", -1, 1, null ),
216 new Among (
"iamo", -1, 1, null ),
217 new Among (
"avamo", -1, 1, null ),
218 new Among (
"evamo", -1, 1, null ),
219 new Among (
"ivamo", -1, 1, null ),
220 new Among (
"eremo", -1, 1, null ),
221 new Among (
"iremo", -1, 1, null ),
222 new Among (
"assimo", -1, 1, null ),
223 new Among (
"ammo", -1, 1, null ),
224 new Among (
"emmo", -1, 1, null ),
225 new Among (
"eremmo", 54, 1, null ),
226 new Among (
"iremmo", 54, 1, null ),
227 new Among (
"immo", -1, 1, null ),
228 new Among (
"ano", -1, 1, null ),
229 new Among (
"iscano", 58, 1, null ),
230 new Among (
"avano", 58, 1, null ),
231 new Among (
"evano", 58, 1, null ),
232 new Among (
"ivano", 58, 1, null ),
233 new Among (
"eranno", -1, 1, null ),
234 new Among (
"iranno", -1, 1, null ),
235 new Among (
"ono", -1, 1, null ),
236 new Among (
"iscono", 65, 1, null ),
237 new Among (
"arono", 65, 1, null ),
238 new Among (
"erono", 65, 1, null ),
239 new Among (
"irono", 65, 1, null ),
240 new Among (
"erebbero", -1, 1, null ),
241 new Among (
"irebbero", -1, 1, null ),
242 new Among (
"assero", -1, 1, null ),
243 new Among (
"essero", -1, 1, null ),
244 new Among (
"issero", -1, 1, null ),
245 new Among (
"ato", -1, 1, null ),
246 new Among (
"ito", -1, 1, null ),
247 new Among (
"uto", -1, 1, null ),
248 new Among (
"avo", -1, 1, null ),
249 new Among (
"evo", -1, 1, null ),
250 new Among (
"ivo", -1, 1, null ),
251 new Among (
"ar", -1, 1, null ),
252 new Among (
"ir", -1, 1, null ),
253 new Among (
"er\u00E0", -1, 1, null ),
254 new Among (
"ir\u00E0", -1, 1, null ),
255 new Among (
"er\u00F2", -1, 1, null ),
256 new Among (
"ir\u00F2", -1, 1, null )
261 private static readonly
char[] g_v = {(char)17, (
char)65, (char)16, (
char)0, (char)0, (
char)0, (char)0,
262 (
char)0, (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
263 (char)0, (
char)128,(char)128, (
char)8, (char)2, (
char)1 };
266 private static readonly
char[] g_AEIO = {(char)17, (
char)65, (char)0, (
char)0, (char)0, (
char)0, (char)0,
267 (
char)0, (char)0, (
char)0, (char)0, (
char)0, (char)0, (
char)0,
268 (char)0, (
char)128, (char)128, (
char)8, (char)2 };
270 private static readonly
char[] g_CG = { (char)17 };
286 private bool r_prelude()
288 bool subroot =
false;
299 replab0:
while (
true)
308 among_var = find_among(a_0, 7);
323 slice_from(
"\u00E0");
328 slice_from(
"\u00E8");
333 slice_from(
"\u00EC");
338 slice_from(
"\u00F2");
343 slice_from(
"\u00F9");
361 if (subroot) { subroot =
false;
break; }
372 replab2:
while (
true)
384 if (!(in_grouping(g_v, 97, 249)))
404 if (!(in_grouping(g_v, 97, 249)))
413 if (subroot) { subroot =
false;
break; }
424 if (!(in_grouping(g_v, 97, 249)))
432 if (subroot) { subroot =
false;
break; }
437 if (subroot) { subroot =
false;
break; }
446 if (subroot) { subroot =
false;
break; }
458 private bool r_mark_regions()
461 bool subroot =
false;
484 if (!(in_grouping(g_v, 97, 249)))
495 if (!(out_grouping(g_v, 97, 249)))
505 if (!(in_grouping(g_v, 97, 249)))
513 if (subroot) {
break; }
515 if (subroot) { subroot =
false;
break; }
523 if (subroot) { subroot =
false;
break; }
524 if (!subroot) { subroot =
true;
break; }
526 if (subroot) { subroot =
false;
break; }
529 if (!(in_grouping(g_v, 97, 249)))
539 if (!(out_grouping(g_v, 97, 249)))
550 if (subroot) { subroot =
false;
break; }
559 if (root) { root =
false;
break; }
566 if (root) { root =
false;
break; }
569 if (!(out_grouping(g_v, 97, 249)))
582 if (!(out_grouping(g_v, 97, 249)))
591 if (!(in_grouping(g_v, 97, 249)))
598 if (subroot) { subroot =
false;
break; }
601 subroot =
true;
break;
605 if (subroot) { subroot =
false;
break; }
613 if (subroot) { subroot =
false;
break; }
616 if (!(in_grouping(g_v, 97, 249)))
630 breakLab0:
if (subroot) { subroot =
false;
break; }
647 if (!(in_grouping(g_v, 97, 249)))
654 if (subroot) { subroot =
false;
break; }
663 if (subroot) { subroot =
false;
break; }
668 if (!(out_grouping(g_v, 97, 249)))
675 if (subroot) { subroot =
false;
break; }
683 if (subroot) { subroot =
false;
break; }
691 if (!(in_grouping(g_v, 97, 249)))
698 if (subroot) { subroot =
false;
break; }
706 if (subroot) { subroot =
false;
break; }
712 if (!(out_grouping(g_v, 97, 249)))
719 if (subroot) { subroot =
false;
break; }
727 if (subroot) { subroot =
false;
break; }
735 private bool r_postlude()
737 bool subroot =
false;
742 replab0:
while (
true)
751 among_var = find_among(a_1, 3);
784 if (subroot) { subroot =
false;
break; }
798 if (!(I_pV <= cursor))
807 if (!(I_p1 <= cursor))
816 if (!(I_p2 <= cursor))
823 private bool r_attached_pronoun()
830 if (find_among_b(a_2, 37) == 0)
837 among_var = find_among_b(a_3, 5);
866 private bool r_standard_suffix()
869 bool subroot =
false;
879 among_var = find_among_b(a_6, 51);
910 v_1 = limit - cursor;
917 if (!(eq_s_b(2,
"ic")))
919 cursor = limit - v_1;
927 cursor = limit - v_1;
984 v_2 = limit - cursor;
991 among_var = find_among_b(a_4, 4);
994 cursor = limit - v_2;
1002 cursor = limit - v_2;
1010 cursor = limit - v_2;
1018 if (!(eq_s_b(2,
"at")))
1020 cursor = limit - v_2;
1029 cursor = limit - v_2;
1037 if (subroot) { subroot =
false;
break; }
1050 v_3 = limit - cursor;
1057 among_var = find_among_b(a_5, 3);
1060 cursor = limit - v_3;
1068 cursor = limit - v_3;
1076 cursor = limit - v_3;
1084 if (subroot) { subroot =
false;
break; }
1097 v_4 = limit - cursor;
1105 if (!(eq_s_b(2,
"at")))
1107 cursor = limit - v_4;
1115 cursor = limit - v_4;
1123 if (!(eq_s_b(2,
"ic")))
1125 cursor = limit - v_4;
1133 cursor = limit - v_4;
1144 private bool r_verb_suffix()
1150 v_1 = limit - cursor;
1157 v_2 = limit_backward;
1158 limit_backward = cursor;
1159 cursor = limit - v_1;
1164 among_var = find_among_b(a_7, 87);
1167 limit_backward = v_2;
1175 limit_backward = v_2;
1183 limit_backward = v_2;
1187 private bool r_vowel_suffix()
1194 v_1 = limit - cursor;
1200 if (!(in_grouping_b(g_AEIO, 97, 242)))
1202 cursor = limit - v_1;
1210 cursor = limit - v_1;
1218 if (!(eq_s_b(1,
"i")))
1220 cursor = limit - v_1;
1228 cursor = limit - v_1;
1235 v_2 = limit - cursor;
1242 if (!(eq_s_b(1,
"h")))
1244 cursor = limit - v_2;
1249 if (!(in_grouping_b(g_CG, 99, 103)))
1251 cursor = limit - v_2;
1257 cursor = limit - v_2;
1266 private bool CanStem()
1268 bool subroot =
false;
1293 if (!r_mark_regions())
1300 limit_backward = cursor; cursor = limit;
1303 v_3 = limit - cursor;
1307 if (!r_attached_pronoun())
1312 cursor = limit - v_3;
1314 v_4 = limit - cursor;
1321 v_5 = limit - cursor;
1325 if (!r_standard_suffix())
1330 if (subroot) {
break; }
1332 if (subroot) { subroot =
false;
break; }
1333 cursor = limit - v_5;
1335 if (!r_verb_suffix())
1341 if (subroot) { subroot =
false;
break; }
1343 cursor = limit - v_4;
1345 v_6 = limit - cursor;
1349 if (!r_vowel_suffix())
1354 cursor = limit - v_6;
1355 cursor = limit_backward;
1376 this.setCurrent(s.ToLowerInvariant());
1378 return this.getCurrent();