private static void WriteBinaryExpression(BoundBinaryExpression node, IndentedTextWriter writer) { var precedence = SyntaxFacts.BinaryOperatorPrecedence(node.Op.TokenKind); writer.WriteNestedExpression(precedence, node.Left); writer.WriteSpace(); writer.WritePunctuation(node.Op.TokenKind); writer.WriteSpace(); writer.WriteNestedExpression(precedence, node.Right); }
private static void WriteNestedExpression( this IndentedTextWriter writer, int parentPrecedence, BoundExpression expression) { if (expression is BoundUnaryExpression unary) { writer.WriteNestedExpression( parentPrecedence, SyntaxFacts.UnaryOperatorPrecedence(unary.Op.TokenKind), unary); } else if (expression is BoundBinaryExpression binary) { writer.WriteNestedExpression( parentPrecedence, SyntaxFacts.BinaryOperatorPrecedence(binary.Op.TokenKind), binary); } else { expression.WriteTo(writer); } }