Packageorg.antlr.runtime.tree
Classpublic class RewriteRuleSubtreeStream
InheritanceRewriteRuleSubtreeStream Inheritance RewriteRuleElementStream



Public Properties
 PropertyDefined by
 Inheriteddescription : String
RewriteRuleElementStream
 InheritedhasNext : Boolean
RewriteRuleElementStream
 Inheritedsize : int
RewriteRuleElementStream
Protected Properties
 PropertyDefined by
 Inheritedadaptor : TreeAdaptor
RewriteRuleElementStream
 Inheritedcursor : int = 0
Cursor 0..n-1.
RewriteRuleElementStream
 Inheriteddirty : Boolean = false
Once a node / subtree has been used in a stream, it must be dup'd from then on.
RewriteRuleElementStream
 InheritedelementDescription : String
The element or stream description; usually has name of the token or rule reference that this list tracks.
RewriteRuleElementStream
 Inheritedelements : Array
The list of tokens or subtrees we are tracking
RewriteRuleElementStream
 InheritedsingleElement : Object
Track single elements w/o creating a list.
RewriteRuleElementStream
Public Methods
 MethodDefined by
  
RewriteRuleSubtreeStream(adaptor:TreeAdaptor, elementDescription:String, element:Object = null)
RewriteRuleSubtreeStream
 Inherited
add(el:Object):void
RewriteRuleElementStream
  
nextNode():Object
Treat next element as a single node even if it's a subtree.
RewriteRuleSubtreeStream
 Inherited
nextTree():Object
Return the next element in the stream.
RewriteRuleElementStream
 Inherited
reset():void
Reset the condition of this stream so that it appears we have not consumed any of its elements.
RewriteRuleElementStream
Protected Methods
 MethodDefined by
 Inherited
_next():Object
do the work of getting the next element, making sure that it's a tree node or subtree.
RewriteRuleElementStream
  
dup(el:Object):Object
RewriteRuleSubtreeStream
 Inherited
toTree(el:Object):Object
Ensure stream emits trees; tokens must be converted to AST nodes.
RewriteRuleElementStream
Constructor detail
RewriteRuleSubtreeStream()constructor
public function RewriteRuleSubtreeStream(adaptor:TreeAdaptor, elementDescription:String, element:Object = null)Parameters
adaptor:TreeAdaptor
 
elementDescription:String
 
element:Object (default = null)
Method detail
dup()method
protected override function dup(el:Object):ObjectParameters
el:Object

Returns
Object
nextNode()method 
public function nextNode():Object

Treat next element as a single node even if it's a subtree. This is used instead of next() when the result has to be a tree root node. Also prevents us from duplicating recently-added children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration must dup the type node, but ID has been added. Referencing a rule result twice is ok; dup entire tree as we can't be adding trees as root; e.g., expr expr. Hideous code duplication here with super.next(). Can't think of a proper way to refactor. This needs to always call dup node and super.next() doesn't know which to call: dup node or dup tree.

Returns
Object