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)); }
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); }