antlr3.tree.BaseTreeAdaptor Class Reference

A TreeAdaptor that works with any Tree implementation. More...

Inheritance diagram for antlr3.tree.BaseTreeAdaptor:

Inheritance graph
[legend]
Collaboration diagram for antlr3.tree.BaseTreeAdaptor:

Collaboration graph
[legend]

List of all members.

Public Member Functions

def nil
 Return a nil node (an empty but non-null node) that can hold a list of element as the children.
def errorNode
 create tree node that holds the start and stop tokens associated with an error.
def isNil
 Is tree considered a nil node used to make lists of child nodes?
def dupTree
 This is generic in the sense that it will work with any kind of tree (not just Tree interface).
def addChild
 Add a child to the tree t.
def becomeRoot
 If oldRoot is a nil root, just copy or move the children to newRoot.
def rulePostProcessing
 Transform ^(nil x) to x and nil to null.
def createFromToken
 Create a new node derived from a token, with a new token type and (optionally) new text.
def createFromType
 Create a new node derived from a token, with a new token type.
def getType
 For tree parsing, I need to know the token type of a node.
def setType
 Node constructors can set the type of a node.
def getText
def setText
 Node constructors can set the text of a node.
def getChild
 Get a child 0.
def setChild
 Set ith child (0.
def deleteChild
 Remove ith child and shift children down from right.
def getChildCount
 How many children? If 0, then this is a leaf node.
def getUniqueID
 For identifying trees.
def createToken
 Tell me how to create a token for use with imaginary token nodes.


Detailed Description

A TreeAdaptor that works with any Tree implementation.

Definition at line 1029 of file tree.py.


Member Function Documentation

def antlr3.tree.BaseTreeAdaptor.nil (   self  ) 

Return a nil node (an empty but non-null node) that can hold a list of element as the children.

If you want a flat tree (a list) use "t=adaptor.nil(); t.addChild(x); t.addChild(y);"

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1035 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.errorNode (   self,
  input,
  start,
  stop,
  exc 
)

create tree node that holds the start and stop tokens associated with an error.

If you specify your own kind of tree nodes, you will likely have to override this method. CommonTree returns Token.INVALID_TOKEN_TYPE if no token payload but you might have to set token type for diff node type.

You don't have to subclass CommonErrorNode; you will likely need to subclass your own tree node class to avoid class cast exception.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1052 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.isNil (   self,
  tree 
)

Is tree considered a nil node used to make lists of child nodes?

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1057 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.dupTree (   self,
  t,
  parent = None 
)

This is generic in the sense that it will work with any kind of tree (not just Tree interface).

It invokes the adaptor routines not the tree node routines to do the construction.

Definition at line 1067 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.addChild (   self,
  tree,
  child 
)

Add a child to the tree t.

If child is a flat tree (a list), make all in list children of t. Warning: if t has no children, but child does and child isNil then you can decide it is ok to move children to t via t.children = child.children; i.e., without copying the array. Just make sure that this is consistent with have the user will build ASTs.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1098 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.becomeRoot (   self,
  newRoot,
  oldRoot 
)

If oldRoot is a nil root, just copy or move the children to newRoot.

If not a nil root, make oldRoot a child of newRoot.

old=^(nil a b c), new=r yields ^(r a b c) old=^(a b c), new=r yields ^(r ^(a b c))

If newRoot is a nil-rooted single child tree, use the single child as the new root node.

old=^(nil a b c), new=^(nil r) yields ^(r a b c) old=^(a b c), new=^(nil r) yields ^(r ^(a b c))

If oldRoot was null, it's ok, just return newRoot (even if isNil).

old=null, new=r yields r old=null, new=^(nil r) yields ^(nil r)

Return newRoot. Throw an exception if newRoot is not a simple node or nil root with a single child node--it must be a root node. If newRoot is ^(nil x) return x as newRoot.

Be advised that it's ok for newRoot to point at oldRoot's children; i.e., you don't have to copy the list. We are constructing these nodes so we should have this control for efficiency.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1135 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.rulePostProcessing (   self,
  root 
)

Transform ^(nil x) to x and nil to null.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1165 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.createFromToken (   self,
  tokenType,
  fromToken,
  text = None 
)

Create a new node derived from a token, with a new token type and (optionally) new text.

This is invoked from an imaginary node ref on right side of a rewrite rule as IMAG[$tokenLabel] or IMAG[$tokenLabel "IMAG"].

This should invoke createToken(Token).

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1180 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.createFromType (   self,
  tokenType,
  text 
)

Create a new node derived from a token, with a new token type.

This is invoked from an imaginary node ref on right side of a rewrite rule as IMAG["IMAG"].

This should invoke createToken(int,String).

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1193 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.getType (   self,
  t 
)

For tree parsing, I need to know the token type of a node.

Reimplemented from antlr3.tree.TreeAdaptor.

Reimplemented in antlr3.tree.CommonTreeAdaptor.

Definition at line 1202 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.setType (   self,
  t,
  type 
)

Node constructors can set the type of a node.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1206 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.getText (   self,
  t 
)

Reimplemented from antlr3.tree.TreeAdaptor.

Reimplemented in antlr3.tree.CommonTreeAdaptor.

Definition at line 1210 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.setText (   self,
  t,
  text 
)

Node constructors can set the text of a node.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1214 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.getChild (   self,
  t,
  i 
)

Get a child 0.

.n-1 node

Reimplemented from antlr3.tree.TreeAdaptor.

Reimplemented in antlr3.tree.CommonTreeAdaptor.

Definition at line 1218 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.setChild (   self,
  t,
  i,
  child 
)

Set ith child (0.

.n-1) to t; t must be non-null and non-nil node

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1222 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.deleteChild (   self,
  t,
  i 
)

Remove ith child and shift children down from right.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1226 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.getChildCount (   self,
  t 
)

How many children? If 0, then this is a leaf node.

Reimplemented from antlr3.tree.TreeAdaptor.

Reimplemented in antlr3.tree.CommonTreeAdaptor.

Definition at line 1230 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.getUniqueID (   self,
  node 
)

For identifying trees.

How to identify nodes so we can say "add node to a prior node"? Even becomeRoot is an issue. Use System.identityHashCode(node) usually.

Reimplemented from antlr3.tree.TreeAdaptor.

Definition at line 1234 of file tree.py.

def antlr3.tree.BaseTreeAdaptor.createToken (   self,
  fromToken = None,
  tokenType = None,
  text = None 
)

Tell me how to create a token for use with imaginary token nodes.

For example, there is probably no input symbol associated with imaginary token DECL, but you need to create it as a payload or whatever for the DECL node as in ^(DECL type ID).

If you care what the token payload objects' type is, you should override this method and any other createToken variant.

Reimplemented in antlr3.tree.CommonTreeAdaptor.

Definition at line 1248 of file tree.py.


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

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