polyglot.visit
Class AmbiguityRemover
java.lang.Object
polyglot.visit.NodeVisitor
polyglot.visit.HaltingVisitor
polyglot.visit.ErrorHandlingVisitor
polyglot.visit.ContextVisitor
polyglot.visit.DisambiguationDriver
polyglot.visit.AmbiguityRemover
- All Implemented Interfaces:
- java.lang.Cloneable, Copy
- Direct Known Subclasses:
- Disambiguator
public class AmbiguityRemover
- extends DisambiguationDriver
A visitor which traverses the AST and remove ambiguities found in fields,
method signatures and the code itself.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
AmbiguityRemover
public AmbiguityRemover(Job job,
TypeSystem ts,
NodeFactory nf)
AmbiguityRemover
public AmbiguityRemover(Job job,
TypeSystem ts,
NodeFactory nf,
boolean visitSigs,
boolean visitBodies)
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 HaltingVisitor
- 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.
enterCall
protected NodeVisitor enterCall(Node n)
throws SemanticException
- Overrides:
enterCall
in class ErrorHandlingVisitor
- Throws:
SemanticException
leaveCall
protected Node leaveCall(Node old,
Node n,
NodeVisitor v)
throws SemanticException
- Overrides:
leaveCall
in class ErrorHandlingVisitor
- Throws:
SemanticException
bypass
public HaltingVisitor bypass(java.util.Collection c)
- Overrides:
bypass
in class HaltingVisitor
bypass
public HaltingVisitor bypass(Node n)
- Overrides:
bypass
in class HaltingVisitor
bypassChildren
public HaltingVisitor bypassChildren(Node n)
- Overrides:
bypassChildren
in class HaltingVisitor
isASTDisambiguated
public boolean isASTDisambiguated(Node n)
astAmbiguityCount
public static int astAmbiguityCount(Node n)