20 using Among = SF.Snowball.Among;
22 namespace SF.Snowball.Ext
24 #pragma warning disable 162,164
33 private void InitBlock()
35 a_0 =
new Among[]{
new Among(
"", - 1, 7,
"",
this),
new Among(
"qu", 0, 6,
"",
this),
new Among(
"\u00E1", 0, 1,
"",
this),
new Among(
"\u00E9", 0, 2,
"",
this),
new Among(
"\u00ED", 0, 3,
"",
this),
new Among(
"\u00F3", 0, 4,
"",
this),
new Among(
"\u00FA", 0, 5,
"",
this)};
36 a_1 =
new Among[]{
new Among(
"", - 1, 3,
"",
this),
new Among(
"I", 0, 1,
"",
this),
new Among(
"U", 0, 2,
"",
this)};
37 a_2 =
new Among[]{
new Among(
"la", - 1, - 1,
"",
this),
new Among(
"cela", 0, - 1,
"",
this),
new Among(
"gliela", 0, - 1,
"",
this),
new Among(
"mela", 0, - 1,
"",
this),
new Among(
"tela", 0, - 1,
"",
this),
new Among(
"vela", 0, - 1,
"",
this),
new Among(
"le", - 1, - 1,
"",
this),
new Among(
"cele", 6, - 1,
"",
this),
new Among(
"gliele", 6, - 1,
"",
this),
new Among(
"mele", 6, - 1,
"",
this),
new Among(
"tele", 6, - 1,
"",
this),
new Among(
"vele", 6, - 1,
"",
this),
new Among(
"ne", - 1, - 1,
"",
this),
new Among(
"cene", 12, - 1,
"",
this),
new Among(
"gliene", 12, - 1,
"",
this),
new Among(
"mene", 12, - 1,
"",
this),
new Among(
"sene", 12, - 1,
"",
this),
new Among(
"tene", 12, - 1,
"",
this),
new Among(
"vene", 12, - 1,
"",
this),
new Among(
"ci", - 1, - 1,
"",
this),
new Among(
"li", - 1, - 1,
"",
this),
new Among(
"celi", 20, - 1,
"",
this),
new Among(
"glieli", 20, - 1,
"",
this),
new Among(
"meli", 20, - 1,
"",
this),
new Among(
"teli", 20, - 1,
"",
this),
new Among(
"veli", 20, - 1,
"",
this),
new Among(
"gli", 20, - 1,
"",
this),
new Among(
"mi", - 1, - 1,
"",
this),
new Among(
"si", - 1, - 1,
"",
this),
new Among(
"ti", - 1, - 1,
"",
this),
new Among(
"vi", - 1, - 1,
"",
this),
new Among(
"lo", - 1, - 1,
"",
this),
new Among(
"celo", 31, - 1,
"",
this),
new Among(
"glielo", 31, - 1,
"",
this),
new Among(
"melo", 31, - 1,
"",
this),
new Among(
"telo", 31, - 1,
"",
this),
new Among(
"velo", 31, - 1,
"",
this)};
38 a_3 =
new Among[]{
new Among(
"ando", - 1, 1,
"",
this),
new Among(
"endo", - 1, 1,
"",
this),
new Among(
"ar", - 1, 2,
"",
this),
new Among(
"er", - 1, 2,
"",
this),
new Among(
"ir", - 1, 2,
"",
this)};
39 a_4 =
new Among[]{
new Among(
"ic", - 1, - 1,
"",
this),
new Among(
"abil", - 1, - 1,
"",
this),
new Among(
"os", - 1, - 1,
"",
this),
new Among(
"iv", - 1, 1,
"",
this)};
40 a_5 =
new Among[]{
new Among(
"ic", - 1, 1,
"",
this),
new Among(
"abil", - 1, 1,
"",
this),
new Among(
"iv", - 1, 1,
"",
this)};
41 a_6 =
new Among[]{
new Among(
"ica", - 1, 1,
"",
this),
new Among(
"logia", - 1, 3,
"",
this),
new Among(
"osa", - 1, 1,
"",
this),
new Among(
"ista", - 1, 1,
"",
this),
new Among(
"iva", - 1, 9,
"",
this),
new Among(
"anza", - 1, 1,
"",
this),
new Among(
"enza", - 1, 5,
"",
this),
new Among(
"ice", - 1, 1,
"",
this),
new Among(
"atrice", 7, 1,
"",
this),
new Among(
"iche", - 1, 1,
"",
this),
new Among(
"logie", - 1, 3,
"",
this),
new Among(
"abile", - 1, 1,
"",
this),
new Among(
"ibile", - 1, 1,
"",
this),
new Among(
"usione", - 1, 4,
"",
this),
new Among(
"azione", - 1, 2,
"",
this),
new Among(
"uzione", - 1, 4,
"",
this),
new Among(
"atore", - 1, 2,
"",
this),
new Among(
"ose", - 1, 1,
"",
this),
new Among(
"mente", - 1, 1,
"",
this),
new Among(
"amente", 18, 7,
"",
this),
new Among(
"iste", - 1, 1,
"",
this),
new Among(
"ive", - 1, 9,
"",
this),
new Among(
"anze", - 1, 1,
"",
this),
new Among(
"enze", - 1, 5,
"",
this),
new Among(
"ici", - 1, 1,
"",
this),
new Among(
"atrici", 24, 1,
"",
this),
new Among(
"ichi", - 1, 1,
"",
this),
new Among(
"abili", - 1, 1,
"",
this),
new Among(
"ibili", - 1, 1,
"",
this),
new Among(
"ismi", - 1, 1,
"",
this),
new Among(
"usioni", - 1, 4,
"",
this),
new Among(
"azioni", - 1, 2,
"",
this),
new Among(
"uzioni", - 1, 4,
"",
this),
new Among(
"atori", - 1, 2,
"",
this),
new Among(
"osi", - 1, 1,
"",
this),
new Among(
"amenti", - 1, 6,
"",
this),
new Among(
"imenti", - 1, 6,
"",
this),
new Among(
"isti", - 1, 1,
"",
this),
new Among(
"ivi", - 1, 9,
"",
this),
new Among(
"ico", - 1, 1,
"",
this),
new Among(
"ismo", - 1, 1,
"",
this),
new Among(
"oso", - 1, 1,
"",
this),
new Among(
"amento", - 1, 6,
"",
this),
new Among(
"imento", - 1, 6,
"",
this),
new Among(
"ivo", - 1, 9,
"",
this),
new Among(
"it\u00E0", - 1, 8,
"",
this),
new Among(
"ist\u00E0", - 1, 1,
"",
this),
new Among(
"ist\u00E8", - 1, 1,
"",
this),
new Among(
"ist\u00EC", - 1, 1,
"",
this)};
42 a_7 =
new Among[]{
new Among(
"isca", - 1, 1,
"",
this),
new Among(
"enda", - 1, 1,
"",
this),
new Among(
"ata", - 1, 1,
"",
this),
new Among(
"ita", - 1, 1,
"",
this),
new Among(
"uta", - 1, 1,
"",
this),
new Among(
"ava", - 1, 1,
"",
this),
new Among(
"eva", - 1, 1,
"",
this),
new Among(
"iva", - 1, 1,
"",
this),
new Among(
"erebbe", - 1, 1,
"",
this),
new Among(
"irebbe", - 1, 1,
"",
this),
new Among(
"isce", - 1, 1,
"",
this),
new Among(
"ende", - 1, 1,
"",
this),
new Among(
"are", - 1, 1,
"",
this),
new Among(
"ere", - 1, 1,
"",
this),
new Among(
"ire", - 1, 1,
"",
this),
new Among(
"asse", - 1, 1,
"",
this),
new Among(
"ate", - 1, 1,
"",
this),
new Among(
"avate", 16, 1,
"",
this),
new Among(
"evate", 16, 1,
"",
this),
new Among(
"ivate", 16, 1,
"",
this),
new Among(
"ete", - 1, 1,
"",
this),
new Among(
"erete", 20, 1,
"",
this),
new Among(
"irete", 20, 1,
"",
this),
new Among(
"ite", - 1, 1,
"",
this),
new Among(
"ereste", - 1, 1,
"",
this),
new Among(
"ireste", - 1, 1,
"",
this),
new Among(
"ute", - 1, 1,
"",
this),
new Among(
"erai", - 1, 1,
"",
this),
new Among(
"irai", - 1, 1,
"",
this),
new Among(
"isci", - 1, 1,
"",
this),
new Among(
"endi", - 1, 1,
"",
this),
new Among(
"erei", - 1, 1,
"",
this),
new Among(
"irei", - 1, 1,
"",
this),
new Among(
"assi", - 1, 1,
"",
this),
new Among(
"ati", - 1, 1,
"",
this),
new Among(
"iti", - 1, 1,
"",
this),
new Among(
"eresti", - 1, 1,
"",
this),
new Among(
"iresti", - 1, 1,
"",
this),
new Among(
"uti", - 1, 1,
"",
this),
new Among(
"avi", - 1, 1,
"",
this),
new Among(
"evi", - 1, 1,
"",
this),
new Among(
"ivi", - 1, 1,
"",
this),
new Among(
"isco", - 1, 1,
"",
this),
new Among(
"ando", - 1, 1,
"",
this),
new Among(
"endo", - 1, 1,
"",
this),
new Among(
"Yamo", - 1, 1,
"",
this),
new Among(
"iamo", - 1, 1,
"",
this),
new Among(
"avamo", - 1, 1,
"",
this),
new Among(
"evamo", - 1, 1,
"",
this),
new Among(
"ivamo", - 1, 1,
"",
this),
new Among(
"eremo", - 1, 1,
"",
this),
new Among(
"iremo", - 1, 1,
"",
this),
new Among(
"assimo", - 1, 1,
"",
this),
new Among(
"ammo", - 1, 1,
"",
this),
new Among(
43 "emmo", - 1, 1,
"",
this),
new Among(
"eremmo", 54, 1,
"",
this),
new Among(
"iremmo", 54, 1,
"",
this),
new Among(
"immo", - 1, 1,
"",
this),
new Among(
"ano", - 1, 1,
"",
this),
new Among(
"iscano", 58, 1,
"",
this),
new Among(
"avano", 58, 1,
"",
this),
new Among(
"evano", 58, 1,
"",
this),
new Among(
"ivano", 58, 1,
"",
this),
new Among(
"eranno", - 1, 1,
"",
this),
new Among(
"iranno", - 1, 1,
"",
this),
new Among(
"ono", - 1, 1,
"",
this),
new Among(
"iscono", 65, 1,
"",
this),
new Among(
"arono", 65, 1,
"",
this),
new Among(
"erono", 65, 1,
"",
this),
new Among(
"irono", 65, 1,
"",
this),
new Among(
"erebbero", - 1, 1,
"",
this),
new Among(
"irebbero", - 1, 1,
"",
this),
new Among(
"assero", - 1, 1,
"",
this),
new Among(
"essero", - 1, 1,
"",
this),
new Among(
"issero", - 1, 1,
"",
this),
new Among(
"ato", - 1, 1,
"",
this),
new Among(
"ito", - 1, 1,
"",
this),
new Among(
"uto", - 1, 1,
"",
this),
new Among(
"avo", - 1, 1,
"",
this),
new Among(
"evo", - 1, 1,
"",
this),
new Among(
"ivo", - 1, 1,
"",
this),
new Among(
"ar", - 1, 1,
"",
this),
new Among(
"ir", - 1, 1,
"",
this),
new Among(
"er\u00E0", - 1, 1,
"",
this),
new Among(
"ir\u00E0", - 1, 1,
"",
this),
new Among(
"er\u00F2", - 1, 1,
"",
this),
new Among(
"ir\u00F2", - 1, 1,
"",
this)};
54 private static readonly
char[] g_v =
new char[]{(char) (17), (char) (65), (char) (16), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (128), (char) (128), (char) (8), (char) (2), (char) (1)};
55 private static readonly
char[] g_AEIO =
new char[]{(char) (17), (char) (65), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (0), (char) (128), (char) (128), (char) (8), (char) (2)};
56 private static readonly
char[] g_CG =
new char[]{(char) (17)};
62 protected internal virtual void copy_from(ItalianStemmer other)
67 base.copy_from(other);
70 private bool r_prelude()
91 among_var = find_among(a_0, 7);
107 slice_from(
"\u00E0");
113 slice_from(
"\u00E8");
119 slice_from(
"\u00EC");
125 slice_from(
"\u00F2");
131 slice_from(
"\u00F9");
178 if (!(in_grouping(g_v, 97, 249)))
198 if (!(in_grouping(g_v, 97, 249)))
219 if (!(in_grouping(g_v, 97, 249)))
264 private bool r_mark_regions()
288 if (!(in_grouping(g_v, 97, 249)))
300 if (!(out_grouping(g_v, 97, 249)))
309 if (!(in_grouping(g_v, 97, 249)))
336 if (!(in_grouping(g_v, 97, 249)))
345 if (!(out_grouping(g_v, 97, 249)))
374 if (!(out_grouping(g_v, 97, 249)))
385 if (!(out_grouping(g_v, 97, 249)))
394 if (!(in_grouping(g_v, 97, 249)))
421 if (!(in_grouping(g_v, 97, 249)))
456 if (!(in_grouping(g_v, 97, 249)))
480 if (!(out_grouping(g_v, 97, 249)))
506 if (!(in_grouping(g_v, 97, 249)))
530 if (!(out_grouping(g_v, 97, 249)))
560 private bool r_postlude()
574 among_var = find_among(a_1, 3);
628 if (!(I_pV <= cursor))
637 if (!(I_p1 <= cursor))
646 if (!(I_p2 <= cursor))
653 private bool r_attached_pronoun()
660 if (find_among_b(a_2, 37) == 0)
667 among_var = find_among_b(a_3, 5);
699 private bool r_standard_suffix()
710 among_var = find_among_b(a_6, 49);
744 v_1 = limit - cursor;
751 if (!(eq_s_b(2,
"ic")))
753 cursor = limit - v_1;
761 cursor = limit - v_1;
827 v_2 = limit - cursor;
834 among_var = find_among_b(a_4, 4);
837 cursor = limit - v_2;
845 cursor = limit - v_2;
854 cursor = limit - v_2;
862 if (!(eq_s_b(2,
"at")))
864 cursor = limit - v_2;
872 cursor = limit - v_2;
896 v_3 = limit - cursor;
903 among_var = find_among_b(a_5, 3);
906 cursor = limit - v_3;
915 cursor = limit - v_3;
923 cursor = limit - v_3;
947 v_4 = limit - cursor;
954 if (!(eq_s_b(2,
"at")))
956 cursor = limit - v_4;
964 cursor = limit - v_4;
972 if (!(eq_s_b(2,
"ic")))
974 cursor = limit - v_4;
982 cursor = limit - v_4;
997 private bool r_verb_suffix()
1003 v_1 = limit - cursor;
1010 v_2 = limit_backward;
1011 limit_backward = cursor;
1012 cursor = limit - v_1;
1017 among_var = find_among_b(a_7, 87);
1020 limit_backward = v_2;
1029 limit_backward = v_2;
1038 limit_backward = v_2;
1042 private bool r_vowel_suffix()
1048 v_1 = limit - cursor;
1054 if (!(in_grouping_b(g_AEIO, 97, 242)))
1056 cursor = limit - v_1;
1064 cursor = limit - v_1;
1072 if (!(eq_s_b(1,
"i")))
1074 cursor = limit - v_1;
1082 cursor = limit - v_1;
1093 v_2 = limit - cursor;
1100 if (!(eq_s_b(1,
"h")))
1102 cursor = limit - v_2;
1107 if (!(in_grouping_b(g_CG, 99, 103)))
1109 cursor = limit - v_2;
1115 cursor = limit - v_2;
1128 public override bool Stem()
1158 if (!r_mark_regions())
1169 limit_backward = cursor; cursor = limit;
1172 v_3 = limit - cursor;
1176 if (!r_attached_pronoun())
1185 cursor = limit - v_3;
1187 v_4 = limit - cursor;
1194 v_5 = limit - cursor;
1198 if (!r_standard_suffix())
1208 cursor = limit - v_5;
1210 if (!r_verb_suffix())
1224 cursor = limit - v_4;
1226 v_6 = limit - cursor;
1230 if (!r_vowel_suffix())
1239 cursor = limit - v_6;
1240 cursor = limit_backward;