public virtual IToken NextTokenImpl()
{
//System.out.println("nextToken: c="+(char)c+"@"+input.Index());
while (true)
{ // lets us avoid recursion when skipping stuff
startCharIndex = input.Index;
startLine = input.Line;
startCharPositionInLine = input.CharPositionInLine;
if (c == EOF)
return NewToken(EOF_TYPE);
IToken t;
if (scanningInsideExpr)
t = NextTokenInside();
else
t = NextTokenOutside();
if (t != SkipToken)
return t;
}
}