Beispiel #1
0
        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));
        }
Beispiel #2
0
        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");
        }