polyglot.visit
Class HaltingVisitor
java.lang.Object
polyglot.visit.NodeVisitor
polyglot.visit.HaltingVisitor
- All Implemented Interfaces:
- java.lang.Cloneable, Copy
- Direct Known Subclasses:
- DeadCodeEliminator.DefUseFinder, ErrorHandlingVisitor
public abstract class HaltingVisitor
- extends NodeVisitor
A HaltingVisitor is used to prune the traversal of the AST at a
particular node. Clients can call bypass(Node n)
to
have the visitor skip n and its children when recursing through the AST.
Methods inherited from class polyglot.visit.NodeVisitor |
begin, copy, enter, enter, finish, finish, leave, leave, override, toString, visitEdge, visitEdgeNoOverride |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
bypassParent
protected Node bypassParent
bypass
protected java.util.Collection bypass
HaltingVisitor
public HaltingVisitor()
bypassChildren
public HaltingVisitor bypassChildren(Node n)
visitChildren
public HaltingVisitor visitChildren()
bypass
public HaltingVisitor bypass(Node n)
bypass
public HaltingVisitor bypass(java.util.Collection c)
override
public Node override(Node parent,
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
.
The default implementation of this method is to call
override(n)
, as most subclasses do not need to know
the parent of the node n
.
- Overrides:
override
in class NodeVisitor
- Parameters:
parent
- The parent of n
,
null
if n
has no parent.n
- The root of the subtree to be traversed.
- Returns:
- A node if normal traversal is to stop,
null
if it
is to continue.