示例#1
0
        public static Completion Calculate(IValue leftValue, MultiplicativeOperator multiplicativeOperator, IValue rightValue)
        {
            var lnumComp = leftValue.ToNumber();

            if (lnumComp.IsAbrupt())
            {
                return(lnumComp);
            }
            var rnumComp = rightValue.ToNumber();

            if (rnumComp.IsAbrupt())
            {
                return(rnumComp);
            }

            double lnum = (lnumComp.value as NumberValue) !.number;
            double rnum = (rnumComp.value as NumberValue) !.number;

            return(Completion.NormalCompletion(new NumberValue(multiplicativeOperator switch
            {
                MultiplicativeOperator.Multiply => lnum * rnum,
                MultiplicativeOperator.Divide => lnum / rnum,
                MultiplicativeOperator.Modulus => lnum % rnum,
                _ => throw new InvalidOperationException($"MultiplicativeExpression.Evaluate: unknown MultiplicativeOperator enum value {(int)multiplicativeOperator}")
            })));
示例#2
0
 public MultiplicativeExpression(Expression left)
 {
     leftExpression         = left;
     rightExpression        = null;
     multiplicativeOperator = null;
 }
示例#3
0
 public MultiplicativeExpression(AbstractMultiplicativeExpression multiplicativeExpression, MultiplicativeOperator multiplicativeOperator, AbstractExponentiationExpression exponentiationExpression, bool isStrictMode) : base(isStrictMode)
 {
     this.multiplicativeExpression = multiplicativeExpression;
     this.multiplicativeOperator   = multiplicativeOperator;
     this.exponentiationExpression = exponentiationExpression;
 }
示例#4
0
 public MultiplicativeExpression(Expression left, Expression right, MultiplicativeOperator operatorValue)
 {
     leftExpression         = left;
     rightExpression        = right;
     multiplicativeOperator = operatorValue;
 }