package me.august.lumen.compile.analyze;
import me.august.lumen.compile.parser.ast.expr.*;
// java pls
public interface ExpressionVisitor extends ASTVisitor {
@Override
default void visitExpression(Expression expr) {
if (expr instanceof OwnedExpr)
visitOwnedExpression((OwnedExpr) expr);
if (expr instanceof BinaryExpression)
visitBinaryExpression((BinaryExpression) expr);
if (expr instanceof TerminalExpression)
visitTerminalExpression((TerminalExpression) expr);
if (expr instanceof CastExpr)
visitCastExpression((CastExpr) expr);
else if (expr instanceof StaticMethodCall)
visitStaticMethodCallExpression((StaticMethodCall) expr);
else if (expr instanceof TrueExpr)
visitTrueExpression((TrueExpr) expr);
else if (expr instanceof FalseExpr)
visitFalseExpression((FalseExpr) expr);
else if (expr instanceof NumExpr)
visitNumberExpression((NumExpr) expr);
else if (expr instanceof IdentExpr)
visitIdentExpression((IdentExpr) expr);
else if (expr instanceof NullExpr)
visitNullExpression((NullExpr) expr);
else if (expr instanceof ArrayAccessExpr)
visitArrayAccessExpression((ArrayAccessExpr) expr);
else if (expr instanceof StaticField)
visitStaticFieldExpression((StaticField) expr);
else if (expr instanceof NotExpr)
visitNotExpression((NotExpr) expr);
else if (expr instanceof ConstructorCallExpr)
visitConstructorExpression((ConstructorCallExpr) expr);
else if (expr instanceof MethodCallExpr)
visitMethodCallExpression((MethodCallExpr) expr);
else if (expr instanceof AndExpr)
visitAndExpression((AndExpr) expr);
else if (expr instanceof EqExpr)
visitEqExpression((EqExpr) expr);
else if (expr instanceof OrExpr)
visitOrExpression((OrExpr) expr);
else if (expr instanceof AssignmentExpr)
visitAssignmentExpression((AssignmentExpr) expr);
else if (expr instanceof RangeExpr)
visitRangeExpression((RangeExpr) expr);
else if (expr instanceof ShiftExpr)
visitShiftExpression((ShiftExpr) expr);
else if (expr instanceof AddExpr)
visitAddExpression((AddExpr) expr);
else if (expr instanceof RelExpr)
visitRelExpression((RelExpr) expr);
else if (expr instanceof BitXorExpr)
visitBitXorExpression((BitXorExpr) expr);
else if (expr instanceof BitOrExpr)
visitBitOrExpression((BitOrExpr) expr);
else if (expr instanceof MultExpr)
visitMultExpression((MultExpr) expr);
else if (expr instanceof BitAndExpr)
visitBitAndExpression((BitAndExpr) expr);
else if (expr instanceof ArrayInitializerExpr)
visitArrayInitializerExpression((ArrayInitializerExpr) expr);
else if (expr instanceof IncrementExpr)
visitIncrementExpression((IncrementExpr) expr);
else if (expr instanceof RescueExpr)
visitRescueExpression((RescueExpr) expr);
else if (expr instanceof TernaryExpr)
visitTernaryExpression((TernaryExpr) expr);
else if (expr instanceof BitwiseComplementExpr)
visitBitwiseComplementExpression((BitwiseComplementExpr) expr);
else if (expr instanceof UnaryMinusExpr)
visitUnaryMinusExpression((UnaryMinusExpr) expr);
}
default void visitCastExpression(CastExpr expr) {}
default void visitStaticMethodCallExpression(StaticMethodCall expr) {}
default void visitTrueExpression(TrueExpr expr) {}
default void visitFalseExpression(FalseExpr expr) {}
default void visitNumberExpression(NumExpr expr) {}
default void visitIdentExpression(IdentExpr expr) {}
default void visitNullExpression(NullExpr expr) {}
default void visitArrayAccessExpression(ArrayAccessExpr expr) {}
default void visitStaticFieldExpression(StaticField expr) {}
default void visitOwnedExpression(OwnedExpr expr) {}
default void visitNotExpression(NotExpr expr) {}
default void visitConstructorExpression(ConstructorCallExpr expr) {}
default void visitMethodCallExpression(MethodCallExpr expr) {}
default void visitBinaryExpression(BinaryExpression expr) {}
default void visitAndExpression(AndExpr expr) {}
default void visitEqExpression(EqExpr expr) {}
default void visitOrExpression(OrExpr expr) {}
default void visitAssignmentExpression(AssignmentExpr expr) {}
default void visitRangeExpression(RangeExpr expr) {}
default void visitShiftExpression(ShiftExpr expr) {}
default void visitAddExpression(AddExpr expr) {}
default void visitRelExpression(RelExpr expr) {}
default void visitBitXorExpression(BitXorExpr expr) {}
default void visitBitOrExpression(BitOrExpr expr) {}
default void visitMultExpression(MultExpr expr) {}
default void visitBitAndExpression(BitAndExpr expr) {}
default void visitArrayInitializerExpression(ArrayInitializerExpr expr) {}
default void visitIncrementExpression(IncrementExpr expr) {}
default void visitRescueExpression(RescueExpr expr) {}
default void visitTernaryExpression(TernaryExpr expr) {}
default void visitBitwiseComplementExpression(BitwiseComplementExpr expr) {}
default void visitUnaryMinusExpression(UnaryMinusExpr expr) {}
default void visitTerminalExpression(TerminalExpression expr) {}
}