Exemplo n.º 1
0
        private void BracketHelper(
            Stack <IPrecedenceMember> precedenceStack,
            Queue <IEquationMember> outputQueue,
            Stack <Function> functionStack, Bracket bracket)
        {
            if (bracket.Equals(Bracket.LeftBracket))
            {
                precedenceStack.Push(bracket);
            }
            else if (precedenceStack.Count == 0)
            {
                throw new ArgumentException();
            }
            else if (bracket.Equals(Bracket.RightBracket))
            {
                while (!precedenceStack.Peek().Equals(Bracket.LeftBracket))
                {
                    if (precedenceStack.Count < 1)
                    {
                        throw new ArgumentException("Unbalanced parentheses");
                    }
                    outputQueue.Enqueue(precedenceStack.Pop());
                }
                precedenceStack.Pop();
            }
            else
            {
                throw new NotImplementedException();
            }

            if (precedenceStack.Count() > 0 && precedenceStack.Peek() is Function)
            {
                functionStack.Pop();
            }
        }