package nl.uva.se.ql.ast.expression; import nl.uva.se.ql.ast.expression.arithmetical.Addition; import nl.uva.se.ql.ast.expression.arithmetical.Divide; import nl.uva.se.ql.ast.expression.arithmetical.Modulo; import nl.uva.se.ql.ast.expression.arithmetical.Multiply; import nl.uva.se.ql.ast.expression.arithmetical.Negative; import nl.uva.se.ql.ast.expression.arithmetical.Positive; import nl.uva.se.ql.ast.expression.arithmetical.Power; import nl.uva.se.ql.ast.expression.arithmetical.Substraction; import nl.uva.se.ql.ast.expression.literal.BooleanLiteral; import nl.uva.se.ql.ast.expression.literal.DecimalLiteral; import nl.uva.se.ql.ast.expression.literal.IntegerLiteral; import nl.uva.se.ql.ast.expression.literal.StringLiteral; import nl.uva.se.ql.ast.expression.logical.And; import nl.uva.se.ql.ast.expression.logical.Equal; import nl.uva.se.ql.ast.expression.logical.GreaterOrEqual; import nl.uva.se.ql.ast.expression.logical.GreaterThen; import nl.uva.se.ql.ast.expression.logical.LessOrEqual; import nl.uva.se.ql.ast.expression.logical.LessThen; import nl.uva.se.ql.ast.expression.logical.Not; import nl.uva.se.ql.ast.expression.logical.NotEqual; import nl.uva.se.ql.ast.expression.logical.Or; import nl.uva.se.ql.ast.expression.variable.Reference; public interface ExpressionVisitor<T> { // Arithmetical Expressions public T visit(Addition plus); public T visit(Divide divide); public T visit(Power power); public T visit(Multiply multiply); public T visit(Modulo modulo); public T visit(Negative negative); public T visit(Positive positive); public T visit(Substraction minus); // Logical Expressions public T visit(Not not); public T visit(NotEqual notEqual); public T visit(Or or); public T visit(LessThen lessThen); public T visit(LessOrEqual lessOrEqual); public T visit(GreaterThen greaterThen); public T visit(GreaterOrEqual greaterOrEqual); public T visit(Equal equal); public T visit(And and); // Literals public T visit(BooleanLiteral booleanLiteral); public T visit(DecimalLiteral decimalLiteral); public T visit(IntegerLiteral integerLiteral); public T visit(StringLiteral stringLiteral); public T visit(Reference reference); }