public static Expression NewNumOperator(TokenType tokenType, Expression expression1, Expression expression2) { if (tokenType == TokenType.Plus && expression1.Type == typeof(string)) { return(new StrConcatOperator(Validator.CheckType <IExpression <string> >(expression1), Validator.CheckType <IExpression <string> >(expression2))); } else { return(new NumOperator(tokenType, Validator.CheckType <IExpression <double> >(expression1), Validator.CheckType <IExpression <double> >(expression2))); } }
public static Expression NewCompareOperator(TokenType tokenType, Expression expression1, Expression expression2) { if (expression1.Type == typeof(double)) { return(new CompareOperator <double>(tokenType, Validator.CheckType <IExpression <double> >(expression1), Validator.CheckType <IExpression <double> >(expression2))); } else if (expression1.Type == typeof(string)) { return(new CompareOperator <string>(tokenType, Validator.CheckType <IExpression <string> >(expression1), Validator.CheckType <IExpression <string> >(expression2))); } else { return(new CompareOperator <bool>(tokenType, Validator.CheckType <IExpression <bool> >(expression1), Validator.CheckType <IExpression <bool> >(expression2))); } }
public UnaryNotOperator(Expression expression) { this.expression = Validator.CheckType <IExpression <bool> >(expression); }
public static Expression NewBoolOperator(TokenType tokenType, Expression expression1, Expression expression2) { return(new BoolOperator(tokenType, Validator.CheckType <IExpression <bool> >(expression1), Validator.CheckType <IExpression <bool> >(expression2))); }
public UnaryMinusOperator(Expression expression) { this.expression = Validator.CheckType <IExpression <double> >(expression); }