/* Identifier or keyword */
Token IdentifierOrKeyword()
{
input.StorePosition();
input.BufferClear();
while (input.CanContinue && input.Current.IsIdentifier())
{
input.BufferAppend(input.Current);
input.Advance();
}
// Keyword or identifier?
Symbol symbol;
if (keywords.TryGetValue(input.Buffer, out symbol))
{
return(input.Output(symbol));
}
return(input.OutputBuffer(Symbol.Identifier));
}