polyglot.visit
Class HaltingVisitor

java.lang.Object
  extended by polyglot.visit.NodeVisitor
      extended by polyglot.visit.HaltingVisitor
All Implemented Interfaces:
java.lang.Cloneable, Copy
Direct Known Subclasses:
DeadCodeEliminator.DefUseFinder, ErrorHandlingVisitor, TypeBuilder

public abstract class HaltingVisitor
extends NodeVisitor
implements Copy

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.


Constructor Summary
HaltingVisitor()
           
 
Method Summary
 HaltingVisitor bypass(java.util.Collection c)
           
 HaltingVisitor bypass(Node n)
           
 HaltingVisitor bypassChildren(Node n)
           
 java.lang.Object copy()
           
 Node override(Node parent, Node n)
          Given a tree rooted at n, the visitor has the option of overriding all traversal of the children of n.
 HaltingVisitor visitChildren()
           
 
Methods inherited from class polyglot.visit.NodeVisitor
begin, enter, enter, finish, finish, leave, leave, override, toString, visitEdge
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HaltingVisitor

public HaltingVisitor()
Method Detail

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 final 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.

copy

public java.lang.Object copy()
Specified by:
copy in interface Copy