private Expression ParseIntegerLiteral()
{
ValidateToken(TokenId.IntegerLiteral);
string text = _token.Text;
if (text[0] != '-')
{
ulong value;
if (!ulong.TryParse(text, out value) && ulong.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
throw ParseError(Res.InvalidIntegerLiteral(text));
NextToken();
if (value <= int.MaxValue) return CreateLiteral((int) value, text);
if (value <= uint.MaxValue) return CreateLiteral((uint) value, text);
if (value <= long.MaxValue) return CreateLiteral((long) value, text);
return CreateLiteral(value, text);
}
else
{
long value;
if (!long.TryParse(text, out value) && !long.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
throw ParseError(Res.InvalidIntegerLiteral(text));
NextToken();
if (value >= int.MinValue && value <= int.MaxValue)
return CreateLiteral((int) value, text);
return CreateLiteral(value, text);
}
}