blob: 69f697f34d075be892e44f9fa39f8b1f63e301ce [file] [log] [blame]
// Generated by Snowball 2.0.0 - https://snowballstem.org/
package org.tartarus.snowball.ext;
import org.tartarus.snowball.Among;
/**
* This class implements the stemming algorithm defined by a snowball script.
* <p>
* Generated by Snowball 2.0.0 - https://snowballstem.org/
* </p>
*/
@SuppressWarnings("unused")
public class FrenchStemmer extends org.tartarus.snowball.SnowballStemmer {
private static final long serialVersionUID = 1L;
private static final java.lang.invoke.MethodHandles.Lookup methodObject = java.lang.invoke.MethodHandles.lookup();
private final static Among a_0[] = {
new Among("col", -1, -1),
new Among("par", -1, -1),
new Among("tap", -1, -1)
};
private final static Among a_1[] = {
new Among("", -1, 7),
new Among("H", 0, 6),
new Among("He", 1, 4),
new Among("Hi", 1, 5),
new Among("I", 0, 1),
new Among("U", 0, 2),
new Among("Y", 0, 3)
};
private final static Among a_2[] = {
new Among("iqU", -1, 3),
new Among("abl", -1, 3),
new Among("I\u00E8r", -1, 4),
new Among("i\u00E8r", -1, 4),
new Among("eus", -1, 2),
new Among("iv", -1, 1)
};
private final static Among a_3[] = {
new Among("ic", -1, 2),
new Among("abil", -1, 1),
new Among("iv", -1, 3)
};
private final static Among a_4[] = {
new Among("iqUe", -1, 1),
new Among("atrice", -1, 2),
new Among("ance", -1, 1),
new Among("ence", -1, 5),
new Among("logie", -1, 3),
new Among("able", -1, 1),
new Among("isme", -1, 1),
new Among("euse", -1, 11),
new Among("iste", -1, 1),
new Among("ive", -1, 8),
new Among("if", -1, 8),
new Among("usion", -1, 4),
new Among("ation", -1, 2),
new Among("ution", -1, 4),
new Among("ateur", -1, 2),
new Among("iqUes", -1, 1),
new Among("atrices", -1, 2),
new Among("ances", -1, 1),
new Among("ences", -1, 5),
new Among("logies", -1, 3),
new Among("ables", -1, 1),
new Among("ismes", -1, 1),
new Among("euses", -1, 11),
new Among("istes", -1, 1),
new Among("ives", -1, 8),
new Among("ifs", -1, 8),
new Among("usions", -1, 4),
new Among("ations", -1, 2),
new Among("utions", -1, 4),
new Among("ateurs", -1, 2),
new Among("ments", -1, 15),
new Among("ements", 30, 6),
new Among("issements", 31, 12),
new Among("it\u00E9s", -1, 7),
new Among("ment", -1, 15),
new Among("ement", 34, 6),
new Among("issement", 35, 12),
new Among("amment", 34, 13),
new Among("emment", 34, 14),
new Among("aux", -1, 10),
new Among("eaux", 39, 9),
new Among("eux", -1, 1),
new Among("it\u00E9", -1, 7)
};
private final static Among a_5[] = {
new Among("ira", -1, 1),
new Among("ie", -1, 1),
new Among("isse", -1, 1),
new Among("issante", -1, 1),
new Among("i", -1, 1),
new Among("irai", 4, 1),
new Among("ir", -1, 1),
new Among("iras", -1, 1),
new Among("ies", -1, 1),
new Among("\u00EEmes", -1, 1),
new Among("isses", -1, 1),
new Among("issantes", -1, 1),
new Among("\u00EEtes", -1, 1),
new Among("is", -1, 1),
new Among("irais", 13, 1),
new Among("issais", 13, 1),
new Among("irions", -1, 1),
new Among("issions", -1, 1),
new Among("irons", -1, 1),
new Among("issons", -1, 1),
new Among("issants", -1, 1),
new Among("it", -1, 1),
new Among("irait", 21, 1),
new Among("issait", 21, 1),
new Among("issant", -1, 1),
new Among("iraIent", -1, 1),
new Among("issaIent", -1, 1),
new Among("irent", -1, 1),
new Among("issent", -1, 1),
new Among("iront", -1, 1),
new Among("\u00EEt", -1, 1),
new Among("iriez", -1, 1),
new Among("issiez", -1, 1),
new Among("irez", -1, 1),
new Among("issez", -1, 1)
};
private final static Among a_6[] = {
new Among("a", -1, 3),
new Among("era", 0, 2),
new Among("asse", -1, 3),
new Among("ante", -1, 3),
new Among("\u00E9e", -1, 2),
new Among("ai", -1, 3),
new Among("erai", 5, 2),
new Among("er", -1, 2),
new Among("as", -1, 3),
new Among("eras", 8, 2),
new Among("\u00E2mes", -1, 3),
new Among("asses", -1, 3),
new Among("antes", -1, 3),
new Among("\u00E2tes", -1, 3),
new Among("\u00E9es", -1, 2),
new Among("ais", -1, 3),
new Among("erais", 15, 2),
new Among("ions", -1, 1),
new Among("erions", 17, 2),
new Among("assions", 17, 3),
new Among("erons", -1, 2),
new Among("ants", -1, 3),
new Among("\u00E9s", -1, 2),
new Among("ait", -1, 3),
new Among("erait", 23, 2),
new Among("ant", -1, 3),
new Among("aIent", -1, 3),
new Among("eraIent", 26, 2),
new Among("\u00E8rent", -1, 2),
new Among("assent", -1, 3),
new Among("eront", -1, 2),
new Among("\u00E2t", -1, 3),
new Among("ez", -1, 2),
new Among("iez", 32, 2),
new Among("eriez", 33, 2),
new Among("assiez", 33, 3),
new Among("erez", 32, 2),
new Among("\u00E9", -1, 2)
};
private final static Among a_7[] = {
new Among("e", -1, 3),
new Among("I\u00E8re", 0, 2),
new Among("i\u00E8re", 0, 2),
new Among("ion", -1, 1),
new Among("Ier", -1, 2),
new Among("ier", -1, 2)
};
private final static Among a_8[] = {
new Among("ell", -1, -1),
new Among("eill", -1, -1),
new Among("enn", -1, -1),
new Among("onn", -1, -1),
new Among("ett", -1, -1)
};
private static final char g_v[] = {17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 };
private static final char g_keep_with_s[] = {1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
private int I_p2;
private int I_p1;
private int I_pV;
private boolean r_prelude() {
while(true)
{
int v_1 = cursor;
lab0: {
golab1: while(true)
{
int v_2 = cursor;
lab2: {
lab3: {
int v_3 = cursor;
lab4: {
if (!(in_grouping(g_v, 97, 251)))
{
break lab4;
}
bra = cursor;
lab5: {
int v_4 = cursor;
lab6: {
if (!(eq_s("u")))
{
break lab6;
}
ket = cursor;
if (!(in_grouping(g_v, 97, 251)))
{
break lab6;
}
slice_from("U");
break lab5;
}
cursor = v_4;
lab7: {
if (!(eq_s("i")))
{
break lab7;
}
ket = cursor;
if (!(in_grouping(g_v, 97, 251)))
{
break lab7;
}
slice_from("I");
break lab5;
}
cursor = v_4;
if (!(eq_s("y")))
{
break lab4;
}
ket = cursor;
slice_from("Y");
}
break lab3;
}
cursor = v_3;
lab8: {
bra = cursor;
if (!(eq_s("\u00EB")))
{
break lab8;
}
ket = cursor;
slice_from("He");
break lab3;
}
cursor = v_3;
lab9: {
bra = cursor;
if (!(eq_s("\u00EF")))
{
break lab9;
}
ket = cursor;
slice_from("Hi");
break lab3;
}
cursor = v_3;
lab10: {
bra = cursor;
if (!(eq_s("y")))
{
break lab10;
}
ket = cursor;
if (!(in_grouping(g_v, 97, 251)))
{
break lab10;
}
slice_from("Y");
break lab3;
}
cursor = v_3;
if (!(eq_s("q")))
{
break lab2;
}
bra = cursor;
if (!(eq_s("u")))
{
break lab2;
}
ket = cursor;
slice_from("U");
}
cursor = v_2;
break golab1;
}
cursor = v_2;
if (cursor >= limit)
{
break lab0;
}
cursor++;
}
continue;
}
cursor = v_1;
break;
}
return true;
}
private boolean r_mark_regions() {
I_pV = limit;
I_p1 = limit;
I_p2 = limit;
int v_1 = cursor;
lab0: {
lab1: {
int v_2 = cursor;
lab2: {
if (!(in_grouping(g_v, 97, 251)))
{
break lab2;
}
if (!(in_grouping(g_v, 97, 251)))
{
break lab2;
}
if (cursor >= limit)
{
break lab2;
}
cursor++;
break lab1;
}
cursor = v_2;
lab3: {
if (find_among(a_0) == 0)
{
break lab3;
}
break lab1;
}
cursor = v_2;
if (cursor >= limit)
{
break lab0;
}
cursor++;
golab4: while(true)
{
lab5: {
if (!(in_grouping(g_v, 97, 251)))
{
break lab5;
}
break golab4;
}
if (cursor >= limit)
{
break lab0;
}
cursor++;
}
}
I_pV = cursor;
}
cursor = v_1;
int v_4 = cursor;
lab6: {
golab7: while(true)
{
lab8: {
if (!(in_grouping(g_v, 97, 251)))
{
break lab8;
}
break golab7;
}
if (cursor >= limit)
{
break lab6;
}
cursor++;
}
golab9: while(true)
{
lab10: {
if (!(out_grouping(g_v, 97, 251)))
{
break lab10;
}
break golab9;
}
if (cursor >= limit)
{
break lab6;
}
cursor++;
}
I_p1 = cursor;
golab11: while(true)
{
lab12: {
if (!(in_grouping(g_v, 97, 251)))
{
break lab12;
}
break golab11;
}
if (cursor >= limit)
{
break lab6;
}
cursor++;
}
golab13: while(true)
{
lab14: {
if (!(out_grouping(g_v, 97, 251)))
{
break lab14;
}
break golab13;
}
if (cursor >= limit)
{
break lab6;
}
cursor++;
}
I_p2 = cursor;
}
cursor = v_4;
return true;
}
private boolean r_postlude() {
int among_var;
while(true)
{
int v_1 = cursor;
lab0: {
bra = cursor;
among_var = find_among(a_1);
if (among_var == 0)
{
break lab0;
}
ket = cursor;
switch (among_var) {
case 1:
slice_from("i");
break;
case 2:
slice_from("u");
break;
case 3:
slice_from("y");
break;
case 4:
slice_from("\u00EB");
break;
case 5:
slice_from("\u00EF");
break;
case 6:
slice_del();
break;
case 7:
if (cursor >= limit)
{
break lab0;
}
cursor++;
break;
}
continue;
}
cursor = v_1;
break;
}
return true;
}
private boolean r_RV() {
if (!(I_pV <= cursor))
{
return false;
}
return true;
}
private boolean r_R1() {
if (!(I_p1 <= cursor))
{
return false;
}
return true;
}
private boolean r_R2() {
if (!(I_p2 <= cursor))
{
return false;
}
return true;
}
private boolean r_standard_suffix() {
int among_var;
ket = cursor;
among_var = find_among_b(a_4);
if (among_var == 0)
{
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!r_R2())
{
return false;
}
slice_del();
break;
case 2:
if (!r_R2())
{
return false;
}
slice_del();
int v_1 = limit - cursor;
lab0: {
ket = cursor;
if (!(eq_s_b("ic")))
{
cursor = limit - v_1;
break lab0;
}
bra = cursor;
lab1: {
int v_2 = limit - cursor;
lab2: {
if (!r_R2())
{
break lab2;
}
slice_del();
break lab1;
}
cursor = limit - v_2;
slice_from("iqU");
}
}
break;
case 3:
if (!r_R2())
{
return false;
}
slice_from("log");
break;
case 4:
if (!r_R2())
{
return false;
}
slice_from("u");
break;
case 5:
if (!r_R2())
{
return false;
}
slice_from("ent");
break;
case 6:
if (!r_RV())
{
return false;
}
slice_del();
int v_3 = limit - cursor;
lab3: {
ket = cursor;
among_var = find_among_b(a_2);
if (among_var == 0)
{
cursor = limit - v_3;
break lab3;
}
bra = cursor;
switch (among_var) {
case 1:
if (!r_R2())
{
cursor = limit - v_3;
break lab3;
}
slice_del();
ket = cursor;
if (!(eq_s_b("at")))
{
cursor = limit - v_3;
break lab3;
}
bra = cursor;
if (!r_R2())
{
cursor = limit - v_3;
break lab3;
}
slice_del();
break;
case 2:
lab4: {
int v_4 = limit - cursor;
lab5: {
if (!r_R2())
{
break lab5;
}
slice_del();
break lab4;
}
cursor = limit - v_4;
if (!r_R1())
{
cursor = limit - v_3;
break lab3;
}
slice_from("eux");
}
break;
case 3:
if (!r_R2())
{
cursor = limit - v_3;
break lab3;
}
slice_del();
break;
case 4:
if (!r_RV())
{
cursor = limit - v_3;
break lab3;
}
slice_from("i");
break;
}
}
break;
case 7:
if (!r_R2())
{
return false;
}
slice_del();
int v_5 = limit - cursor;
lab6: {
ket = cursor;
among_var = find_among_b(a_3);
if (among_var == 0)
{
cursor = limit - v_5;
break lab6;
}
bra = cursor;
switch (among_var) {
case 1:
lab7: {
int v_6 = limit - cursor;
lab8: {
if (!r_R2())
{
break lab8;
}
slice_del();
break lab7;
}
cursor = limit - v_6;
slice_from("abl");
}
break;
case 2:
lab9: {
int v_7 = limit - cursor;
lab10: {
if (!r_R2())
{
break lab10;
}
slice_del();
break lab9;
}
cursor = limit - v_7;
slice_from("iqU");
}
break;
case 3:
if (!r_R2())
{
cursor = limit - v_5;
break lab6;
}
slice_del();
break;
}
}
break;
case 8:
if (!r_R2())
{
return false;
}
slice_del();
int v_8 = limit - cursor;
lab11: {
ket = cursor;
if (!(eq_s_b("at")))
{
cursor = limit - v_8;
break lab11;
}
bra = cursor;
if (!r_R2())
{
cursor = limit - v_8;
break lab11;
}
slice_del();
ket = cursor;
if (!(eq_s_b("ic")))
{
cursor = limit - v_8;
break lab11;
}
bra = cursor;
lab12: {
int v_9 = limit - cursor;
lab13: {
if (!r_R2())
{
break lab13;
}
slice_del();
break lab12;
}
cursor = limit - v_9;
slice_from("iqU");
}
}
break;
case 9:
slice_from("eau");
break;
case 10:
if (!r_R1())
{
return false;
}
slice_from("al");
break;
case 11:
lab14: {
int v_10 = limit - cursor;
lab15: {
if (!r_R2())
{
break lab15;
}
slice_del();
break lab14;
}
cursor = limit - v_10;
if (!r_R1())
{
return false;
}
slice_from("eux");
}
break;
case 12:
if (!r_R1())
{
return false;
}
if (!(out_grouping_b(g_v, 97, 251)))
{
return false;
}
slice_del();
break;
case 13:
if (!r_RV())
{
return false;
}
slice_from("ant");
return false;
case 14:
if (!r_RV())
{
return false;
}
slice_from("ent");
return false;
case 15:
int v_11 = limit - cursor;
if (!(in_grouping_b(g_v, 97, 251)))
{
return false;
}
if (!r_RV())
{
return false;
}
cursor = limit - v_11;
slice_del();
return false;
}
return true;
}
private boolean r_i_verb_suffix() {
if (cursor < I_pV)
{
return false;
}
int v_2 = limit_backward;
limit_backward = I_pV;
ket = cursor;
if (find_among_b(a_5) == 0)
{
limit_backward = v_2;
return false;
}
bra = cursor;
{
int v_3 = limit - cursor;
lab0: {
if (!(eq_s_b("H")))
{
break lab0;
}
limit_backward = v_2;
return false;
}
cursor = limit - v_3;
}
if (!(out_grouping_b(g_v, 97, 251)))
{
limit_backward = v_2;
return false;
}
slice_del();
limit_backward = v_2;
return true;
}
private boolean r_verb_suffix() {
int among_var;
if (cursor < I_pV)
{
return false;
}
int v_2 = limit_backward;
limit_backward = I_pV;
ket = cursor;
among_var = find_among_b(a_6);
if (among_var == 0)
{
limit_backward = v_2;
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!r_R2())
{
limit_backward = v_2;
return false;
}
slice_del();
break;
case 2:
slice_del();
break;
case 3:
slice_del();
int v_3 = limit - cursor;
lab0: {
ket = cursor;
if (!(eq_s_b("e")))
{
cursor = limit - v_3;
break lab0;
}
bra = cursor;
slice_del();
}
break;
}
limit_backward = v_2;
return true;
}
private boolean r_residual_suffix() {
int among_var;
int v_1 = limit - cursor;
lab0: {
ket = cursor;
if (!(eq_s_b("s")))
{
cursor = limit - v_1;
break lab0;
}
bra = cursor;
int v_2 = limit - cursor;
lab1: {
int v_3 = limit - cursor;
lab2: {
if (!(eq_s_b("Hi")))
{
break lab2;
}
break lab1;
}
cursor = limit - v_3;
if (!(out_grouping_b(g_keep_with_s, 97, 232)))
{
cursor = limit - v_1;
break lab0;
}
}
cursor = limit - v_2;
slice_del();
}
if (cursor < I_pV)
{
return false;
}
int v_5 = limit_backward;
limit_backward = I_pV;
ket = cursor;
among_var = find_among_b(a_7);
if (among_var == 0)
{
limit_backward = v_5;
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!r_R2())
{
limit_backward = v_5;
return false;
}
lab3: {
int v_6 = limit - cursor;
lab4: {
if (!(eq_s_b("s")))
{
break lab4;
}
break lab3;
}
cursor = limit - v_6;
if (!(eq_s_b("t")))
{
limit_backward = v_5;
return false;
}
}
slice_del();
break;
case 2:
slice_from("i");
break;
case 3:
slice_del();
break;
}
limit_backward = v_5;
return true;
}
private boolean r_un_double() {
int v_1 = limit - cursor;
if (find_among_b(a_8) == 0)
{
return false;
}
cursor = limit - v_1;
ket = cursor;
if (cursor <= limit_backward)
{
return false;
}
cursor--;
bra = cursor;
slice_del();
return true;
}
private boolean r_un_accent() {
{
int v_1 = 1;
while(true)
{
lab0: {
if (!(out_grouping_b(g_v, 97, 251)))
{
break lab0;
}
v_1--;
continue;
}
break;
}
if (v_1 > 0)
{
return false;
}
}
ket = cursor;
lab1: {
int v_3 = limit - cursor;
lab2: {
if (!(eq_s_b("\u00E9")))
{
break lab2;
}
break lab1;
}
cursor = limit - v_3;
if (!(eq_s_b("\u00E8")))
{
return false;
}
}
bra = cursor;
slice_from("e");
return true;
}
public boolean stem() {
int v_1 = cursor;
r_prelude();
cursor = v_1;
r_mark_regions();
limit_backward = cursor;
cursor = limit;
int v_3 = limit - cursor;
lab0: {
lab1: {
int v_4 = limit - cursor;
lab2: {
int v_5 = limit - cursor;
lab3: {
int v_6 = limit - cursor;
lab4: {
if (!r_standard_suffix())
{
break lab4;
}
break lab3;
}
cursor = limit - v_6;
lab5: {
if (!r_i_verb_suffix())
{
break lab5;
}
break lab3;
}
cursor = limit - v_6;
if (!r_verb_suffix())
{
break lab2;
}
}
cursor = limit - v_5;
int v_7 = limit - cursor;
lab6: {
ket = cursor;
lab7: {
int v_8 = limit - cursor;
lab8: {
if (!(eq_s_b("Y")))
{
break lab8;
}
bra = cursor;
slice_from("i");
break lab7;
}
cursor = limit - v_8;
if (!(eq_s_b("\u00E7")))
{
cursor = limit - v_7;
break lab6;
}
bra = cursor;
slice_from("c");
}
}
break lab1;
}
cursor = limit - v_4;
if (!r_residual_suffix())
{
break lab0;
}
}
}
cursor = limit - v_3;
int v_9 = limit - cursor;
r_un_double();
cursor = limit - v_9;
int v_10 = limit - cursor;
r_un_accent();
cursor = limit - v_10;
cursor = limit_backward;
int v_11 = cursor;
r_postlude();
cursor = v_11;
return true;
}
@Override
public boolean equals( Object o ) {
return o instanceof FrenchStemmer;
}
@Override
public int hashCode() {
return FrenchStemmer.class.getName().hashCode();
}
}