private Token Identifier()
{
var buf = new StringBuilder();
do
{
buf.Append((char) currentChar);
Next();
} while (Char.IsLetter((char) currentChar) ||
Char.IsDigit((char) currentChar) ||
currentChar == '_' ||
currentChar == '$');
var identifier = buf.ToString();
var keyword = identifier.KeywordFromString();
return Token(keyword == TokenType.None
? TokenType.Identifier
: keyword, identifier);
}