// Decompiled by: Fernflower v0.6 // Date: 16.01.2011 23:16:01 // Copyright: 2008-2009, Stiver // Home page: http://www.reversed-java.com package org.antlr.runtime.tree; import org.antlr.runtime.TokenStream; import org.antlr.runtime.misc.IntArray; import org.antlr.runtime.misc.LookaheadStream; import org.antlr.runtime.tree.CommonTreeAdaptor; import org.antlr.runtime.tree.TreeAdaptor; import org.antlr.runtime.tree.TreeIterator; import org.antlr.runtime.tree.TreeNodeStream; public class CommonTreeNodeStream extends LookaheadStream implements TreeNodeStream { public static final int DEFAULT_INITIAL_BUFFER_SIZE = 100; public static final int INITIAL_CALL_STACK_SIZE = 10; protected Object root; protected TokenStream tokens; TreeAdaptor adaptor; protected TreeIterator it; protected IntArray calls; protected boolean hasNilRoot; protected int level; public CommonTreeNodeStream(Object var1) { this(new CommonTreeAdaptor(), var1); } public CommonTreeNodeStream(TreeAdaptor var1, Object var2) { super(var1.create(-1, "EOF")); this.hasNilRoot = false; this.level = 0; this.root = var2; this.adaptor = var1; this.it = new TreeIterator(this.root); this.it.eof = this.eof; } public void reset() { super.reset(); this.it.reset(); this.hasNilRoot = false; this.level = 0; if(this.calls != null) { this.calls.clear(); } } public Object nextElement() { Object var1 = this.it.next(); if(var1 == this.it.up) { --this.level; if(this.level == 0 && this.hasNilRoot) { return this.it.next(); } } else if(var1 == this.it.down) { ++this.level; } if(this.level == 0 && this.adaptor.isNil(var1)) { this.hasNilRoot = true; var1 = this.it.next(); ++this.level; var1 = this.it.next(); } return var1; } public void setUniqueNavigationNodes(boolean var1) { } public Object getTreeSource() { return this.root; } public String getSourceName() { return this.getTokenStream().getSourceName(); } public TokenStream getTokenStream() { return this.tokens; } public void setTokenStream(TokenStream var1) { this.tokens = var1; } public TreeAdaptor getTreeAdaptor() { return this.adaptor; } public void setTreeAdaptor(TreeAdaptor var1) { this.adaptor = var1; } public int LA(int var1) { return this.adaptor.getType(this.LT(var1)); } public void push(int var1) { if(this.calls == null) { this.calls = new IntArray(); } this.calls.push(this.p); this.seek(var1); } public int pop() { int var1 = this.calls.pop(); this.seek(var1); return var1; } public void replaceChildren(Object var1, int var2, int var3, Object var4) { if(var1 != null) { this.adaptor.replaceChildren(var1, var2, var3, var4); } } public String toString(Object var1, Object var2) { return "n/a"; } public String toTokenTypeString() { this.reset(); StringBuffer var1 = new StringBuffer(); Object var2 = this.LT(1); for(int var3 = this.adaptor.getType(var2); var3 != -1; var3 = this.adaptor.getType(var2)) { var1.append(" "); var1.append(var3); this.consume(); var2 = this.LT(1); } return var1.toString(); } }