public AqlBinaryOperator( AqlExpression left, AqlExpression right, AqlExpressionType type ) { if ( type != AqlExpressionType.Add && type != AqlExpressionType.Subtract && type != AqlExpressionType.Multiply && type != AqlExpressionType.Divide && type != AqlExpressionType.Modulo && type != AqlExpressionType.Equal && type != AqlExpressionType.NotEqual && type != AqlExpressionType.GreaterThan && type != AqlExpressionType.GreaterThanOrEqual && type != AqlExpressionType.LessThan && type != AqlExpressionType.LessThanOrEqual && type != AqlExpressionType.And && type != AqlExpressionType.Or ) { throw new ArgumentException( $"Provided expression type {type} is not a binary operation" ); } ExpressionType = type; Left = left; Right = right; Parameters = new ReadOnlyCollection <string>( left.Parameters.Union(right.Parameters).ToList() ); }
public AqlUnaryOperator(AqlExpression operand, AqlExpressionType type) { if ( type != AqlExpressionType.UnaryPlus && type != AqlExpressionType.UnaryMinus && type != AqlExpressionType.Not ) { throw new ArgumentException( $"Provided expression type {type} is not an unary operation" ); } ExpressionType = type; Operand = operand; }