Example #1
0
        private expression convert_binary_expression(ICSharpCode.NRefactory.Ast.BinaryOperatorExpression expr)
        {
            Operators  op    = Operators.Undefined;
            expression left  = convert_expression(expr.Left);
            expression right = convert_expression(expr.Right);

            switch (expr.Op)
            {
            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Add: op = Operators.Plus; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Subtract: op = Operators.Minus; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Multiply: op = Operators.Multiplication; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Divide: op = Operators.Division; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LessThan: op = Operators.Less; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LessThanOrEqual: op = Operators.LessEqual; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.GreaterThan: op = Operators.Greater; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.GreaterThanOrEqual: op = Operators.GreaterEqual; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Equality: op = Operators.Equal; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.InEquality: op = Operators.NotEqual; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LogicalAnd: op = Operators.LogicalAND; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LogicalOr: op = Operators.LogicalOR; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.ExclusiveOr: op = Operators.BitwiseXOR; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Like: op = Operators.Equal; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.DivideInteger: op = Operators.IntegerDivision; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Modulus: op = Operators.ModulusRemainder; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.BitwiseAnd: op = Operators.BitwiseAND; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.BitwiseOr: op = Operators.BitwiseOR; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.ReferenceEquality: op = Operators.Equal; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.ReferenceInequality: op = Operators.NotEqual; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.ShiftLeft: op = Operators.BitwiseLeftShift; break;

            case ICSharpCode.NRefactory.Ast.BinaryOperatorType.ShiftRight: op = Operators.BitwiseRightShift; break;
            }
            return(new bin_expr(left, right, op));
        }
Example #2
0
                public override object VisitBinaryOperatorExpression(ICSharpCode.NRefactory.Ast.BinaryOperatorExpression binaryOperatorExpression, object data)
                {
                    bool left  = (bool)(binaryOperatorExpression.Left.AcceptVisitor(this, data) ?? (object)false);
                    bool right = (bool)(binaryOperatorExpression.Right.AcceptVisitor(this, data) ?? (object)false);

                    switch (binaryOperatorExpression.Op)
                    {
                    case ICSharpCode.NRefactory.Ast.BinaryOperatorType.InEquality:
                        return(left != right);

                    case ICSharpCode.NRefactory.Ast.BinaryOperatorType.Equality:
                        return(left == right);

                    case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LogicalOr:
                        return(left || right);

                    case ICSharpCode.NRefactory.Ast.BinaryOperatorType.LogicalAnd:
                        return(left && right);
                    }

                    Console.WriteLine("Unknown operator:" + binaryOperatorExpression.Op);
                    return(left);
                }