in Sources/Core/Microsoft.StreamProcessing/Utilities/ExpressionExtensions.cs [930:1181]
private void Visit(ExpressionType expressionType)
{
this.writer.Write(" ");
switch (expressionType)
{
case ExpressionType.Add:
case ExpressionType.AddChecked:
this.writer.Write("+"); break;
// Summary:
// A bitwise or logical AND operation, such as (a & b) in C# and (a And b) in
// Visual Basic.
case ExpressionType.And:
this.writer.Write("&"); break;
// Summary:
// A conditional AND operation that evaluates the second operand only if the
// first operand evaluates to true. It corresponds to (a && b) in C# and (a
// AndAlso b) in Visual Basic.
case ExpressionType.AndAlso:
this.writer.Write("&&"); break;
// Summary:
// A node that represents a null coalescing operation, such as (a ?? b) in C#
// or If(a: break; b) in Visual Basic.
case ExpressionType.Coalesce:
this.writer.Write("??"); break;
// Summary:
// A division operation, such as (a / b), for numeric operands.
case ExpressionType.Divide:
this.writer.Write("/"); break;
// Summary:
// A node that represents an equality comparison, such as (a == b) in C# or
// (a = b) in Visual Basic.
case ExpressionType.Equal:
this.writer.Write("=="); break;
// Summary:
// A bitwise or logical XOR operation, such as (a ^ b) in C# or (a Xor b) in
// Visual Basic.
case ExpressionType.ExclusiveOr:
this.writer.Write("^"); break;
// Summary:
// A "greater than" comparison, such as (a > b).
case ExpressionType.GreaterThan:
this.writer.Write(">"); break;
// Summary:
// A "greater than or equal to" comparison, such as (a >= b).
case ExpressionType.GreaterThanOrEqual:
this.writer.Write(">="); break;
// Summary:
// A bitwise left-shift operation: break; such as (a << b).
case ExpressionType.LeftShift:
this.writer.Write("<<"); break;
// Summary:
// A "less than" comparison: break; such as (a < b).
case ExpressionType.LessThan:
this.writer.Write("<"); break;
// Summary:
// A "less than or equal to" comparison: break; such as (a <= b).
case ExpressionType.LessThanOrEqual:
this.writer.Write("<="); break;
// Summary:
// An arithmetic remainder operation: break; such as (a % b) in C# or (a Mod b) in
// Visual Basic.
case ExpressionType.Modulo:
this.writer.Write("%"); break;
// Summary:
// A multiplication operation: break; such as (a * b): break; without overflow checking: break; for
// numeric operands.
case ExpressionType.Multiply:
case ExpressionType.MultiplyChecked:
this.writer.Write("*"); break;
// Summary:
// An arithmetic negation operation: break; such as (-a). The object a should not be
// modified in place.
case ExpressionType.Negate:
case ExpressionType.NegateChecked:
this.writer.Write("-"); break;
// Summary:
// A unary plus operation: break; such as (+a). The result of a predefined unary plus
// operation is the value of the operand: break; but user-defined implementations might
// have unusual results.
case ExpressionType.UnaryPlus:
this.writer.Write("+"); break;
// Summary:
// A bitwise complement or logical negation operation. In C#: break; it is equivalent
// to (~a) for integral types and to (!a) for Boolean values. In Visual Basic: break;
// it is equivalent to (Not a). The object a should not be modified in place.
case ExpressionType.Not:
this.writer.Write("!"); break; // BUG
// Summary:
// An inequality comparison: break; such as (a != b) in C# or (a <> b) in Visual Basic.
case ExpressionType.NotEqual:
this.writer.Write("!="); break;
// Summary:
// A bitwise or logical OR operation: break; such as (a | b) in C# or (a Or b) in Visual
// Basic.
case ExpressionType.Or:
this.writer.Write("|"); break;
// Summary:
// A short-circuiting conditional OR operation: break; such as (a || b) in C# or (a
// OrElse b) in Visual Basic.
case ExpressionType.OrElse:
this.writer.Write("||"); break;
// Summary:
// A bitwise right-shift operation: break; such as (a >> b).
case ExpressionType.RightShift:
this.writer.Write(">>"); break;
// Summary:
// A subtraction operation: break; such as (a - b): break; without overflow checking: break; for
// numeric operands.
case ExpressionType.Subtract:
case ExpressionType.SubtractChecked:
this.writer.Write("-"); break;
// Summary:
// An assignment operation: break; such as (a = b).
case ExpressionType.Assign:
this.writer.Write("="); break;
// Summary:
// A unary decrement operation: break; such as (a - 1) in C# and Visual Basic. The
// object a should not be modified in place.
case ExpressionType.Decrement:
this.writer.Write("-"); break;
// Summary:
// A unary increment operation: break; such as (a + 1) in C# and Visual Basic. The
// object a should not be modified in place.
case ExpressionType.Increment:
this.writer.Write("+"); break;
// Summary:
// An addition compound assignment operation: break; such as (a += b): break; without overflow
// checking: break; for numeric operands.
case ExpressionType.AddAssign:
case ExpressionType.AddAssignChecked:
this.writer.Write("+="); break;
// Summary:
// A bitwise or logical AND compound assignment operation: break; such as (a &= b)
// in C#.
case ExpressionType.AndAssign:
this.writer.Write("&="); break;
// Summary:
// An division compound assignment operation: break; such as (a /= b): break; for numeric
// operands.
case ExpressionType.DivideAssign:
this.writer.Write("/="); break;
// Summary:
// A bitwise or logical XOR compound assignment operation: break; such as (a ^= b)
// in C#.
case ExpressionType.ExclusiveOrAssign:
this.writer.Write("^="); break;
// Summary:
// A bitwise left-shift compound assignment: break; such as (a <<= b).
case ExpressionType.LeftShiftAssign:
this.writer.Write("<<="); break;
// Summary:
// An arithmetic remainder compound assignment operation: break; such as (a %= b) in
// C#.
case ExpressionType.ModuloAssign:
this.writer.Write("%="); break;
// Summary:
// A multiplication compound assignment operation: break; such as (a *= b): break; without
// overflow checking: break; for numeric operands.
case ExpressionType.MultiplyAssign:
case ExpressionType.MultiplyAssignChecked:
this.writer.Write("*="); break;
// Summary:
// A bitwise or logical OR compound assignment: break; such as (a |= b) in C#.
case ExpressionType.OrAssign:
this.writer.Write("|="); break;
// Summary:
// A bitwise right-shift compound assignment operation: break; such as (a >>= b).
case ExpressionType.RightShiftAssign:
this.writer.Write(">>="); break;
// Summary:
// A subtraction compound assignment operation: break; such as (a -= b): break; without overflow
// checking: break; for numeric operands.
case ExpressionType.SubtractAssign:
case ExpressionType.SubtractAssignChecked:
this.writer.Write("-="); break;
// Summary:
// A unary prefix increment: break; such as (++a). The object a should be modified
// in place.
case ExpressionType.PreIncrementAssign:
this.writer.Write("++"); break;
// Summary:
// A unary prefix decrement: break; such as (--a). The object a should be modified
// in place.
case ExpressionType.PreDecrementAssign:
this.writer.Write("--"); break;
// Summary:
// A unary postfix increment: break; such as (a++). The object a should be modified
// in place.
case ExpressionType.PostIncrementAssign:
this.writer.Write("++"); break;
// Summary:
// A unary postfix decrement: break; such as (a--). The object a should be modified
// in place.
case ExpressionType.PostDecrementAssign:
this.writer.Write("--"); break;
// Summary:
// A ones complement operation: break; such as (~a) in C#.
case ExpressionType.OnesComplement:
this.writer.Write("~"); break;
// Summary:
// A true condition value.
case ExpressionType.IsTrue:
this.writer.Write("true"); break;
// Summary:
// A false condition value.
case ExpressionType.IsFalse:
this.writer.Write("false"); break;
}
this.writer.Write(" ");
}