in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/DutchStemmer.cs [612:941]
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;
int v_10;
// (, line 106
// do, line 107
v_1 = m_limit - m_cursor;
do
{
// (, line 107
// [, line 108
m_ket = m_cursor;
// substring, line 108
among_var = FindAmongB(a_3, 5);
if (among_var == 0)
{
goto lab0;
}
// ], line 108
m_bra = m_cursor;
switch (among_var)
{
case 0:
goto lab0;
case 1:
// (, line 110
// call R1, line 110
if (!r_R1())
{
goto lab0;
}
// <-, line 110
SliceFrom("heid");
break;
case 2:
// (, line 113
// call en_ending, line 113
if (!r_en_ending())
{
goto lab0;
}
break;
case 3:
// (, line 116
// call R1, line 116
if (!r_R1())
{
goto lab0;
}
if (!(OutGroupingB(g_v_j, 97, 232)))
{
goto lab0;
}
// delete, line 116
SliceDel();
break;
}
} while (false);
lab0:
m_cursor = m_limit - v_1;
// do, line 120
v_2 = m_limit - m_cursor;
do
{
// call e_ending, line 120
if (!r_e_ending())
{
goto lab1;
}
} while (false);
lab1:
m_cursor = m_limit - v_2;
// do, line 122
v_3 = m_limit - m_cursor;
do
{
// (, line 122
// [, line 122
m_ket = m_cursor;
// literal, line 122
if (!(Eq_S_B(4, "heid")))
{
goto lab2;
}
// ], line 122
m_bra = m_cursor;
// call R2, line 122
if (!r_R2())
{
goto lab2;
}
// not, line 122
{
v_4 = m_limit - m_cursor;
do
{
// literal, line 122
if (!(Eq_S_B(1, "c")))
{
goto lab3;
}
goto lab2;
} while (false);
lab3:
m_cursor = m_limit - v_4;
}
// delete, line 122
SliceDel();
// [, line 123
m_ket = m_cursor;
// literal, line 123
if (!(Eq_S_B(2, "en")))
{
goto lab2;
}
// ], line 123
m_bra = m_cursor;
// call en_ending, line 123
if (!r_en_ending())
{
goto lab2;
}
} while (false);
lab2:
m_cursor = m_limit - v_3;
// do, line 126
v_5 = m_limit - m_cursor;
do
{
// (, line 126
// [, line 127
m_ket = m_cursor;
// substring, line 127
among_var = FindAmongB(a_4, 6);
if (among_var == 0)
{
goto lab4;
}
// ], line 127
m_bra = m_cursor;
switch (among_var)
{
case 0:
goto lab4;
case 1:
// (, line 129
// call R2, line 129
if (!r_R2())
{
goto lab4;
}
// delete, line 129
SliceDel();
// or, line 130
do
{
v_6 = m_limit - m_cursor;
do
{
// (, line 130
// [, line 130
m_ket = m_cursor;
// literal, line 130
if (!(Eq_S_B(2, "ig")))
{
goto lab6;
}
// ], line 130
m_bra = m_cursor;
// call R2, line 130
if (!r_R2())
{
goto lab6;
}
// not, line 130
{
v_7 = m_limit - m_cursor;
do
{
// literal, line 130
if (!(Eq_S_B(1, "e")))
{
goto lab7;
}
goto lab6;
} while (false);
lab7:
m_cursor = m_limit - v_7;
}
// delete, line 130
SliceDel();
goto lab5;
} while (false);
lab6:
m_cursor = m_limit - v_6;
// call undouble, line 130
if (!r_undouble())
{
goto lab4;
}
} while (false);
lab5:
break;
case 2:
// (, line 133
// call R2, line 133
if (!r_R2())
{
goto lab4;
}
// not, line 133
{
v_8 = m_limit - m_cursor;
do
{
// literal, line 133
if (!(Eq_S_B(1, "e")))
{
goto lab8;
}
goto lab4;
} while (false);
lab8:
m_cursor = m_limit - v_8;
}
// delete, line 133
SliceDel();
break;
case 3:
// (, line 136
// call R2, line 136
if (!r_R2())
{
goto lab4;
}
// delete, line 136
SliceDel();
// call e_ending, line 136
if (!r_e_ending())
{
goto lab4;
}
break;
case 4:
// (, line 139
// call R2, line 139
if (!r_R2())
{
goto lab4;
}
// delete, line 139
SliceDel();
break;
case 5:
// (, line 142
// call R2, line 142
if (!r_R2())
{
goto lab4;
}
// Boolean test e_found, line 142
if (!(B_e_found))
{
goto lab4;
}
// delete, line 142
SliceDel();
break;
}
} while (false);
lab4:
m_cursor = m_limit - v_5;
// do, line 146
v_9 = m_limit - m_cursor;
do
{
// (, line 146
if (!(OutGroupingB(g_v_I, 73, 232)))
{
goto lab9;
}
// test, line 148
v_10 = m_limit - m_cursor;
// (, line 148
// among, line 149
if (FindAmongB(a_5, 4) == 0)
{
goto lab9;
}
if (!(OutGroupingB(g_v, 97, 232)))
{
goto lab9;
}
m_cursor = m_limit - v_10;
// [, line 152
m_ket = m_cursor;
// next, line 152
if (m_cursor <= m_limit_backward)
{
goto lab9;
}
m_cursor--;
// ], line 152
m_bra = m_cursor;
// delete, line 152
SliceDel();
} while (false);
lab9:
m_cursor = m_limit - v_9;
return true;
}