コード例 #1
0
        public void Visit(NeqExpr neqExpr, object[] args)
        {
            neqExpr.FirstOp.Accept(this);
            neqExpr.SecondOp.Accept(this);

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


            DataType  resultType = readAlgoOperand(v1, v2, neqExpr.Location);
            BoolConst result     = new BoolConst();

            if (resultType == DataType.Int)
            {
                result.Value = Convert.ToInt32(v1.GetValueObject()) != Convert.ToInt32(v2.GetValueObject());
            }
            else if (resultType == DataType.Float)
            {
                kernel.IssueWarning(new Error(ErrorType.EqualOnFloat, neqExpr.Location));
                result.Value = Convert.ToDouble(v1.GetValueObject()) != Convert.ToDouble(v2.GetValueObject());
            }
            else
            {
                throw new Exception();
            }
            neqExpr.RightValue = result;
        }
コード例 #2
0
        public override BaseLogicalExpression ToExpression()
        {
            BaseLogicalExpression expr = null;

            // Check if we need to change value type
            object parsedValue = Value;

            if (int.TryParse((string)parsedValue, out int intValue))
            {
                parsedValue = intValue;
            }
            else
            {
                // Strip single quotes from value
                parsedValue = Value.Replace("'", "");
            }

            switch (RelationalOperator)
            {
            case RelationalOperator.EQUAL:
                expr = new EqExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.NOT_EQUAL:
                expr = new NeqExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.GREATER_EQUAL:
                expr = new GteExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.LESS_EQUAL:
                expr = new LteExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.GREATER:
                expr = new GtExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.LESS:
                expr = new LtExpr(SimpleAttribute.value, parsedValue);
                break;

            case RelationalOperator.LIKE:
            case RelationalOperator.IS:
                throw new NotSupportedException("Operation not supported");
            }

            return(expr);
        }