public override Query VisitPowerExpression(CalcParser.PowerExpressionContext context) { Query q1 = Visit(context.expression(0)); Query q2 = Visit(context.expression(1)); ResultType type = ResultType.Undefined; if (q1.ExpectedResult == ResultType.Number && q2.ExpectedResult == ResultType.Number) { type = ResultType.Number; } return(new Query($"({q1}^{q2})", type)); }
public override Argument VisitPowerExpression(CalcParser.PowerExpressionContext context) { Argument arg1 = Visit(context.expression(0)); Argument arg2 = Visit(context.expression(1)); if (arg1.IsNull || arg2.IsNull) { return(Argument.Null); } if (arg1.IsDouble && arg2.IsDouble) { double result = Math.Pow(arg1.ToDouble(), arg2.ToDouble()); return(new Argument(result)); } throw new ArgumentCastException("Wrong arguments are used in exponentiation operation"); }