public override void OnBinaryExpression(BinaryExpression node)
{
switch (node.Operator)
{
case BinaryOperatorType.ShiftLeft:
case BinaryOperatorType.ShiftRight:
case BinaryOperatorType.ExclusiveOr:
case BinaryOperatorType.BitwiseAnd:
case BinaryOperatorType.BitwiseOr:
{
EmitBitwiseOperator(node);
break;
}
case BinaryOperatorType.Or:
{
EmitOr(node);
break;
}
case BinaryOperatorType.And:
{
EmitAnd(node);
break;
}
case BinaryOperatorType.Addition:
case BinaryOperatorType.Subtraction:
case BinaryOperatorType.Multiply:
case BinaryOperatorType.Division:
case BinaryOperatorType.Modulus:
{
OnArithmeticOperator(node);
break;
}
case BinaryOperatorType.Exponentiation:
{
OnExponentiation(node);
break;
}
case BinaryOperatorType.Assign:
{
OnAssignment(node);
break;
}
case BinaryOperatorType.Equality:
{
OnEquality(node);
break;
}
case BinaryOperatorType.Inequality:
{
OnInequality(node);
break;
}
case BinaryOperatorType.GreaterThan:
{
OnGreaterThan(node);
break;
}
case BinaryOperatorType.LessThan:
{
OnLessThan(node);
break;
}
case BinaryOperatorType.GreaterThanOrEqual:
{
OnGreaterThanOrEqual(node);
break;
}
case BinaryOperatorType.LessThanOrEqual:
{
OnLessThanOrEqual(node);
break;
}
case BinaryOperatorType.ReferenceInequality:
{
OnReferenceComparison(node);
break;
}
case BinaryOperatorType.ReferenceEquality:
{
OnReferenceComparison(node);
break;
}
case BinaryOperatorType.TypeTest:
{
OnTypeTest(node);
break;
}
default:
{
OperatorNotImplemented(node);
break;
}
}
}