Ejemplo n.º 1
0
        public void Visit(BinaryMul node)
        {
            OperationPriorities priority = prevPriorities.Pop();

            if ((int)priority > 6 || priority == OperationPriorities.Div)
            {
                sb.Append("(");
                prevPriorities.Push(OperationPriorities.Mul);
                node.LeftChild.Accept(this);
                sb.Append("*");
                prevPriorities.Push(OperationPriorities.Mul);
                node.RightChild.Accept(this);
                sb.Append(")");
            }
            else
            {
                prevPriorities.Push(OperationPriorities.Mul);
                node.LeftChild.Accept(this);
                sb.Append("*");
                prevPriorities.Push(OperationPriorities.Mul);
                node.RightChild.Accept(this);
            }
        }
Ejemplo n.º 2
0
        public void Visit(BinarySub node)
        {
            OperationPriorities priority = prevPriorities.Pop();

            if ((int)priority > 1)
            {
                sb.Append("(");
                prevPriorities.Push(OperationPriorities.Sub);
                node.LeftChild.Accept(this);
                sb.Append("-");
                prevPriorities.Push(OperationPriorities.Sub);
                node.RightChild.Accept(this);
                sb.Append(")");
            }
            else
            {
                prevPriorities.Push(OperationPriorities.Sub);
                node.LeftChild.Accept(this);
                sb.Append("-");
                prevPriorities.Push(OperationPriorities.Sub);
                node.RightChild.Accept(this);
            }
        }