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, 4,
"",
this),
new Among(
"I", 0, 1,
"",
this),
new Among(
"U", 0, 2,
"",
this),
new Among(
"Y", 0, 3,
"",
this)};
36 a_1 =
new Among[]{
new Among(
"iqU", - 1, 3,
"",
this),
new Among(
"abl", - 1, 3,
"",
this),
new Among(
"I\u00E8r", - 1, 4,
"",
this),
new Among(
"i\u00E8r", - 1, 4,
"",
this),
new Among(
"eus", - 1, 2,
"",
this),
new Among(
"iv", - 1, 1,
"",
this)};
37 a_2 =
new Among[]{
new Among(
"ic", - 1, 2,
"",
this),
new Among(
"abil", - 1, 1,
"",
this),
new Among(
"iv", - 1, 3,
"",
this)};
38 a_3 =
new Among[]{
new Among(
"iqUe", - 1, 1,
"",
this),
new Among(
"atrice", - 1, 2,
"",
this),
new Among(
"ance", - 1, 1,
"",
this),
new Among(
"ence", - 1, 5,
"",
this),
new Among(
"logie", - 1, 3,
"",
this),
new Among(
"able", - 1, 1,
"",
this),
new Among(
"isme", - 1, 1,
"",
this),
new Among(
"euse", - 1, 11,
"",
this),
new Among(
"iste", - 1, 1,
"",
this),
new Among(
"ive", - 1, 8,
"",
this),
new Among(
"if", - 1, 8,
"",
this),
new Among(
"usion", - 1, 4,
"",
this),
new Among(
"ation", - 1, 2,
"",
this),
new Among(
"ution", - 1, 4,
"",
this),
new Among(
"ateur", - 1, 2,
"",
this),
new Among(
"iqUes", - 1, 1,
"",
this),
new Among(
"atrices", - 1, 2,
"",
this),
new Among(
"ances", - 1, 1,
"",
this),
new Among(
"ences", - 1, 5,
"",
this),
new Among(
"logies", - 1, 3,
"",
this),
new Among(
"ables", - 1, 1,
"",
this),
new Among(
"ismes", - 1, 1,
"",
this),
new Among(
"euses", - 1, 11,
"",
this),
new Among(
"istes", - 1, 1,
"",
this),
new Among(
"ives", - 1, 8,
"",
this),
new Among(
"ifs", - 1, 8,
"",
this),
new Among(
"usions", - 1, 4,
"",
this),
new Among(
"ations", - 1, 2,
"",
this),
new Among(
"utions", - 1, 4,
"",
this),
new Among(
"ateurs", - 1, 2,
"",
this),
new Among(
"ments", - 1, 15,
"",
this),
new Among(
"ements", 30, 6,
"",
this),
new Among(
"issements", 31, 12,
"",
this),
new Among(
"it\u00E9s", - 1, 7,
"",
this),
new Among(
"ment", - 1, 15,
"",
this),
new Among(
"ement", 34, 6,
"",
this),
new Among(
"issement", 35, 12,
"",
this),
new Among(
"amment", 34, 13,
"",
this),
new Among(
"emment", 34, 14,
"",
this),
new Among(
"aux", - 1, 10,
"",
this),
new Among(
"eaux", 39, 9,
"",
this),
new Among(
"eux", - 1, 1,
"",
this),
new Among(
"it\u00E9", - 1, 7,
"",
this)};
39 a_4 =
new Among[]{
new Among(
"ira", - 1, 1,
"",
this),
new Among(
"ie", - 1, 1,
"",
this),
new Among(
"isse", - 1, 1,
"",
this),
new Among(
"issante", - 1, 1,
"",
this),
new Among(
"i", - 1, 1,
"",
this),
new Among(
"irai", 4, 1,
"",
this),
new Among(
"ir", - 1, 1,
"",
this),
new Among(
"iras", - 1, 1,
"",
this),
new Among(
"ies", - 1, 1,
"",
this),
new Among(
"\u00EEmes", - 1, 1,
"",
this),
new Among(
"isses", - 1, 1,
"",
this),
new Among(
"issantes", - 1, 1,
"",
this),
new Among(
"\u00EEtes", - 1, 1,
"",
this),
new Among(
"is", - 1, 1,
"",
this),
new Among(
"irais", 13, 1,
"",
this),
new Among(
"issais", 13, 1,
"",
this),
new Among(
"irions", - 1, 1,
"",
this),
new Among(
"issions", - 1, 1,
"",
this),
new Among(
"irons", - 1, 1,
"",
this),
new Among(
"issons", - 1, 1,
"",
this),
new Among(
"issants", - 1, 1,
"",
this),
new Among(
"it", - 1, 1,
"",
this),
new Among(
"irait", 21, 1,
"",
this),
new Among(
"issait", 21, 1,
"",
this),
new Among(
"issant", - 1, 1,
"",
this),
new Among(
"iraIent", - 1, 1,
"",
this),
new Among(
"issaIent", - 1, 1,
"",
this),
new Among(
"irent", - 1, 1,
"",
this),
new Among(
"issent", - 1, 1,
"",
this),
new Among(
"iront", - 1, 1,
"",
this),
new Among(
"\u00EEt", - 1, 1,
"",
this),
new Among(
"iriez", - 1, 1,
"",
this),
new Among(
"issiez", - 1, 1,
"",
this),
new Among(
"irez", - 1, 1,
"",
this),
new Among(
"issez", - 1, 1,
"",
this)};
40 a_5 =
new Among[]{
new Among(
"a", - 1, 3,
"",
this),
new Among(
"era", 0, 2,
"",
this),
new Among(
"asse", - 1, 3,
"",
this),
new Among(
"ante", - 1, 3,
"",
this),
new Among(
"\u00E9e", - 1, 2,
"",
this),
new Among(
"ai", - 1, 3,
"",
this),
new Among(
"erai", 5, 2,
"",
this),
new Among(
"er", - 1, 2,
"",
this),
new Among(
"as", - 1, 3,
"",
this),
new Among(
"eras", 8, 2,
"",
this),
new Among(
"\u00E2mes", - 1, 3,
"",
this),
new Among(
"asses", - 1, 3,
"",
this),
new Among(
"antes", - 1, 3,
"",
this),
new Among(
"\u00E2tes", - 1, 3,
"",
this),
new Among(
"\u00E9es", - 1, 2,
"",
this),
new Among(
"ais", - 1, 3,
"",
this),
new Among(
"erais", 15, 2,
"",
this),
new Among(
"ions", - 1, 1,
"",
this),
new Among(
"erions", 17, 2,
"",
this),
new Among(
"assions", 17, 3,
"",
this),
new Among(
"erons", - 1, 2,
"",
this),
new Among(
"ants", - 1, 3,
"",
this),
new Among(
"\u00E9s", - 1, 2,
"",
this),
new Among(
"ait", - 1, 3,
"",
this),
new Among(
"erait", 23, 2,
"",
this),
new Among(
"ant", - 1, 3,
"",
this),
new Among(
"aIent", - 1, 3,
"",
this),
new Among(
"eraIent", 26, 2,
"",
this),
new Among(
"\u00E8rent", - 1, 2,
"",
this),
new Among(
"assent", - 1, 3,
"",
this),
new Among(
"eront", - 1, 2,
"",
this),
new Among(
"\u00E2t", - 1, 3,
"",
this),
new Among(
"ez", - 1, 2,
"",
this),
new Among(
"iez", 32, 2,
"",
this),
new Among(
"eriez", 33, 2,
"",
this),
new Among(
"assiez", 33, 3,
"",
this),
new Among(
"erez", 32, 2,
"",
this),
new Among(
"\u00E9", - 1, 2,
"",
this)};
41 a_6 =
new Among[]{
new Among(
"e", - 1, 3,
"",
this),
new Among(
"I\u00E8re", 0, 2,
"",
this),
new Among(
"i\u00E8re", 0, 2,
"",
this),
new Among(
"ion", - 1, 1,
"",
this),
new Among(
"Ier", - 1, 2,
"",
this),
new Among(
"ier", - 1, 2,
"",
this),
new Among(
"\u00EB", - 1, 4,
"",
this)};
42 a_7 =
new Among[]{
new Among(
"ell", - 1, - 1,
"",
this),
new Among(
"eill", - 1, - 1,
"",
this),
new Among(
"enn", - 1, - 1,
"",
this),
new Among(
"onn", - 1, - 1,
"",
this),
new Among(
"ett", - 1, - 1,
"",
this)};
53 private static readonly
char[] g_v =
new char[]{(char) (17), (char) (65), (char) (16), (char) (1), (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) (130), (char) (103), (char) (8), (char) (5)};
54 private static readonly
char[] g_keep_with_s =
new char[]{(char) (1), (char) (65), (char) (20), (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)};
59 protected internal virtual void copy_from(FrenchStemmer other)
64 base.copy_from(other);
67 private bool r_prelude()
93 if (!(in_grouping(g_v, 97, 251)))
113 if (!(in_grouping(g_v, 97, 251)))
136 if (!(in_grouping(g_v, 97, 251)))
183 if (!(in_grouping(g_v, 97, 251)))
252 private bool r_mark_regions()
273 if (!(in_grouping(g_v, 97, 251)))
277 if (!(in_grouping(g_v, 97, 251)))
306 if (!(in_grouping(g_v, 97, 251)))
347 if (!(in_grouping(g_v, 97, 251)))
371 if (!(out_grouping(g_v, 97, 251)))
397 if (!(in_grouping(g_v, 97, 251)))
421 if (!(out_grouping(g_v, 97, 251)))
451 private bool r_postlude()
465 among_var = find_among(a_0, 4);
525 if (!(I_pV <= cursor))
534 if (!(I_p1 <= cursor))
543 if (!(I_p2 <= cursor))
550 private bool r_standard_suffix()
568 among_var = find_among_b(a_3, 43);
602 v_1 = limit - cursor;
609 if (!(eq_s_b(2,
"ic")))
611 cursor = limit - v_1;
619 v_2 = limit - cursor;
636 cursor = limit - v_2;
693 v_3 = limit - cursor;
700 among_var = find_among_b(a_1, 6);
703 cursor = limit - v_3;
712 cursor = limit - v_3;
720 cursor = limit - v_3;
728 if (!(eq_s_b(2,
"at")))
730 cursor = limit - v_3;
738 cursor = limit - v_3;
750 v_4 = limit - cursor;
767 cursor = limit - v_4;
772 cursor = limit - v_3;
789 cursor = limit - v_3;
801 cursor = limit - v_3;
825 v_5 = limit - cursor;
832 among_var = find_among_b(a_2, 3);
835 cursor = limit - v_5;
844 cursor = limit - v_5;
852 v_6 = limit - cursor;
869 cursor = limit - v_6;
883 v_7 = limit - cursor;
900 cursor = limit - v_7;
915 cursor = limit - v_5;
939 v_8 = limit - cursor;
946 if (!(eq_s_b(2,
"at")))
948 cursor = limit - v_8;
956 cursor = limit - v_8;
964 if (!(eq_s_b(2,
"ic")))
966 cursor = limit - v_8;
974 v_9 = limit - cursor;
991 cursor = limit - v_9;
1028 v_10 = limit - cursor;
1045 cursor = limit - v_10;
1068 if (!(out_grouping_b(g_v, 97, 251)))
1105 v_11 = limit - cursor;
1107 if (!(in_grouping_b(g_v, 97, 251)))
1116 cursor = limit - v_11;
1126 private bool r_i_verb_suffix()
1132 v_1 = limit - cursor;
1139 v_2 = limit_backward;
1140 limit_backward = cursor;
1141 cursor = limit - v_1;
1146 among_var = find_among_b(a_4, 35);
1149 limit_backward = v_2;
1158 limit_backward = v_2;
1163 if (!(out_grouping_b(g_v, 97, 251)))
1165 limit_backward = v_2;
1172 limit_backward = v_2;
1176 private bool r_verb_suffix()
1183 v_1 = limit - cursor;
1190 v_2 = limit_backward;
1191 limit_backward = cursor;
1192 cursor = limit - v_1;
1197 among_var = find_among_b(a_5, 38);
1200 limit_backward = v_2;
1209 limit_backward = v_2;
1217 limit_backward = v_2;
1235 v_3 = limit - cursor;
1242 if (!(eq_s_b(1,
"e")))
1244 cursor = limit - v_3;
1258 limit_backward = v_2;
1262 private bool r_residual_suffix()
1272 v_1 = limit - cursor;
1279 if (!(eq_s_b(1,
"s")))
1281 cursor = limit - v_1;
1287 v_2 = limit - cursor;
1288 if (!(out_grouping_b(g_keep_with_s, 97, 232)))
1290 cursor = limit - v_1;
1293 cursor = limit - v_2;
1302 v_3 = limit - cursor;
1309 v_4 = limit_backward;
1310 limit_backward = cursor;
1311 cursor = limit - v_3;
1316 among_var = find_among_b(a_6, 7);
1319 limit_backward = v_4;
1328 limit_backward = v_4;
1336 limit_backward = v_4;
1342 v_5 = limit - cursor;
1346 if (!(eq_s_b(1,
"s")))
1356 cursor = limit - v_5;
1358 if (!(eq_s_b(1,
"t")))
1360 limit_backward = v_4;
1387 if (!(eq_s_b(2,
"gu")))
1389 limit_backward = v_4;
1396 limit_backward = v_4;
1400 private bool r_un_double()
1405 v_1 = limit - cursor;
1407 if (find_among_b(a_7, 5) == 0)
1411 cursor = limit - v_1;
1415 if (cursor <= limit_backward)
1427 private bool r_un_accent()
1439 if (!(out_grouping_b(g_v, 97, 251)))
1468 v_3 = limit - cursor;
1472 if (!(eq_s_b(1,
"\u00E9")))
1482 cursor = limit - v_3;
1484 if (!(eq_s_b(1,
"\u00E8")))
1497 public override bool Stem()
1531 if (!r_mark_regions())
1542 limit_backward = cursor; cursor = limit;
1545 v_3 = limit - cursor;
1552 v_4 = limit - cursor;
1557 v_5 = limit - cursor;
1562 v_6 = limit - cursor;
1566 if (!r_standard_suffix())
1576 cursor = limit - v_6;
1580 if (!r_i_verb_suffix())
1590 cursor = limit - v_6;
1592 if (!r_verb_suffix())
1601 cursor = limit - v_5;
1603 v_7 = limit - cursor;
1612 v_8 = limit - cursor;
1617 if (!(eq_s_b(1,
"Y")))
1631 cursor = limit - v_8;
1634 if (!(eq_s_b(1,
"\u00E7")))
1636 cursor = limit - v_7;
1659 cursor = limit - v_4;
1661 if (!r_residual_suffix())
1675 cursor = limit - v_3;
1677 v_9 = limit - cursor;
1690 cursor = limit - v_9;
1692 v_10 = limit - cursor;
1705 cursor = limit - v_10;
1706 cursor = limit_backward;