polyglot.visit
Class AmbiguityRemover

java.lang.Object
  extended by polyglot.visit.NodeVisitor
      extended by polyglot.visit.HaltingVisitor
          extended by polyglot.visit.ErrorHandlingVisitor
              extended by polyglot.visit.ContextVisitor
                  extended by polyglot.visit.DisambiguationDriver
                      extended by 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.


Nested Class Summary
protected static class AmbiguityRemover.AmbChecker
           
 
Field Summary
 
Fields inherited from class polyglot.visit.ContextVisitor
context, outer
 
Fields inherited from class polyglot.visit.ErrorHandlingVisitor
error, job, nf, ts
 
Constructor Summary
AmbiguityRemover(Job job, TypeSystem ts, NodeFactory nf)
           
AmbiguityRemover(Job job, TypeSystem ts, NodeFactory nf, boolean visitSigs, boolean visitBodies)
           
 
Method Summary
static int astAmbiguityCount(Node n)
           
 HaltingVisitor bypass(java.util.Collection c)
           
 HaltingVisitor bypass(Node n)
           
 HaltingVisitor bypassChildren(Node n)
           
protected  NodeVisitor enterCall(Node n)
           
 boolean isASTDisambiguated(Node n)
           
protected  Node leaveCall(Node old, Node n, NodeVisitor v)
           
 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.
 
Methods inherited from class polyglot.visit.ContextVisitor
addDecls, begin, context, context, enter, enterScope, leave, superEnter
 
Methods inherited from class polyglot.visit.ErrorHandlingVisitor
catchErrors, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystem
 
Methods inherited from class polyglot.visit.HaltingVisitor
visitChildren
 
Methods inherited from class polyglot.visit.NodeVisitor
copy, enter, finish, finish, leave, override, toString, visitEdge, visitEdgeNoOverride
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AmbiguityRemover

public AmbiguityRemover(Job job,
                        TypeSystem ts,
                        NodeFactory nf)

AmbiguityRemover

public AmbiguityRemover(Job job,
                        TypeSystem ts,
                        NodeFactory nf,
                        boolean visitSigs,
                        boolean visitBodies)
Method Detail

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)