blob: 5af716d63d6b6f0dafa41763e522ba281565424d [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 ArabicStemmer 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("\u0640", -1, 1),
new Among("\u064B", -1, 1),
new Among("\u064C", -1, 1),
new Among("\u064D", -1, 1),
new Among("\u064E", -1, 1),
new Among("\u064F", -1, 1),
new Among("\u0650", -1, 1),
new Among("\u0651", -1, 1),
new Among("\u0652", -1, 1),
new Among("\u0660", -1, 2),
new Among("\u0661", -1, 3),
new Among("\u0662", -1, 4),
new Among("\u0663", -1, 5),
new Among("\u0664", -1, 6),
new Among("\u0665", -1, 7),
new Among("\u0666", -1, 8),
new Among("\u0667", -1, 9),
new Among("\u0668", -1, 10),
new Among("\u0669", -1, 11),
new Among("\uFE80", -1, 12),
new Among("\uFE81", -1, 16),
new Among("\uFE82", -1, 16),
new Among("\uFE83", -1, 13),
new Among("\uFE84", -1, 13),
new Among("\uFE85", -1, 17),
new Among("\uFE86", -1, 17),
new Among("\uFE87", -1, 14),
new Among("\uFE88", -1, 14),
new Among("\uFE89", -1, 15),
new Among("\uFE8A", -1, 15),
new Among("\uFE8B", -1, 15),
new Among("\uFE8C", -1, 15),
new Among("\uFE8D", -1, 18),
new Among("\uFE8E", -1, 18),
new Among("\uFE8F", -1, 19),
new Among("\uFE90", -1, 19),
new Among("\uFE91", -1, 19),
new Among("\uFE92", -1, 19),
new Among("\uFE93", -1, 20),
new Among("\uFE94", -1, 20),
new Among("\uFE95", -1, 21),
new Among("\uFE96", -1, 21),
new Among("\uFE97", -1, 21),
new Among("\uFE98", -1, 21),
new Among("\uFE99", -1, 22),
new Among("\uFE9A", -1, 22),
new Among("\uFE9B", -1, 22),
new Among("\uFE9C", -1, 22),
new Among("\uFE9D", -1, 23),
new Among("\uFE9E", -1, 23),
new Among("\uFE9F", -1, 23),
new Among("\uFEA0", -1, 23),
new Among("\uFEA1", -1, 24),
new Among("\uFEA2", -1, 24),
new Among("\uFEA3", -1, 24),
new Among("\uFEA4", -1, 24),
new Among("\uFEA5", -1, 25),
new Among("\uFEA6", -1, 25),
new Among("\uFEA7", -1, 25),
new Among("\uFEA8", -1, 25),
new Among("\uFEA9", -1, 26),
new Among("\uFEAA", -1, 26),
new Among("\uFEAB", -1, 27),
new Among("\uFEAC", -1, 27),
new Among("\uFEAD", -1, 28),
new Among("\uFEAE", -1, 28),
new Among("\uFEAF", -1, 29),
new Among("\uFEB0", -1, 29),
new Among("\uFEB1", -1, 30),
new Among("\uFEB2", -1, 30),
new Among("\uFEB3", -1, 30),
new Among("\uFEB4", -1, 30),
new Among("\uFEB5", -1, 31),
new Among("\uFEB6", -1, 31),
new Among("\uFEB7", -1, 31),
new Among("\uFEB8", -1, 31),
new Among("\uFEB9", -1, 32),
new Among("\uFEBA", -1, 32),
new Among("\uFEBB", -1, 32),
new Among("\uFEBC", -1, 32),
new Among("\uFEBD", -1, 33),
new Among("\uFEBE", -1, 33),
new Among("\uFEBF", -1, 33),
new Among("\uFEC0", -1, 33),
new Among("\uFEC1", -1, 34),
new Among("\uFEC2", -1, 34),
new Among("\uFEC3", -1, 34),
new Among("\uFEC4", -1, 34),
new Among("\uFEC5", -1, 35),
new Among("\uFEC6", -1, 35),
new Among("\uFEC7", -1, 35),
new Among("\uFEC8", -1, 35),
new Among("\uFEC9", -1, 36),
new Among("\uFECA", -1, 36),
new Among("\uFECB", -1, 36),
new Among("\uFECC", -1, 36),
new Among("\uFECD", -1, 37),
new Among("\uFECE", -1, 37),
new Among("\uFECF", -1, 37),
new Among("\uFED0", -1, 37),
new Among("\uFED1", -1, 38),
new Among("\uFED2", -1, 38),
new Among("\uFED3", -1, 38),
new Among("\uFED4", -1, 38),
new Among("\uFED5", -1, 39),
new Among("\uFED6", -1, 39),
new Among("\uFED7", -1, 39),
new Among("\uFED8", -1, 39),
new Among("\uFED9", -1, 40),
new Among("\uFEDA", -1, 40),
new Among("\uFEDB", -1, 40),
new Among("\uFEDC", -1, 40),
new Among("\uFEDD", -1, 41),
new Among("\uFEDE", -1, 41),
new Among("\uFEDF", -1, 41),
new Among("\uFEE0", -1, 41),
new Among("\uFEE1", -1, 42),
new Among("\uFEE2", -1, 42),
new Among("\uFEE3", -1, 42),
new Among("\uFEE4", -1, 42),
new Among("\uFEE5", -1, 43),
new Among("\uFEE6", -1, 43),
new Among("\uFEE7", -1, 43),
new Among("\uFEE8", -1, 43),
new Among("\uFEE9", -1, 44),
new Among("\uFEEA", -1, 44),
new Among("\uFEEB", -1, 44),
new Among("\uFEEC", -1, 44),
new Among("\uFEED", -1, 45),
new Among("\uFEEE", -1, 45),
new Among("\uFEEF", -1, 46),
new Among("\uFEF0", -1, 46),
new Among("\uFEF1", -1, 47),
new Among("\uFEF2", -1, 47),
new Among("\uFEF3", -1, 47),
new Among("\uFEF4", -1, 47),
new Among("\uFEF5", -1, 51),
new Among("\uFEF6", -1, 51),
new Among("\uFEF7", -1, 49),
new Among("\uFEF8", -1, 49),
new Among("\uFEF9", -1, 50),
new Among("\uFEFA", -1, 50),
new Among("\uFEFB", -1, 48),
new Among("\uFEFC", -1, 48)
};
private final static Among a_1[] = {
new Among("\u0622", -1, 1),
new Among("\u0623", -1, 1),
new Among("\u0624", -1, 1),
new Among("\u0625", -1, 1),
new Among("\u0626", -1, 1)
};
private final static Among a_2[] = {
new Among("\u0622", -1, 1),
new Among("\u0623", -1, 1),
new Among("\u0624", -1, 2),
new Among("\u0625", -1, 1),
new Among("\u0626", -1, 3)
};
private final static Among a_3[] = {
new Among("\u0627\u0644", -1, 2),
new Among("\u0628\u0627\u0644", -1, 1),
new Among("\u0643\u0627\u0644", -1, 1),
new Among("\u0644\u0644", -1, 2)
};
private final static Among a_4[] = {
new Among("\u0623\u0622", -1, 2),
new Among("\u0623\u0623", -1, 1),
new Among("\u0623\u0624", -1, 1),
new Among("\u0623\u0625", -1, 4),
new Among("\u0623\u0627", -1, 3)
};
private final static Among a_5[] = {
new Among("\u0641", -1, 1),
new Among("\u0648", -1, 1)
};
private final static Among a_6[] = {
new Among("\u0627\u0644", -1, 2),
new Among("\u0628\u0627\u0644", -1, 1),
new Among("\u0643\u0627\u0644", -1, 1),
new Among("\u0644\u0644", -1, 2)
};
private final static Among a_7[] = {
new Among("\u0628", -1, 1),
new Among("\u0628\u0628", 0, 2),
new Among("\u0643\u0643", -1, 3)
};
private final static Among a_8[] = {
new Among("\u0633\u0623", -1, 4),
new Among("\u0633\u062A", -1, 2),
new Among("\u0633\u0646", -1, 3),
new Among("\u0633\u064A", -1, 1)
};
private final static Among a_9[] = {
new Among("\u062A\u0633\u062A", -1, 1),
new Among("\u0646\u0633\u062A", -1, 1),
new Among("\u064A\u0633\u062A", -1, 1)
};
private final static Among a_10[] = {
new Among("\u0643\u0645\u0627", -1, 3),
new Among("\u0647\u0645\u0627", -1, 3),
new Among("\u0646\u0627", -1, 2),
new Among("\u0647\u0627", -1, 2),
new Among("\u0643", -1, 1),
new Among("\u0643\u0645", -1, 2),
new Among("\u0647\u0645", -1, 2),
new Among("\u0647\u0646", -1, 2),
new Among("\u0647", -1, 1),
new Among("\u064A", -1, 1)
};
private final static Among a_11[] = {
new Among("\u0646", -1, 1)
};
private final static Among a_12[] = {
new Among("\u0627", -1, 1),
new Among("\u0648", -1, 1),
new Among("\u064A", -1, 1)
};
private final static Among a_13[] = {
new Among("\u0627\u062A", -1, 1)
};
private final static Among a_14[] = {
new Among("\u062A", -1, 1)
};
private final static Among a_15[] = {
new Among("\u0629", -1, 1)
};
private final static Among a_16[] = {
new Among("\u064A", -1, 1)
};
private final static Among a_17[] = {
new Among("\u0643\u0645\u0627", -1, 3),
new Among("\u0647\u0645\u0627", -1, 3),
new Among("\u0646\u0627", -1, 2),
new Among("\u0647\u0627", -1, 2),
new Among("\u0643", -1, 1),
new Among("\u0643\u0645", -1, 2),
new Among("\u0647\u0645", -1, 2),
new Among("\u0643\u0646", -1, 2),
new Among("\u0647\u0646", -1, 2),
new Among("\u0647", -1, 1),
new Among("\u0643\u0645\u0648", -1, 3),
new Among("\u0646\u064A", -1, 2)
};
private final static Among a_18[] = {
new Among("\u0627", -1, 1),
new Among("\u062A\u0627", 0, 2),
new Among("\u062A\u0645\u0627", 0, 4),
new Among("\u0646\u0627", 0, 2),
new Among("\u062A", -1, 1),
new Among("\u0646", -1, 1),
new Among("\u0627\u0646", 5, 3),
new Among("\u062A\u0646", 5, 2),
new Among("\u0648\u0646", 5, 3),
new Among("\u064A\u0646", 5, 3),
new Among("\u064A", -1, 1)
};
private final static Among a_19[] = {
new Among("\u0648\u0627", -1, 1),
new Among("\u062A\u0645", -1, 1)
};
private final static Among a_20[] = {
new Among("\u0648", -1, 1),
new Among("\u062A\u0645\u0648", 0, 2)
};
private final static Among a_21[] = {
new Among("\u0649", -1, 1)
};
private boolean B_is_defined;
private boolean B_is_verb;
private boolean B_is_noun;
private boolean r_Normalize_pre() {
int among_var;
int v_1 = cursor;
lab0: {
while(true)
{
int v_2 = cursor;
lab1: {
lab2: {
int v_3 = cursor;
lab3: {
bra = cursor;
among_var = find_among(a_0);
if (among_var == 0)
{
break lab3;
}
ket = cursor;
switch (among_var) {
case 1:
slice_del();
break;
case 2:
slice_from("0");
break;
case 3:
slice_from("1");
break;
case 4:
slice_from("2");
break;
case 5:
slice_from("3");
break;
case 6:
slice_from("4");
break;
case 7:
slice_from("5");
break;
case 8:
slice_from("6");
break;
case 9:
slice_from("7");
break;
case 10:
slice_from("8");
break;
case 11:
slice_from("9");
break;
case 12:
slice_from("\u0621");
break;
case 13:
slice_from("\u0623");
break;
case 14:
slice_from("\u0625");
break;
case 15:
slice_from("\u0626");
break;
case 16:
slice_from("\u0622");
break;
case 17:
slice_from("\u0624");
break;
case 18:
slice_from("\u0627");
break;
case 19:
slice_from("\u0628");
break;
case 20:
slice_from("\u0629");
break;
case 21:
slice_from("\u062A");
break;
case 22:
slice_from("\u062B");
break;
case 23:
slice_from("\u062C");
break;
case 24:
slice_from("\u062D");
break;
case 25:
slice_from("\u062E");
break;
case 26:
slice_from("\u062F");
break;
case 27:
slice_from("\u0630");
break;
case 28:
slice_from("\u0631");
break;
case 29:
slice_from("\u0632");
break;
case 30:
slice_from("\u0633");
break;
case 31:
slice_from("\u0634");
break;
case 32:
slice_from("\u0635");
break;
case 33:
slice_from("\u0636");
break;
case 34:
slice_from("\u0637");
break;
case 35:
slice_from("\u0638");
break;
case 36:
slice_from("\u0639");
break;
case 37:
slice_from("\u063A");
break;
case 38:
slice_from("\u0641");
break;
case 39:
slice_from("\u0642");
break;
case 40:
slice_from("\u0643");
break;
case 41:
slice_from("\u0644");
break;
case 42:
slice_from("\u0645");
break;
case 43:
slice_from("\u0646");
break;
case 44:
slice_from("\u0647");
break;
case 45:
slice_from("\u0648");
break;
case 46:
slice_from("\u0649");
break;
case 47:
slice_from("\u064A");
break;
case 48:
slice_from("\u0644\u0627");
break;
case 49:
slice_from("\u0644\u0623");
break;
case 50:
slice_from("\u0644\u0625");
break;
case 51:
slice_from("\u0644\u0622");
break;
}
break lab2;
}
cursor = v_3;
if (cursor >= limit)
{
break lab1;
}
cursor++;
}
continue;
}
cursor = v_2;
break;
}
}
cursor = v_1;
return true;
}
private boolean r_Normalize_post() {
int among_var;
int v_1 = cursor;
lab0: {
limit_backward = cursor;
cursor = limit;
ket = cursor;
if (find_among_b(a_1) == 0)
{
break lab0;
}
bra = cursor;
slice_from("\u0621");
cursor = limit_backward;
}
cursor = v_1;
int v_2 = cursor;
lab1: {
while(true)
{
int v_3 = cursor;
lab2: {
lab3: {
int v_4 = cursor;
lab4: {
bra = cursor;
among_var = find_among(a_2);
if (among_var == 0)
{
break lab4;
}
ket = cursor;
switch (among_var) {
case 1:
slice_from("\u0627");
break;
case 2:
slice_from("\u0648");
break;
case 3:
slice_from("\u064A");
break;
}
break lab3;
}
cursor = v_4;
if (cursor >= limit)
{
break lab2;
}
cursor++;
}
continue;
}
cursor = v_3;
break;
}
}
cursor = v_2;
return true;
}
private boolean r_Checks1() {
int among_var;
bra = cursor;
among_var = find_among(a_3);
if (among_var == 0)
{
return false;
}
ket = cursor;
switch (among_var) {
case 1:
if (!(limit > 4))
{
return false;
}
B_is_noun = true;
B_is_verb = false;
B_is_defined = true;
break;
case 2:
if (!(limit > 3))
{
return false;
}
B_is_noun = true;
B_is_verb = false;
B_is_defined = true;
break;
}
return true;
}
private boolean r_Prefix_Step1() {
int among_var;
bra = cursor;
among_var = find_among(a_4);
if (among_var == 0)
{
return false;
}
ket = cursor;
switch (among_var) {
case 1:
if (!(limit > 3))
{
return false;
}
slice_from("\u0623");
break;
case 2:
if (!(limit > 3))
{
return false;
}
slice_from("\u0622");
break;
case 3:
if (!(limit > 3))
{
return false;
}
slice_from("\u0627");
break;
case 4:
if (!(limit > 3))
{
return false;
}
slice_from("\u0625");
break;
}
return true;
}
private boolean r_Prefix_Step2() {
{
int v_1 = cursor;
lab0: {
if (!(eq_s("\u0641\u0627")))
{
break lab0;
}
return false;
}
cursor = v_1;
}
{
int v_2 = cursor;
lab1: {
if (!(eq_s("\u0648\u0627")))
{
break lab1;
}
return false;
}
cursor = v_2;
}
bra = cursor;
if (find_among(a_5) == 0)
{
return false;
}
ket = cursor;
if (!(limit > 3))
{
return false;
}
slice_del();
return true;
}
private boolean r_Prefix_Step3a_Noun() {
int among_var;
bra = cursor;
among_var = find_among(a_6);
if (among_var == 0)
{
return false;
}
ket = cursor;
switch (among_var) {
case 1:
if (!(limit > 5))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit > 4))
{
return false;
}
slice_del();
break;
}
return true;
}
private boolean r_Prefix_Step3b_Noun() {
int among_var;
{
int v_1 = cursor;
lab0: {
if (!(eq_s("\u0628\u0627")))
{
break lab0;
}
return false;
}
cursor = v_1;
}
bra = cursor;
among_var = find_among(a_7);
if (among_var == 0)
{
return false;
}
ket = cursor;
switch (among_var) {
case 1:
if (!(limit > 3))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit > 3))
{
return false;
}
slice_from("\u0628");
break;
case 3:
if (!(limit > 3))
{
return false;
}
slice_from("\u0643");
break;
}
return true;
}
private boolean r_Prefix_Step3_Verb() {
int among_var;
bra = cursor;
among_var = find_among(a_8);
if (among_var == 0)
{
return false;
}
ket = cursor;
switch (among_var) {
case 1:
if (!(limit > 4))
{
return false;
}
slice_from("\u064A");
break;
case 2:
if (!(limit > 4))
{
return false;
}
slice_from("\u062A");
break;
case 3:
if (!(limit > 4))
{
return false;
}
slice_from("\u0646");
break;
case 4:
if (!(limit > 4))
{
return false;
}
slice_from("\u0623");
break;
}
return true;
}
private boolean r_Prefix_Step4_Verb() {
bra = cursor;
if (find_among(a_9) == 0)
{
return false;
}
ket = cursor;
if (!(limit > 4))
{
return false;
}
B_is_verb = true;
B_is_noun = false;
slice_from("\u0627\u0633\u062A");
return true;
}
private boolean r_Suffix_Noun_Step1a() {
int among_var;
ket = cursor;
among_var = find_among_b(a_10);
if (among_var == 0)
{
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!(limit >= 4))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit >= 5))
{
return false;
}
slice_del();
break;
case 3:
if (!(limit >= 6))
{
return false;
}
slice_del();
break;
}
return true;
}
private boolean r_Suffix_Noun_Step1b() {
ket = cursor;
if (find_among_b(a_11) == 0)
{
return false;
}
bra = cursor;
if (!(limit > 5))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Noun_Step2a() {
ket = cursor;
if (find_among_b(a_12) == 0)
{
return false;
}
bra = cursor;
if (!(limit > 4))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Noun_Step2b() {
ket = cursor;
if (find_among_b(a_13) == 0)
{
return false;
}
bra = cursor;
if (!(limit >= 5))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Noun_Step2c1() {
ket = cursor;
if (find_among_b(a_14) == 0)
{
return false;
}
bra = cursor;
if (!(limit >= 4))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Noun_Step2c2() {
ket = cursor;
if (find_among_b(a_15) == 0)
{
return false;
}
bra = cursor;
if (!(limit >= 4))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Noun_Step3() {
ket = cursor;
if (find_among_b(a_16) == 0)
{
return false;
}
bra = cursor;
if (!(limit >= 3))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Verb_Step1() {
int among_var;
ket = cursor;
among_var = find_among_b(a_17);
if (among_var == 0)
{
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!(limit >= 4))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit >= 5))
{
return false;
}
slice_del();
break;
case 3:
if (!(limit >= 6))
{
return false;
}
slice_del();
break;
}
return true;
}
private boolean r_Suffix_Verb_Step2a() {
int among_var;
ket = cursor;
among_var = find_among_b(a_18);
if (among_var == 0)
{
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!(limit >= 4))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit >= 5))
{
return false;
}
slice_del();
break;
case 3:
if (!(limit > 5))
{
return false;
}
slice_del();
break;
case 4:
if (!(limit >= 6))
{
return false;
}
slice_del();
break;
}
return true;
}
private boolean r_Suffix_Verb_Step2b() {
ket = cursor;
if (find_among_b(a_19) == 0)
{
return false;
}
bra = cursor;
if (!(limit >= 5))
{
return false;
}
slice_del();
return true;
}
private boolean r_Suffix_Verb_Step2c() {
int among_var;
ket = cursor;
among_var = find_among_b(a_20);
if (among_var == 0)
{
return false;
}
bra = cursor;
switch (among_var) {
case 1:
if (!(limit >= 4))
{
return false;
}
slice_del();
break;
case 2:
if (!(limit >= 6))
{
return false;
}
slice_del();
break;
}
return true;
}
private boolean r_Suffix_All_alef_maqsura() {
ket = cursor;
if (find_among_b(a_21) == 0)
{
return false;
}
bra = cursor;
slice_from("\u064A");
return true;
}
public boolean stem() {
B_is_noun = true;
B_is_verb = true;
B_is_defined = false;
int v_1 = cursor;
r_Checks1();
cursor = v_1;
r_Normalize_pre();
limit_backward = cursor;
cursor = limit;
int v_3 = limit - cursor;
lab0: {
lab1: {
int v_4 = limit - cursor;
lab2: {
if (!(B_is_verb))
{
break lab2;
}
lab3: {
int v_5 = limit - cursor;
lab4: {
{
int v_6 = 1;
while(true)
{
int v_7 = limit - cursor;
lab5: {
if (!r_Suffix_Verb_Step1())
{
break lab5;
}
v_6--;
continue;
}
cursor = limit - v_7;
break;
}
if (v_6 > 0)
{
break lab4;
}
}
lab6: {
int v_8 = limit - cursor;
lab7: {
if (!r_Suffix_Verb_Step2a())
{
break lab7;
}
break lab6;
}
cursor = limit - v_8;
lab8: {
if (!r_Suffix_Verb_Step2c())
{
break lab8;
}
break lab6;
}
cursor = limit - v_8;
if (cursor <= limit_backward)
{
break lab4;
}
cursor--;
}
break lab3;
}
cursor = limit - v_5;
lab9: {
if (!r_Suffix_Verb_Step2b())
{
break lab9;
}
break lab3;
}
cursor = limit - v_5;
if (!r_Suffix_Verb_Step2a())
{
break lab2;
}
}
break lab1;
}
cursor = limit - v_4;
lab10: {
if (!(B_is_noun))
{
break lab10;
}
int v_9 = limit - cursor;
lab11: {
lab12: {
int v_10 = limit - cursor;
lab13: {
if (!r_Suffix_Noun_Step2c2())
{
break lab13;
}
break lab12;
}
cursor = limit - v_10;
lab14: {
lab15: {
if (!(B_is_defined))
{
break lab15;
}
break lab14;
}
if (!r_Suffix_Noun_Step1a())
{
break lab14;
}
lab16: {
int v_12 = limit - cursor;
lab17: {
if (!r_Suffix_Noun_Step2a())
{
break lab17;
}
break lab16;
}
cursor = limit - v_12;
lab18: {
if (!r_Suffix_Noun_Step2b())
{
break lab18;
}
break lab16;
}
cursor = limit - v_12;
lab19: {
if (!r_Suffix_Noun_Step2c1())
{
break lab19;
}
break lab16;
}
cursor = limit - v_12;
if (cursor <= limit_backward)
{
break lab14;
}
cursor--;
}
break lab12;
}
cursor = limit - v_10;
lab20: {
if (!r_Suffix_Noun_Step1b())
{
break lab20;
}
lab21: {
int v_13 = limit - cursor;
lab22: {
if (!r_Suffix_Noun_Step2a())
{
break lab22;
}
break lab21;
}
cursor = limit - v_13;
lab23: {
if (!r_Suffix_Noun_Step2b())
{
break lab23;
}
break lab21;
}
cursor = limit - v_13;
if (!r_Suffix_Noun_Step2c1())
{
break lab20;
}
}
break lab12;
}
cursor = limit - v_10;
lab24: {
lab25: {
if (!(B_is_defined))
{
break lab25;
}
break lab24;
}
if (!r_Suffix_Noun_Step2a())
{
break lab24;
}
break lab12;
}
cursor = limit - v_10;
if (!r_Suffix_Noun_Step2b())
{
cursor = limit - v_9;
break lab11;
}
}
}
if (!r_Suffix_Noun_Step3())
{
break lab10;
}
break lab1;
}
cursor = limit - v_4;
if (!r_Suffix_All_alef_maqsura())
{
break lab0;
}
}
}
cursor = limit - v_3;
cursor = limit_backward;
int v_15 = cursor;
lab26: {
int v_16 = cursor;
lab27: {
if (!r_Prefix_Step1())
{
cursor = v_16;
break lab27;
}
}
int v_17 = cursor;
lab28: {
if (!r_Prefix_Step2())
{
cursor = v_17;
break lab28;
}
}
lab29: {
int v_18 = cursor;
lab30: {
if (!r_Prefix_Step3a_Noun())
{
break lab30;
}
break lab29;
}
cursor = v_18;
lab31: {
if (!(B_is_noun))
{
break lab31;
}
if (!r_Prefix_Step3b_Noun())
{
break lab31;
}
break lab29;
}
cursor = v_18;
if (!(B_is_verb))
{
break lab26;
}
int v_19 = cursor;
lab32: {
if (!r_Prefix_Step3_Verb())
{
cursor = v_19;
break lab32;
}
}
if (!r_Prefix_Step4_Verb())
{
break lab26;
}
}
}
cursor = v_15;
r_Normalize_post();
return true;
}
@Override
public boolean equals( Object o ) {
return o instanceof ArabicStemmer;
}
@Override
public int hashCode() {
return ArabicStemmer.class.getName().hashCode();
}
}