antlr

Class BaseAST

Implemented Interfaces:
AST, Serializable
Known Direct Subclasses:
CommonAST, ParseTree

public abstract class BaseAST
extends Object
implements AST, Serializable

A Child-Sibling Tree. A tree with PLUS at the root and with two children 3 and 4 is structured as: PLUS | 3 -- 4 and can be specified easily in LISP notation as (PLUS 3 4) where every '(' starts a new subtree. These trees are particular useful for translators because of the flexibility of the children lists. They are also very easy to walk automatically, whereas trees with specific children reference fields can't easily be walked automatically. This class contains the basic support for an AST. Most people will create ASTs that are subclasses of BaseAST or of CommonAST.

Field Summary

protected BaseAST
down
protected BaseAST
right

Method Summary

void
addChild(AST node)
Add a node to the end of the child list for this node
static String
decode(String text)
static String
encode(String text)
boolean
equals(AST t)
Is node t equal to this in terms of token type and text?
boolean
equalsList(AST t)
Is t an exact structural and equals() match of this tree.
boolean
equalsListPartial(AST sub)
Is 'sub' a subtree of this list? The siblings of the root are NOT ignored.
boolean
equalsTree(AST t)
Is tree rooted at 'this' equal to 't'? The siblings of 'this' are ignored.
boolean
equalsTreePartial(AST sub)
Is 't' a subtree of the tree rooted at 'this'? The siblings of 'this' are ignored.
ASTEnumeration
findAll(AST target)
Walk the tree looking for all exact subtree matches.
ASTEnumeration
findAllPartial(AST sub)
Walk the tree looking for all subtrees.
int
getColumn()
AST
getFirstChild()
Get the first child of this node; null if not children
int
getLine()
AST
getNextSibling()
Get the next sibling in line after this one
int
getNumberOfChildren()
How many children does this node have?
String
getText()
Get the token text for this node
static String[]
getTokenNames()
Return an array of strings that maps token ID to it's text.
int
getType()
Get the token type for this node
void
initialize(Token t)
void
initialize(AST t)
void
initialize(int t, String txt)
void
removeChildren()
Remove all children
void
setFirstChild(AST c)
Set the first child of a node.
void
setNextSibling(AST n)
Set the next sibling after this one.
void
setText(String text)
Set the token text for this node
void
setType(int ttype)
Set the token type for this node
static void
setVerboseStringConversion(boolean verbose, String[] names)
String
toString()
String
toStringList()
Print out a child-sibling tree in LISP notation
String
toStringTree()
void
xmlSerialize(Writer out)
void
xmlSerializeNode(Writer out)
void
xmlSerializeRootClose(Writer out)
void
xmlSerializeRootOpen(Writer out)

Field Details

down

protected BaseAST down


right

protected BaseAST right

Method Details

addChild

public void addChild(AST node)
Add a node to the end of the child list for this node
Specified by:
addChild in interface AST


decode

public static String decode(String text)


encode

public static String encode(String text)


equals

public boolean equals(AST t)
Is node t equal to this in terms of token type and text?
Specified by:
equals in interface AST


equalsList

public boolean equalsList(AST t)
Is t an exact structural and equals() match of this tree. The 'this' reference is considered the start of a sibling list.
Specified by:
equalsList in interface AST


equalsListPartial

public boolean equalsListPartial(AST sub)
Is 'sub' a subtree of this list? The siblings of the root are NOT ignored.
Specified by:
equalsListPartial in interface AST


equalsTree

public boolean equalsTree(AST t)
Is tree rooted at 'this' equal to 't'? The siblings of 'this' are ignored.
Specified by:
equalsTree in interface AST


equalsTreePartial

public boolean equalsTreePartial(AST sub)
Is 't' a subtree of the tree rooted at 'this'? The siblings of 'this' are ignored.
Specified by:
equalsTreePartial in interface AST


findAll

public ASTEnumeration findAll(AST target)
Walk the tree looking for all exact subtree matches. Return an ASTEnumerator that lets the caller walk the list of subtree roots found herein.
Specified by:
findAll in interface AST


findAllPartial

public ASTEnumeration findAllPartial(AST sub)
Walk the tree looking for all subtrees. Return an ASTEnumerator that lets the caller walk the list of subtree roots found herein.
Specified by:
findAllPartial in interface AST


getColumn

public int getColumn()
Specified by:
getColumn in interface AST

Since:
2.7.3 Need for error handling


getFirstChild

public AST getFirstChild()
Get the first child of this node; null if not children
Specified by:
getFirstChild in interface AST


getLine

public int getLine()
Specified by:
getLine in interface AST

Since:
2.7.3 Need for error handling


getNextSibling

public AST getNextSibling()
Get the next sibling in line after this one
Specified by:
getNextSibling in interface AST


getNumberOfChildren

public int getNumberOfChildren()
How many children does this node have?
Specified by:
getNumberOfChildren in interface AST


getText

public String getText()
Get the token text for this node
Specified by:
getText in interface AST


getTokenNames

public static String[] getTokenNames()
Return an array of strings that maps token ID to it's text. @since 2.7.3


getType

public int getType()
Get the token type for this node
Specified by:
getType in interface AST


initialize

public void initialize(Token t)
Specified by:
initialize in interface AST


initialize

public void initialize(AST t)
Specified by:
initialize in interface AST


initialize

public void initialize(int t,
                       String txt)
Specified by:
initialize in interface AST


removeChildren

public void removeChildren()
Remove all children


setFirstChild

public void setFirstChild(AST c)
Set the first child of a node.
Specified by:
setFirstChild in interface AST


setNextSibling

public void setNextSibling(AST n)
Set the next sibling after this one.
Specified by:
setNextSibling in interface AST


setText

public void setText(String text)
Set the token text for this node
Specified by:
setText in interface AST


setType

public void setType(int ttype)
Set the token type for this node
Specified by:
setType in interface AST


setVerboseStringConversion

public static void setVerboseStringConversion(boolean verbose,
                                              String[] names)


toString

public String toString()
Specified by:
toString in interface AST


toStringList

public String toStringList()
Print out a child-sibling tree in LISP notation
Specified by:
toStringList in interface AST


toStringTree

public String toStringTree()
Specified by:
toStringTree in interface AST


xmlSerialize

public void xmlSerialize(Writer out)
            throws IOException


xmlSerializeNode

public void xmlSerializeNode(Writer out)
            throws IOException


xmlSerializeRootClose

public void xmlSerializeRootClose(Writer out)
            throws IOException


xmlSerializeRootOpen

public void xmlSerializeRootOpen(Writer out)
            throws IOException