polyglot.visit
Class FlattenVisitor
java.lang.Object
polyglot.visit.NodeVisitor
polyglot.visit.FlattenVisitor
public class FlattenVisitor
- extends NodeVisitor
The FlattenVisitor flattens the AST,
Method Summary |
NodeVisitor |
enter(Node n)
When entering a BlockStatement, place a new StatementList
onto the stack |
Node |
leave(Node old,
Node n,
NodeVisitor v)
Flatten complex expressions within the AST |
protected static java.lang.String |
newID()
|
Node |
override(Node n)
Given a tree rooted at n , the visitor has the option of
overriding all traversal of the children of n . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
ts
protected TypeSystem ts
nf
protected NodeFactory nf
stack
protected java.util.LinkedList stack
noFlatten
protected Node noFlatten
FlattenVisitor
public FlattenVisitor(TypeSystem ts,
NodeFactory nf)
override
public Node override(Node n)
- Description copied from class:
NodeVisitor
- Given a tree rooted at
n
, the visitor has the option of
overriding all traversal of the children of n
. If no
changes were made to n
and the visitor wishes to prevent
further traversal of the tree, then it should return n
. If
changes were made to the subtree, then the visitor should return a
copy of n
with appropriate changes. Finally, if the
visitor does not wish to override traversal of the subtree rooted at
n
, then it should return null
.
This method is typically called by the method
override(parent, n)
. If a subclass overrides the
method override(parent, n)
then this method
may not be called.
- Overrides:
override
in class NodeVisitor
- Parameters:
n
- The root of the subtree to be traversed.
- Returns:
- A node if normal traversal is to stop,
null
if it
is to continue.
newID
protected static java.lang.String newID()
enter
public NodeVisitor enter(Node n)
- When entering a BlockStatement, place a new StatementList
onto the stack
- Overrides:
enter
in class NodeVisitor
- Parameters:
n
- The root of the subtree to be traversed.
- Returns:
- The
NodeVisitor
which should be used to visit the
children of n
.
leave
public Node leave(Node old,
Node n,
NodeVisitor v)
- Flatten complex expressions within the AST
- Overrides:
leave
in class NodeVisitor
- Parameters:
old
- The original state of root of the current subtree.n
- The current state of the root of the current subtree.v
- The NodeVisitor
object used to visit the children.
- Returns:
- The final result of the traversal of the tree rooted at
n
.