public override JsonValue Evaluate( QueryExecutor executor, ExecutionFrame frame ) { JsonValue o = Operand.Evaluate(executor, frame); switch (ExpressionType) { case AqlExpressionType.UnaryPlus: return(AqlArithmetic.Plus(o)); case AqlExpressionType.UnaryMinus: return(AqlArithmetic.Minus(o)); case AqlExpressionType.Not: return(AqlArithmetic.Not(o)); } throw new QueryExecutionException( $"Cannot evaluate expression {ExpressionType} - not implemented" ); }
public override JsonValue Evaluate( QueryExecutor executor, ExecutionFrame frame ) { JsonValue l = Left.Evaluate(executor, frame); JsonValue r = Right.Evaluate(executor, frame); switch (ExpressionType) { case AqlExpressionType.Add: return(AqlArithmetic.Add(l, r)); case AqlExpressionType.Subtract: return(AqlArithmetic.Subtract(l, r)); case AqlExpressionType.Multiply: return(AqlArithmetic.Multiply(l, r)); case AqlExpressionType.Divide: return(AqlArithmetic.Divide(l, r)); case AqlExpressionType.Modulo: return(AqlArithmetic.Modulo(l, r)); case AqlExpressionType.Equal: return(AqlArithmetic.Equal(l, r)); case AqlExpressionType.NotEqual: return(AqlArithmetic.NotEqual(l, r)); case AqlExpressionType.GreaterThan: return(AqlArithmetic.GreaterThan(l, r)); case AqlExpressionType.GreaterThanOrEqual: return(AqlArithmetic.GreaterThenOrEqual(l, r)); case AqlExpressionType.LessThan: return(AqlArithmetic.LessThan(l, r)); case AqlExpressionType.LessThanOrEqual: return(AqlArithmetic.LessThanOrEqual(l, r)); case AqlExpressionType.And: return(AqlArithmetic.And(l, r)); case AqlExpressionType.Or: return(AqlArithmetic.Or(l, r)); } throw new QueryExecutionException( $"Cannot evaluate expression {ExpressionType} - not implemented" ); }