private static string ExpressionToStringWithParentheses(IBinaryOperator parent, IAstTreeNode childNode, bool isLeftChild) { string text = childNode.ToString(); var child = childNode.Value as IBinaryOperator; if (child == null || parent.Precedence < child.Precedence) { return(text); } if (parent.Precedence == child.Precedence) { if (!(parent.Associativity == OperatorAssociativity.RightAssociative || child.Associativity == OperatorAssociativity.RightAssociative)) { if (isLeftChild) { return(text); } if (parent.Associativity == OperatorAssociativity.NonAssociative && child.Associativity == OperatorAssociativity.NonAssociative) { return(text); } } } return(string.Format("({0})", text)); }
private static string ExpressionToStringWithParentheses(IBinaryOperator parent, IAstTreeNode childNode, bool isLeftChild) { string text = childNode.ToString(); var child = childNode.Value as IBinaryOperator; if (child == null || parent.Precedence < child.Precedence) return text; if (parent.Precedence == child.Precedence) { if (!(parent.Associativity == OperatorAssociativity.RightAssociative || child.Associativity == OperatorAssociativity.RightAssociative)) { if (isLeftChild) return text; if (parent.Associativity == OperatorAssociativity.NonAssociative && child.Associativity == OperatorAssociativity.NonAssociative) return text; } } return string.Format("({0})", text); }