private Token Jj_consume_token(int kind)
{
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.GetNextToken();
jj_ntk = -1;
if (token.kind == kind)
{
jj_gen++;
if (++jj_gc > 100)
{
jj_gc = 0;
for (int i = 0; i < jj_2_rtns.Length; i++)
{
JJCalls c = jj_2_rtns[i];
while (c != null)
{
if (c.gen < jj_gen) c.first = null;
c = c.next;
}
}
}
return token;
}
token = oldToken;
jj_kind = kind;
throw GenerateParseException();
}