in src/Lucene.Net.Analysis.Common/Tartarus/Snowball/Ext/KpStemmer.cs [2061:2448]
public override bool Stem()
{
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;
int v_11;
int v_12;
int v_13;
int v_14;
int v_15;
int v_16;
int v_18;
int v_19;
int v_20;
// (, line 214
// unset Y_found, line 216
B_Y_found = false;
// unset stemmed, line 217
B_stemmed = false;
// do, line 218
v_1 = m_cursor;
do
{
// (, line 218
// [, line 218
m_bra = m_cursor;
// literal, line 218
if (!(Eq_S(1, "y")))
{
goto lab0;
}
// ], line 218
m_ket = m_cursor;
// <-, line 218
SliceFrom("Y");
// set Y_found, line 218
B_Y_found = true;
} while (false);
lab0:
m_cursor = v_1;
// do, line 219
v_2 = m_cursor;
do
{
// repeat, line 219
while (true)
{
v_3 = m_cursor;
do
{
// (, line 219
// goto, line 219
while (true)
{
v_4 = m_cursor;
do
{
// (, line 219
if (!(InGrouping(g_v, 97, 121)))
{
goto lab5;
}
// [, line 219
m_bra = m_cursor;
// literal, line 219
if (!(Eq_S(1, "y")))
{
goto lab5;
}
// ], line 219
m_ket = m_cursor;
m_cursor = v_4;
goto golab4;
} while (false);
lab5:
m_cursor = v_4;
if (m_cursor >= m_limit)
{
goto lab3;
}
m_cursor++;
}
golab4:
// <-, line 219
SliceFrom("Y");
// set Y_found, line 219
B_Y_found = true;
// LUCENENET NOTE: continue label is not supported directly in .NET,
// so we just need to add another goto to get to the end of the outer loop.
// See: http://stackoverflow.com/a/359449/181087
// Original code:
//continue replab2;
goto end_of_outer_loop;
} while (false);
lab3:
m_cursor = v_3;
goto replab2;
end_of_outer_loop: { /* LUCENENET: intentionally empty */ }
}
replab2: {/* LUCENENET: intentionally blank */}
} while (false);
//lab1: // not referenced
m_cursor = v_2;
// call measure, line 221
if (!r_measure())
{
return false;
}
// backwards, line 223
m_limit_backward = m_cursor; m_cursor = m_limit;
// (, line 223
// do, line 224
v_5 = m_limit - m_cursor;
do
{
// (, line 224
// call Step_1, line 224
if (!r_Step_1())
{
goto lab6;
}
// set stemmed, line 224
B_stemmed = true;
} while (false);
lab6:
m_cursor = m_limit - v_5;
// do, line 225
v_6 = m_limit - m_cursor;
do
{
// (, line 225
// call Step_2, line 225
if (!r_Step_2())
{
goto lab7;
}
// set stemmed, line 225
B_stemmed = true;
} while (false);
lab7:
m_cursor = m_limit - v_6;
// do, line 226
v_7 = m_limit - m_cursor;
do
{
// (, line 226
// call Step_3, line 226
if (!r_Step_3())
{
goto lab8;
}
// set stemmed, line 226
B_stemmed = true;
} while (false);
lab8:
m_cursor = m_limit - v_7;
// do, line 227
v_8 = m_limit - m_cursor;
do
{
// (, line 227
// call Step_4, line 227
if (!r_Step_4())
{
goto lab9;
}
// set stemmed, line 227
B_stemmed = true;
} while (false);
lab9:
m_cursor = m_limit - v_8;
m_cursor = m_limit_backward; // unset GE_removed, line 229
B_GE_removed = false;
// do, line 230
v_9 = m_cursor;
do
{
// (, line 230
// and, line 230
v_10 = m_cursor;
// call Lose_prefix, line 230
if (!r_Lose_prefix())
{
goto lab10;
}
m_cursor = v_10;
// call measure, line 230
if (!r_measure())
{
goto lab10;
}
} while (false);
lab10:
m_cursor = v_9;
// backwards, line 231
m_limit_backward = m_cursor; m_cursor = m_limit;
// (, line 231
// do, line 232
v_11 = m_limit - m_cursor;
do
{
// (, line 232
// bool test GE_removed, line 232
if (!(B_GE_removed))
{
goto lab11;
}
// call Step_1c, line 232
if (!r_Step_1c())
{
goto lab11;
}
} while (false);
lab11:
m_cursor = m_limit - v_11;
m_cursor = m_limit_backward; // unset GE_removed, line 234
B_GE_removed = false;
// do, line 235
v_12 = m_cursor;
do
{
// (, line 235
// and, line 235
v_13 = m_cursor;
// call Lose_infix, line 235
if (!r_Lose_infix())
{
goto lab12;
}
m_cursor = v_13;
// call measure, line 235
if (!r_measure())
{
goto lab12;
}
} while (false);
lab12:
m_cursor = v_12;
// backwards, line 236
m_limit_backward = m_cursor; m_cursor = m_limit;
// (, line 236
// do, line 237
v_14 = m_limit - m_cursor;
do
{
// (, line 237
// bool test GE_removed, line 237
if (!(B_GE_removed))
{
goto lab13;
}
// call Step_1c, line 237
if (!r_Step_1c())
{
goto lab13;
}
} while (false);
lab13:
m_cursor = m_limit - v_14;
m_cursor = m_limit_backward; // backwards, line 239
m_limit_backward = m_cursor; m_cursor = m_limit;
// (, line 239
// do, line 240
v_15 = m_limit - m_cursor;
do
{
// (, line 240
// call Step_7, line 240
if (!r_Step_7())
{
goto lab14;
}
// set stemmed, line 240
B_stemmed = true;
} while (false);
lab14:
m_cursor = m_limit - v_15;
// do, line 241
v_16 = m_limit - m_cursor;
do
{
// (, line 241
// or, line 241
do
{
do
{
// bool test stemmed, line 241
if (!(B_stemmed))
{
goto lab17;
}
goto lab16;
} while (false);
lab17:
// bool test GE_removed, line 241
if (!(B_GE_removed))
{
goto lab15;
}
} while (false);
lab16:
// call Step_6, line 241
if (!r_Step_6())
{
goto lab15;
}
} while (false);
lab15:
m_cursor = m_limit - v_16;
m_cursor = m_limit_backward; // do, line 243
v_18 = m_cursor;
do
{
// (, line 243
// bool test Y_found, line 243
if (!(B_Y_found))
{
goto lab18;
}
// repeat, line 243
while (true)
{
v_19 = m_cursor;
do
{
// (, line 243
// goto, line 243
while (true)
{
v_20 = m_cursor;
do
{
// (, line 243
// [, line 243
m_bra = m_cursor;
// literal, line 243
if (!(Eq_S(1, "Y")))
{
goto lab22;
}
// ], line 243
m_ket = m_cursor;
m_cursor = v_20;
goto golab21;
} while (false);
lab22:
m_cursor = v_20;
if (m_cursor >= m_limit)
{
goto lab20;
}
m_cursor++;
}
golab21:
// <-, line 243
SliceFrom("y");
// LUCENENET NOTE: continue label is not supported directly in .NET,
// so we just need to add another goto to get to the end of the outer loop.
// See: http://stackoverflow.com/a/359449/181087
// Original code:
//continue replab19;
goto end_of_outer_loop_2;
} while (false);
lab20:
m_cursor = v_19;
goto replab19;
end_of_outer_loop_2: { /* LUCENENET: intentionally empty */ }
}
replab19: {/* LUCENENET: intentionally blank */}
} while (false);
lab18:
m_cursor = v_18;
return true;
}