Beispiel #1
0
            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);
            }