package edu.uva.softwarecons.visitor.expression;
import edu.uva.softwarecons.model.expression.arithmetic.AddExpression;
import edu.uva.softwarecons.model.expression.arithmetic.DivExpression;
import edu.uva.softwarecons.model.expression.arithmetic.MulExpression;
import edu.uva.softwarecons.model.expression.arithmetic.SubExpression;
import edu.uva.softwarecons.model.expression.comparison.EqualExpression;
import edu.uva.softwarecons.model.expression.comparison.GreaterEqualExpression;
import edu.uva.softwarecons.model.expression.comparison.GreaterExpression;
import edu.uva.softwarecons.model.expression.comparison.LessEqualExpression;
import edu.uva.softwarecons.model.expression.comparison.LessExpression;
import edu.uva.softwarecons.model.expression.comparison.NotEqualExpression;
import edu.uva.softwarecons.model.expression.literal.IdExpression;
import edu.uva.softwarecons.model.expression.logical.AndExpression;
import edu.uva.softwarecons.model.expression.logical.NotExpression;
import edu.uva.softwarecons.model.expression.logical.OrExpression;
import edu.uva.softwarecons.model.type.Type;
/**
* Falconlabs
*
* @author Santiago Carrillo
* Date: 3/5/14
*/
public interface ExpressionElementVisitor
{
Type visitAddExpression( AddExpression expression );
Type visitDivExpression( DivExpression expression );
Type visitMulExpression( MulExpression expression );
Type visitSubExpression( SubExpression expression );
Type visitAndExpression( AndExpression expression );
Type visitNotExpression( NotExpression expression );
Type visitOrExpression( OrExpression expression );
Type visitEqualExpression( EqualExpression expression );
Type visitGreaterEqualExpression( GreaterEqualExpression expression );
Type visitGreaterExpression( GreaterExpression expression );
Type visitLessEqualExpression( LessEqualExpression expression );
Type visitLessExpression( LessExpression expression );
Type visitNotEqualExpression( NotEqualExpression expression );
Type visitIdExpression( IdExpression expression );
}