edu.mit.csail.sdg.alloy4compiler.ast
Class VisitQuery<T>

java.lang.Object
  extended by edu.mit.csail.sdg.alloy4compiler.ast.VisitReturn<T>
      extended by edu.mit.csail.sdg.alloy4compiler.ast.VisitQuery<T>

public abstract class VisitQuery<T>
extends VisitReturn<T>

This abstract class implements a Query visitor that walks over an Expr and its subnodes.
As soon as one of the node returns a nonnull value,the nonnull value will be propagated to be the output of this visitor.

This default implementation will return null on all the leaf Expr nodes and thus the final answer will be null.
To implement a particular query, you need to extend this class.


Constructor Summary
VisitQuery()
          Constructs a VisitQuery object.
 
Method Summary
 T visit(ExprBinary x)
          Visits an ExprBinary node (A OP B) by calling accept() on A then B.
 T visit(ExprCall x)
          Visits an ExprCall node F[X1,X2,X3..] by calling accept() on X1, X2, X3...
 T visit(ExprConstant x)
          Visits an ExprConstant node (this default implementation simply returns null)
 T visit(ExprITE x)
          Visits an ExprITE node (C => X else Y) by calling accept() on C, X, then Y.
 T visit(ExprLet x)
          Visits an ExprLet node (let a=x | y) by calling accept() on "a", "x", then "y".
 T visit(ExprList x)
          Visits an ExprList node F[X1,X2,X3..] by calling accept() on X1, X2, X3...
 T visit(ExprQt x)
          Visits an ExprQt node (all a,b,c:X1, d,e,f:X2...
 T visit(ExprUnary x)
          Visits an ExprUnary node (OP X) by calling accept() on X.
 T visit(ExprVar x)
          Visits a ExprVar node (this default implementation simply returns null)
 T visit(Sig.Field x)
          Visits a Field node (this default implementation simply returns null)
 T visit(Sig x)
          Visits a Sig node (this default implementation simply returns null)
 
Methods inherited from class edu.mit.csail.sdg.alloy4compiler.ast.VisitReturn
visit, visit, visit, visitThis
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

VisitQuery

public VisitQuery()
Constructs a VisitQuery object.

Method Detail

visit

public T visit(ExprBinary x)
        throws Err
Visits an ExprBinary node (A OP B) by calling accept() on A then B.

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprList x)
        throws Err
Visits an ExprList node F[X1,X2,X3..] by calling accept() on X1, X2, X3...

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprCall x)
        throws Err
Visits an ExprCall node F[X1,X2,X3..] by calling accept() on X1, X2, X3...

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprConstant x)
        throws Err
Visits an ExprConstant node (this default implementation simply returns null)

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprITE x)
        throws Err
Visits an ExprITE node (C => X else Y) by calling accept() on C, X, then Y.

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprLet x)
        throws Err
Visits an ExprLet node (let a=x | y) by calling accept() on "a", "x", then "y".

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprQt x)
        throws Err
Visits an ExprQt node (all a,b,c:X1, d,e,f:X2... | F) by calling accept() on a,b,c,X1,d,e,f,X2... then on F.

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprUnary x)
        throws Err
Visits an ExprUnary node (OP X) by calling accept() on X.

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(ExprVar x)
        throws Err
Visits a ExprVar node (this default implementation simply returns null)

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(Sig x)
        throws Err
Visits a Sig node (this default implementation simply returns null)

Specified by:
visit in class VisitReturn<T>
Throws:
Err

visit

public T visit(Sig.Field x)
        throws Err
Visits a Field node (this default implementation simply returns null)

Specified by:
visit in class VisitReturn<T>
Throws:
Err