Package | org.antlr.runtime.tree |
Class | public class RewriteRuleElementStream |
Subclasses | RewriteRuleNodeStream, RewriteRuleSubtreeStream, RewriteRuleTokenStream |
See also
Property | Defined by | ||
---|---|---|---|
description : String [read-only]
| RewriteRuleElementStream | ||
hasNext : Boolean [read-only]
| RewriteRuleElementStream | ||
size : int [read-only]
| RewriteRuleElementStream |
Property | Defined by | ||
---|---|---|---|
adaptor : TreeAdaptor | RewriteRuleElementStream | ||
cursor : int = 0 Cursor 0..n-1.
| RewriteRuleElementStream | ||
dirty : Boolean = false Once a node / subtree has been used in a stream, it must be dup'd
from then on.
| RewriteRuleElementStream | ||
elementDescription : String The element or stream description; usually has name of the token or
rule reference that this list tracks.
| RewriteRuleElementStream | ||
elements : Array The list of tokens or subtrees we are tracking
| RewriteRuleElementStream | ||
singleElement : Object Track single elements w/o creating a list.
| RewriteRuleElementStream |
Method | Defined by | ||
---|---|---|---|
RewriteRuleElementStream(adaptor:TreeAdaptor, elementDescription:String, element:Object = null)
| RewriteRuleElementStream | ||
add(el:Object):void
| RewriteRuleElementStream | ||
nextTree():Object
Return the next element in the stream.
| RewriteRuleElementStream | ||
reset():void
Reset the condition of this stream so that it appears we have
not consumed any of its elements.
| RewriteRuleElementStream |
Method | Defined by | ||
---|---|---|---|
_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
When constructing trees, sometimes we need to dup a token or AST
subtree.
| RewriteRuleElementStream | ||
toTree(el:Object):Object
Ensure stream emits trees; tokens must be converted to AST nodes.
| RewriteRuleElementStream |
adaptor | property |
protected var adaptor:TreeAdaptor
cursor | property |
protected var cursor:int = 0
Cursor 0..n-1. If singleElement!=null, cursor is 0 until you next(), which bumps it to 1 meaning no more elements.
description | property |
description:String
[read-only]Implementation
public function get description():String
dirty | property |
protected var dirty:Boolean = false
Once a node / subtree has been used in a stream, it must be dup'd from then on. Streams are reset after subrules so that the streams can be reused in future subrules. So, reset must set a dirty bit. If dirty, then next() always returns a dup. I wanted to use "naughty bit" here, but couldn't think of a way to use "naughty".
elementDescription | property |
protected var elementDescription:String
The element or stream description; usually has name of the token or rule reference that this list tracks. Can include rulename too, but the exception would track that info.
elements | property |
protected var elements:Array
The list of tokens or subtrees we are tracking
hasNext | property |
hasNext:Boolean
[read-only]Implementation
public function get hasNext():Boolean
singleElement | property |
protected var singleElement:Object
Track single elements w/o creating a list. Upon 2nd add, alloc list
size | property |
size:int
[read-only]Implementation
public function get size():int
RewriteRuleElementStream | () | constructor |
public function RewriteRuleElementStream(adaptor:TreeAdaptor, elementDescription:String, element:Object = null)
Parameters
adaptor:TreeAdaptor |
|
elementDescription:String |
|
element:Object (default = null )
|
_next | () | method |
protected function _next():Object
do the work of getting the next element, making sure that it's a tree node or subtree. Deal with the optimization of single- element list versus list of size > 1. Throw an exception if the stream is empty or we're out of elements and size>1. protected so you can override in a subclass if necessary.
ReturnsObject |
add | () | method |
public function add(el:Object):void
Parameters
el:Object |
dup | () | method |
protected function dup(el:Object):Object
When constructing trees, sometimes we need to dup a token or AST subtree. Dup'ing a token means just creating another AST node around it. For trees, you must call the adaptor.dupTree() unless the element is for a tree root; then it must be a node dup.
Parametersel:Object |
Object |
nextTree | () | method |
public function nextTree():Object
Return the next element in the stream. If out of elements, throw an exception unless size()==1. If size is 1, then return elements[0]. Return a duplicate node/subtree if stream is out of elements and size==1. If we've already used the element, dup (dirty bit set).
ReturnsObject |
reset | () | method |
public function reset():void
Reset the condition of this stream so that it appears we have not consumed any of its elements. Elements themselves are untouched. Once we reset the stream, any future use will need duplicates. Set the dirty bit.
toTree | () | method |
protected function toTree(el:Object):Object
Ensure stream emits trees; tokens must be converted to AST nodes. AST nodes can be passed through unmolested.
Parametersel:Object |
Object |