forge.program
Class ExpressionVisitor<T>

java.lang.Object
  extended by forge.program.ExpressionVisitor<T>
Direct Known Subclasses:
ExpressionDefaulter, ExpressionDescender, ExpressionReplacer

public abstract class ExpressionVisitor<T>
extends java.lang.Object

A visitor to a Forge expression.

Author:
Greg Dennis (gdennis@mit.edu)

Constructor Summary
protected ExpressionVisitor()
           
protected ExpressionVisitor(ExpressionVisitor<T> visitor)
           
 
Method Summary
protected  T getCache(ForgeExpression expr)
           
protected  boolean isCached(ForgeExpression expr)
           
protected  void putCache(ForgeExpression expr, T result)
           
protected abstract  T visit(BinaryExpression expr)
          Visits a BinaryExpression.
protected abstract  T visit(ConditionalExpression expr)
          Visits a ConditionalExpression.
protected abstract  T visit(ForgeLiteral expr)
          Visits a ForgeConstant.
protected abstract  T visit(ForgeType expr)
          Visits a ForgeType.
protected abstract  T visit(ForgeVariable expr)
          Visits a ForgeVariable.
protected abstract  T visit(OldExpression expr)
          Visits an OldExpression.
protected abstract  T visit(ProjectionExpression expr)
          Visits a ProjectionExpression.
protected abstract  T visit(QuantifyExpression expr)
          Visits a QuantifyExpression.
protected abstract  T visit(UnaryExpression expr)
          Visits a UnaryExpression.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExpressionVisitor

protected ExpressionVisitor()

ExpressionVisitor

protected ExpressionVisitor(ExpressionVisitor<T> visitor)
Method Detail

isCached

protected final boolean isCached(ForgeExpression expr)
Returns:
some this.cache[expr]

putCache

protected final void putCache(ForgeExpression expr,
                              T result)

getCache

protected final T getCache(ForgeExpression expr)
Returns:
this.cache[expr]

visit

protected abstract T visit(ForgeType expr)
Visits a ForgeType.


visit

protected abstract T visit(ForgeLiteral expr)
Visits a ForgeConstant.


visit

protected abstract T visit(ForgeVariable expr)
Visits a ForgeVariable.


visit

protected abstract T visit(UnaryExpression expr)
Visits a UnaryExpression.


visit

protected abstract T visit(BinaryExpression expr)
Visits a BinaryExpression.


visit

protected abstract T visit(ConditionalExpression expr)
Visits a ConditionalExpression.


visit

protected abstract T visit(ProjectionExpression expr)
Visits a ProjectionExpression.


visit

protected abstract T visit(QuantifyExpression expr)
Visits a QuantifyExpression.


visit

protected abstract T visit(OldExpression expr)
Visits an OldExpression.