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); }
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; }
internal BufferedChain(BufferedChain parent, IokeObject last, IokeObject head) { this.parent = parent; this.last = last; this.head = head; }