Пример #1
0
        internal IokeObject Pop()
        {
            if (head != null)
            {
                while (Message.IsTerminator(head) && Message.GetNext(head) != null)
                {
                    head = Message.GetNext(head);
                    Message.SetPrev(head, null);
                }
            }

            IokeObject headToReturn = head;

            head   = chains.head;
            last   = chains.last;
            chains = chains.parent;

            return(headToReturn);
        }
Пример #2
0
 internal void Push(int precedence, IokeObject op, Level.Type type)
 {
     currentLevel = new Level(precedence, op, currentLevel, type);
     chains       = new BufferedChain(chains, last, head);
     last         = head = null;
 }
Пример #3
0
 internal BufferedChain(BufferedChain parent, IokeObject last, IokeObject head)
 {
     this.parent = parent;
     this.last   = last;
     this.head   = head;
 }