internal static ExpressionType GetExpressionType(this TokenType tokenType)
{
//too lazy to make a dictionary, use switch
switch (tokenType)
{
case TokenType.PLUS: return ExpressionType.Add;
case TokenType.MINUS: return ExpressionType.Subtract;
case TokenType.STAR: return ExpressionType.Multiply;
case TokenType.FSLASH: return ExpressionType.Divide;
case TokenType.MODULO: return ExpressionType.Modulo;
case TokenType.EQUAL: return ExpressionType.Equal;
case TokenType.LT: return ExpressionType.LessThan;
case TokenType.GT: return ExpressionType.GreaterThan;
case TokenType.LTE: return ExpressionType.LessThanOrEqual;
case TokenType.GTE: return ExpressionType.GreaterThanOrEqual;
case TokenType.NOTEQUAL: return ExpressionType.NotEqual;
case TokenType.AND: return ExpressionType.AndAlso;
case TokenType.OR: return ExpressionType.OrElse;
case TokenType.NotExpression: return ExpressionType.Not;
case TokenType.Negation: return ExpressionType.Negate;
default: throw new ArgumentOutOfRangeException();
}
}