public virtual Token GetNextToken()
{
Token matchedToken;
int curPos = 0;
for (; ; )
{
try
{
curChar = input_stream.BeginToken();
}
catch (System.IO.IOException /*e*/)
{
jjmatchedKind = 0;
matchedToken = JjFillToken();
return matchedToken;
}
switch (curLexState)
{
case 0:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = JjMoveStringLiteralDfa0_0();
break;
case 1:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_1();
break;
}
if (jjmatchedKind != 0x7fffffff)
{
if (jjmatchedPos + 1 < curPos)
input_stream.BackUp(curPos - jjmatchedPos - 1);
if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 63 /*077*/))) != 0L)
{
matchedToken = JjFillToken();
if (jjnewLexState[jjmatchedKind] != -1)
curLexState = jjnewLexState[jjmatchedKind];
return matchedToken;
}
else
{
if (jjnewLexState[jjmatchedKind] != -1)
curLexState = jjnewLexState[jjmatchedKind];
goto EOFLoop;
}
}
int error_line = input_stream.EndLine;
int error_column = input_stream.EndColumn;
string error_after = null;
bool EOFSeen = false;
try { input_stream.ReadChar(); input_stream.BackUp(1); }
catch (System.IO.IOException /*e1*/)
{
EOFSeen = true;
error_after = curPos <= 1 ? "" : input_stream.Image;
if (curChar == '\n' || curChar == '\r')
{
error_line++;
error_column = 0;
}
else
error_column++;
}
if (!EOFSeen)
{
input_stream.BackUp(1);
error_after = curPos <= 1 ? "" : input_stream.Image;
}
throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
EOFLoop: ;
}
}