Example #1
0
        public void Visit(MulExpr mulExpr, object[] args)
        {
            mulExpr.FirstOp.Accept(this);
            mulExpr.SecondOp.Accept(this);

            RightValue v1 = readRightValue(mulExpr.FirstOp);
            RightValue v2 = readRightValue(mulExpr.SecondOp);


            DataType resultType = readAlgoOperand(v1, v2, mulExpr.Location);

            if (resultType == DataType.Int)
            {
                IntConst result = new IntConst();
                result.Value       = Convert.ToInt32(v1.GetValueObject()) * Convert.ToInt32(v2.GetValueObject());
                mulExpr.RightValue = result;
                //mulExpr.DataType = DataType.Int;
            }
            else if (resultType == DataType.Float)
            {
                FloatConst result = new FloatConst();
                result.Value       = Convert.ToDouble(v1.GetValueObject()) * Convert.ToDouble(v2.GetValueObject());
                mulExpr.RightValue = result;
                //mulExpr.DataType = DataType.Float;
            }
            else
            {
                throw new Exception();
            }
        }
Example #2
0
        private Expr parseMulExpr()
        {
            Expr expr = parseParenExpr();

            while (true)
            {
                int token = parseToken();
                switch (token)
                {
                case '%':
                    expr = new ModExpr(expr, parseParenExpr());
                    break;

                case '*':
                    expr = new MulExpr(expr, parseParenExpr());
                    break;

                case '/':
                    expr = new DivExpr(expr, parseParenExpr());
                    break;

                default:
                    _peekToken = token;
                    return(expr);
                }
            }
        }
Example #3
0
 /// <summary>
 /// Validate a multiplication expression.
 /// </summary>
 /// <param name="mulex">
 ///            is the expression. </param>
 /// <returns> null. </returns>
 public virtual object visit(MulExpr mulex)
 {
     printBinExpr("MUL", mulex);
     return(null);
 }
Example #4
0
 /// <param name="mulex">
 ///            is the multiply expression. </param>
 /// <returns> a new function. </returns>
 public virtual object visit(MulExpr ex)
 {
     ex.left().accept(this);
     ex.right().accept(this);
     return(null);
 }
Example #5
0
 /// <param name="mulex">
 ///            is the multiply expression. </param>
 /// <returns> a new function. </returns>
 public virtual object visit(MulExpr mulex)
 {
     return(make_ArithOp(mulex, new QName("fs", "times", OpFunctionLibrary.XPATH_OP_NS)));
 }