I am working on translating an expression tree to a format that resembles infix notation; I am not evaluating the tree or executing its operations. The tree contains both logic
Try something like this, assuming that node.NodeType
is of type NodeType
, and that function Precedes
exists and returns true if first parameter precedes the second.
protected override Expression Visit(BinaryExpression node, NodeType parentType)
{
bool useParenthesis = Precedes(parentType, node.NodeType);
if (useParenthesis)
Console.Write("(");
Visit(node.Left, node.NodeType);
Console.WriteLine(node.NodeType.ToString());
Visit(node.Right, node.NodeType);
if (useParenthesis)
Console.Write(")");
return node;
}