public override Argument VisitMultiplicativeExpression(CalcParser.MultiplicativeExpressionContext context) { Argument arg1 = Visit(context.expression(0)); Argument arg2 = Visit(context.expression(1)); if (arg1.IsNull || arg2.IsNull) { return(Argument.Null); } if (context.Multiply() != null) { return(Multiplication(arg1, arg2)); } if (context.Divide() != null) { return(Division(arg1, arg2)); } return(Argument.Null); }
public override Query VisitMultiplicativeExpression(CalcParser.MultiplicativeExpressionContext 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; } if (context.Multiply() != null) { return(new Query($"({q1}*{q2})", type)); } if (context.Divide() != null) { return(new Query($"({q1}/nullif({q2}, 0))", type)); } throw new ExpressionException("Unknown multiplicative operation: " + context.GetText()); }