1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage org.antlr.runtime.tree {
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    /** Queues up nodes matched on left side of -> in a tree parser. This is
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     *  the analog of RewriteRuleTokenStream for normal parsers. 
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver     */
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    public class RewriteRuleNodeStream extends RewriteRuleElementStream {
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public function RewriteRuleNodeStream(adaptor:TreeAdaptor, elementDescription:String, element:Object = null) {
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver            super(adaptor, elementDescription, element);
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        }
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        public function nextNode():Object {
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver		    return _next();
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	}
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	protected override function toTree(el:Object):Object {
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    		return adaptor.dupNode(el);
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	}
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	protected override function dup(el:Object):Object {
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    		// we dup every node, so don't have to worry about calling dup; short-
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    		// circuited next() so it doesn't call.
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    		throw new Error("dup can't be called for a node stream.");
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    	}
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}