in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/GermanStemmer.cs [491:779]
private bool r_standard_suffix()
{
int among_var;
int v_1;
int v_2;
int v_3;
int v_4;
int v_5;
int v_6;
int v_7;
int v_8;
int v_9;
// (, line 73
// do, line 74
v_1 = m_limit - m_cursor;
do
{
// (, line 74
// [, line 75
m_ket = m_cursor;
// substring, line 75
among_var = FindAmongB(a_1, 7);
if (among_var == 0)
{
goto lab0;
}
// ], line 75
m_bra = m_cursor;
// call R1, line 75
if (!r_R1())
{
goto lab0;
}
switch (among_var)
{
case 0:
goto lab0;
case 1:
// (, line 77
// delete, line 77
SliceDel();
break;
case 2:
// (, line 80
if (!(InGroupingB(g_s_ending, 98, 116)))
{
goto lab0;
}
// delete, line 80
SliceDel();
break;
}
} while (false);
lab0:
m_cursor = m_limit - v_1;
// do, line 84
v_2 = m_limit - m_cursor;
do
{
// (, line 84
// [, line 85
m_ket = m_cursor;
// substring, line 85
among_var = FindAmongB(a_2, 4);
if (among_var == 0)
{
goto lab1;
}
// ], line 85
m_bra = m_cursor;
// call R1, line 85
if (!r_R1())
{
goto lab1;
}
switch (among_var)
{
case 0:
goto lab1;
case 1:
// (, line 87
// delete, line 87
SliceDel();
break;
case 2:
// (, line 90
if (!(InGroupingB(g_st_ending, 98, 116)))
{
goto lab1;
}
// hop, line 90
{
int c = m_cursor - 3;
if (m_limit_backward > c || c > m_limit)
{
goto lab1;
}
m_cursor = c;
}
// delete, line 90
SliceDel();
break;
}
} while (false);
lab1:
m_cursor = m_limit - v_2;
// do, line 94
v_3 = m_limit - m_cursor;
do
{
// (, line 94
// [, line 95
m_ket = m_cursor;
// substring, line 95
among_var = FindAmongB(a_4, 8);
if (among_var == 0)
{
goto lab2;
}
// ], line 95
m_bra = m_cursor;
// call R2, line 95
if (!r_R2())
{
goto lab2;
}
switch (among_var)
{
case 0:
goto lab2;
case 1:
// (, line 97
// delete, line 97
SliceDel();
// try, line 98
v_4 = m_limit - m_cursor;
do
{
// (, line 98
// [, line 98
m_ket = m_cursor;
// literal, line 98
if (!(Eq_S_B(2, "ig")))
{
m_cursor = m_limit - v_4;
goto lab3;
}
// ], line 98
m_bra = m_cursor;
// not, line 98
{
v_5 = m_limit - m_cursor;
do
{
// literal, line 98
if (!(Eq_S_B(1, "e")))
{
goto lab4;
}
m_cursor = m_limit - v_4;
goto lab3;
} while (false);
lab4:
m_cursor = m_limit - v_5;
}
// call R2, line 98
if (!r_R2())
{
m_cursor = m_limit - v_4;
goto lab3;
}
// delete, line 98
SliceDel();
} while (false);
lab3:
break;
case 2:
// (, line 101
// not, line 101
{
v_6 = m_limit - m_cursor;
do
{
// literal, line 101
if (!(Eq_S_B(1, "e")))
{
goto lab5;
}
goto lab2;
} while (false);
lab5:
m_cursor = m_limit - v_6;
}
// delete, line 101
SliceDel();
break;
case 3:
// (, line 104
// delete, line 104
SliceDel();
// try, line 105
v_7 = m_limit - m_cursor;
do
{
// (, line 105
// [, line 106
m_ket = m_cursor;
// or, line 106
do
{
v_8 = m_limit - m_cursor;
do
{
// literal, line 106
if (!(Eq_S_B(2, "er")))
{
goto lab8;
}
goto lab7;
} while (false);
lab8:
m_cursor = m_limit - v_8;
// literal, line 106
if (!(Eq_S_B(2, "en")))
{
m_cursor = m_limit - v_7;
goto lab6;
}
} while (false);
lab7:
// ], line 106
m_bra = m_cursor;
// call R1, line 106
if (!r_R1())
{
m_cursor = m_limit - v_7;
goto lab6;
}
// delete, line 106
SliceDel();
} while (false);
lab6:
break;
case 4:
// (, line 110
// delete, line 110
SliceDel();
// try, line 111
v_9 = m_limit - m_cursor;
do
{
// (, line 111
// [, line 112
m_ket = m_cursor;
// substring, line 112
among_var = FindAmongB(a_3, 2);
if (among_var == 0)
{
m_cursor = m_limit - v_9;
goto lab9;
}
// ], line 112
m_bra = m_cursor;
// call R2, line 112
if (!r_R2())
{
m_cursor = m_limit - v_9;
goto lab9;
}
switch (among_var)
{
case 0:
m_cursor = m_limit - v_9;
goto lab9;
case 1:
// (, line 114
// delete, line 114
SliceDel();
break;
}
} while (false);
lab9:
break;
}
} while (false);
lab2:
m_cursor = m_limit - v_3;
return true;
}