antlr3.tree.RewriteRuleElementStream Class Reference

Internal helper class. More...

Inheritance diagram for antlr3.tree.RewriteRuleElementStream:

Inheritance graph
[legend]

List of all members.

Public Member Functions

def __init__
def reset
 Reset the condition of this stream so that it appears we have not consumed any of its elements.
def add
def nextTree
 Return the next element in the stream.
def dup
 When constructing trees, sometimes we need to dup a token or AST subtree.
def toTree
 Ensure stream emits trees; tokens must be converted to AST nodes.
def hasNext
def size
def getDescription
 Deprecated.

Public Attributes

 cursor
 singleElement
 elements
 dirty
 elementDescription
 adaptor

Private Member Functions

def _next
 do the work of getting the next element, making sure that it's a tree node or subtree.

Static Private Attributes

 __len__ = size


Detailed Description

Internal helper class.

A generic list of elements tracked in an alternative to be used in a -> rewrite rule. We need to subclass to fill in the next() method, which returns either an AST node wrapped around a token payload or an existing subtree.

Once you start next()ing, do not try to add more elements. It will break the cursor tracking I believe.

See also:
org.antlr.runtime.tree.RewriteRuleSubtreeStream

org.antlr.runtime.tree.RewriteRuleTokenStream

TODO: add mechanism to detect/puke on modification after reading from stream

Definition at line 2550 of file tree.py.


Member Function Documentation

def antlr3.tree.RewriteRuleElementStream.__init__ (   self,
  adaptor,
  elementDescription,
  elements = None 
)

Definition at line 2552 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.reset (   self  ) 

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.

Definition at line 2593 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.add (   self,
  el 
)

Definition at line 2599 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.nextTree (   self  ) 

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).

Definition at line 2626 of file tree.py.

def antlr3.tree.RewriteRuleElementStream._next (   self  )  [private]

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.

Definition at line 2648 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.dup (   self,
  el 
)

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.

Reimplemented in antlr3.tree.RewriteRuleTokenStream, antlr3.tree.RewriteRuleSubtreeStream, and antlr3.tree.RewriteRuleNodeStream.

Definition at line 2678 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.toTree (   self,
  el 
)

Ensure stream emits trees; tokens must be converted to AST nodes.

AST nodes can be passed through unmolested.

Reimplemented in antlr3.tree.RewriteRuleTokenStream, and antlr3.tree.RewriteRuleNodeStream.

Definition at line 2688 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.hasNext (   self  ) 

Definition at line 2693 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.size (   self  ) 

Definition at line 2701 of file tree.py.

def antlr3.tree.RewriteRuleElementStream.getDescription (   self  ) 

Deprecated.

Directly access elementDescription attribute

Definition at line 2715 of file tree.py.


Member Data Documentation

Definition at line 2710 of file tree.py.

Definition at line 2555 of file tree.py.

Definition at line 2558 of file tree.py.

Definition at line 2561 of file tree.py.

Definition at line 2567 of file tree.py.

Definition at line 2572 of file tree.py.

Definition at line 2574 of file tree.py.


The documentation for this class was generated from the following file:

Generated on Mon Nov 29 17:24:30 2010 for ANTLR Python API by  doxygen 1.5.5