|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectTreeNode
ListNode
Base class for lists of AST elements.
(See TreeNode for a discussion of AST nodes in general)
List phyla have a distinct set of operations for constructing and
accessing lists. For each phylum named X there is a phylum
called Xs (except for Classes
, which is a list
of Class_
nodes) of type List[X]
.
An empty list is created with new Xs(lineno)
. Elements
may be appended to the list using either addElement()
or appendElement()
. appendElement
returns
the list itself, so calls to it may be chained, as in
list.appendElement(Foo).appendElement(Bar).appendElement(Baz)
.
You can use java.util.Enumeration
to iterate through
lists. If you are not familiar with that interface, look it up in
the Java API documentation. Here's an example of iterating through
a list:
for (Enumeration e = list.getElements(); e.hasMoreElements(); ) { Object n = e.nextElement(); ... do something with n ... }Alternatively, it is possible to iterate using an integer index:
for (int i = 0; i < list.getLength(); i++) { ... do something with list.getNth(i) ... }Note:
nextElement()
returns the value of type
Object
and getNth()
returns the value of
type TreeNode
. You will most likely need to cast it to
the type appropriate for the list element. This is one of the
very few cases where casting is actually necessary and
appropriate.
Field Summary | |
private java.util.Vector |
elements
|
protected int |
lineNumber
line in the source file from which this node came. |
Constructor Summary | |
protected |
ListNode(int lineNumber)
Builds a new list node |
protected |
ListNode(int lineNumber,
java.util.Vector elements)
|
Method Summary | |
void |
addElement(TreeNode node)
Appends an element to the list. |
protected AbstractSymbol |
copy_AbstractSymbol(AbstractSymbol sym)
Copies an AbstractSymbol value. |
protected java.lang.Boolean |
copy_Boolean(java.lang.Boolean b)
Copies a boolean value. |
abstract TreeNode |
copy()
Creates a copy of this node. |
protected java.util.Vector |
copyElements()
Creates a deep copy of this list. |
protected void |
dump_AbstractSymbol(java.io.PrintStream out,
int n,
AbstractSymbol sym)
Dumps a printable representation of an AbstactSymbol value. |
protected void |
dump_Boolean(java.io.PrintStream out,
int n,
java.lang.Boolean b)
Dumps a printable representation of a boolean value. |
protected void |
dump_line(java.io.PrintStream out,
int n)
Dumps a printable representation of current line number This method is used internally by the generated AST classes |
void |
dump(java.io.PrintStream out,
int n)
Pretty-prints this list to this output stream. |
abstract java.lang.Class |
getElementClass()
Returns the class of list elements. |
java.util.Enumeration |
getElements()
Retreives the elements of the list as Enumeration. |
int |
getLength()
Retreives the length of the list. |
int |
getLineNumber()
Retreives the line number from which this node came. |
TreeNode |
getNth(int n)
Retreives nth element of the list. |
TreeNode |
set(TreeNode other)
Sets the values of this node object to the values of a given node. |
java.lang.String |
toString()
Returns a string representation of this list. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private java.util.Vector elements
protected int lineNumber
Constructor Detail |
protected ListNode(int lineNumber, java.util.Vector elements)
protected ListNode(int lineNumber)
lineNumber
- line in the source file from which this node came.Method Detail |
protected java.util.Vector copyElements()
public abstract java.lang.Class getElementClass()
public TreeNode getNth(int n)
n
- the index of the element
public int getLength()
public java.util.Enumeration getElements()
public void addElement(TreeNode node)
Note: each generated subclass of ListNode also has an
appendElement() method, which calls addElement() and returns the
list of the appropriate type, so that it can be used like this:
l.appendElement(i).appendElement(j).appendElement(k);
public void dump(java.io.PrintStream out, int n)
dump
in class TreeNode
out
- the output streamn
- the number of spaces to indent the outputpublic java.lang.String toString()
public abstract TreeNode copy()
public TreeNode set(TreeNode other)
other
- the other node
public int getLineNumber()
protected java.lang.Boolean copy_Boolean(java.lang.Boolean b)
protected AbstractSymbol copy_AbstractSymbol(AbstractSymbol sym)
protected void dump_Boolean(java.io.PrintStream out, int n, java.lang.Boolean b)
protected void dump_AbstractSymbol(java.io.PrintStream out, int n, AbstractSymbol sym)
protected void dump_line(java.io.PrintStream out, int n)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |