private Token Number()
{
var buf = new StringBuilder();
do
{
buf.Append((char) currentChar);
Next();
} while (Char.IsDigit((char) currentChar));
if (currentChar != '.' ||
!Char.IsDigit((char)Peek()) // function invocation
)
return Token(TokenType.Number, buf.ToString());
// so, it's a dot and follow by a number, read decimal
do
{
buf.Append((char) currentChar);
Next();
} while (Char.IsDigit((char) currentChar));
return Token(TokenType.Number, buf.ToString());
}