package org.fugazi.ql.ast.expression;
import org.fugazi.ql.ast.expression.comparison.*;
import org.fugazi.ql.ast.expression.literal.BOOL;
import org.fugazi.ql.ast.expression.literal.ID;
import org.fugazi.ql.ast.expression.literal.INT;
import org.fugazi.ql.ast.expression.literal.STRING;
import org.fugazi.ql.ast.expression.logical.And;
import org.fugazi.ql.ast.expression.logical.Or;
import org.fugazi.ql.ast.expression.numerical.Add;
import org.fugazi.ql.ast.expression.numerical.Div;
import org.fugazi.ql.ast.expression.numerical.Mul;
import org.fugazi.ql.ast.expression.numerical.Sub;
import org.fugazi.ql.ast.expression.unary.Negative;
import org.fugazi.ql.ast.expression.unary.Not;
import org.fugazi.ql.ast.expression.unary.Positive;
public interface IExpressionVisitor<T> {
// Logical
public T visitAnd(And _and);
public T visitOr(Or _less);
// Unary
public T visitNot(Not _not);
public T visitNegative(Negative _negative);
public T visitPositive(Positive _positive);
// Comparison
public T visitEQ(EQ _eq);
public T visitGE(GE _ge);
public T visitGreater(Greater _greater);
public T visitLE(LE _le);
public T visitLesser(Less _less);
public T visitNotEq(NotEq _notEq);
// Numerical
public T visitAdd(Add _add);
public T visitSub(Sub _sub);
public T visitMul(Mul _mul);
public T visitDiv(Div _div);
// Literals
public T visitID(ID _id);
public T visitINT(INT _int);
public T visitSTRING(STRING _string);
public T visitBOOL(BOOL _bool);
}