org.antlr.runtime.tree.RewriteRuleSubtreeStream Class Reference

Inheritance diagram for org.antlr.runtime.tree.RewriteRuleSubtreeStream:

Inheritance graph
[legend]
Collaboration diagram for org.antlr.runtime.tree.RewriteRuleSubtreeStream:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 RewriteRuleSubtreeStream (TreeAdaptor adaptor, String elementDescription)
 RewriteRuleSubtreeStream (TreeAdaptor adaptor, String elementDescription, Object oneElement)
 RewriteRuleSubtreeStream (TreeAdaptor adaptor, String elementDescription, List elements)
Object nextNode ()

Protected Member Functions

Object dup (Object el)


Detailed Description

Definition at line 32 of file RewriteRuleSubtreeStream.java.


Constructor & Destructor Documentation

org.antlr.runtime.tree.RewriteRuleSubtreeStream.RewriteRuleSubtreeStream ( TreeAdaptor  adaptor,
String  elementDescription 
)

Definition at line 34 of file RewriteRuleSubtreeStream.java.

org.antlr.runtime.tree.RewriteRuleSubtreeStream.RewriteRuleSubtreeStream ( TreeAdaptor  adaptor,
String  elementDescription,
Object  oneElement 
)

Create a stream with one element

Definition at line 39 of file RewriteRuleSubtreeStream.java.

org.antlr.runtime.tree.RewriteRuleSubtreeStream.RewriteRuleSubtreeStream ( TreeAdaptor  adaptor,
String  elementDescription,
List  elements 
)

Create a stream, but feed off an existing list

Definition at line 47 of file RewriteRuleSubtreeStream.java.


Member Function Documentation

Object org.antlr.runtime.tree.RewriteRuleSubtreeStream.nextNode (  ) 

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.

Definition at line 67 of file RewriteRuleSubtreeStream.java.

Object org.antlr.runtime.tree.RewriteRuleSubtreeStream.dup ( Object  el  )  [protected, virtual]

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.

Implements org.antlr.runtime.tree.RewriteRuleElementStream.

Definition at line 85 of file RewriteRuleSubtreeStream.java.


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

Generated on Tue Jul 19 11:42:10 2011 for ANTLR API by  doxygen 1.5.5