package ql.ast.visitor; import ql.ast.expression.Binary; import ql.ast.expression.Identifier; import ql.ast.expression.Unary; import ql.ast.expression.arithmetic.Add; import ql.ast.expression.arithmetic.Divide; import ql.ast.expression.arithmetic.Multiply; import ql.ast.expression.arithmetic.Negation; import ql.ast.expression.arithmetic.Positive; import ql.ast.expression.arithmetic.Subtract; import ql.ast.expression.booleanalgebra.And; import ql.ast.expression.booleanalgebra.Not; import ql.ast.expression.booleanalgebra.Or; import ql.ast.expression.literal.BooleanLiteral; import ql.ast.expression.literal.FloatLiteral; import ql.ast.expression.literal.IntegerLiteral; import ql.ast.expression.literal.MoneyLiteral; import ql.ast.expression.literal.StringLiteral; import ql.ast.expression.relational.Equal; import ql.ast.expression.relational.Greater; import ql.ast.expression.relational.GreaterOrEqual; import ql.ast.expression.relational.Lower; import ql.ast.expression.relational.LowerOrEqual; import ql.ast.expression.relational.NotEqual; public interface ExpressionVisitor<T> { default T visit(Unary unaryNode) { unaryNode.getExpression().accept(this); return null; }; default T visit(Binary binaryNode) { binaryNode.getLeft().accept(this); binaryNode.getRight().accept(this); return null; }; default T visit(Identifier identNode) { return null; } default T visit(BooleanLiteral booleanNode) { return null; } default T visit(FloatLiteral floatNode) { return null; } default T visit(IntegerLiteral intNode) { return null; } default T visit(StringLiteral stringNode) { return null; } default T visit(MoneyLiteral moneyLiteral) { return null; } default T visit(Add addNode) { addNode.getLeft().accept(this); addNode.getRight().accept(this); return null; } default T visit(Divide divNode) { divNode.getLeft().accept(this); divNode.getRight().accept(this); return null; } default T visit(Multiply mulNode) { mulNode.getLeft().accept(this); mulNode.getRight().accept(this); return null; } default T visit(Subtract subNode) { subNode.getLeft().accept(this); subNode.getRight().accept(this); return null; } default T visit(And andNode) { andNode.getLeft().accept(this); andNode.getRight().accept(this); return null; } default T visit(Equal eqNode) { eqNode.getLeft().accept(this); eqNode.getRight().accept(this); return null; } default T visit(GreaterOrEqual geqNode) { geqNode.getLeft().accept(this); geqNode.getRight().accept(this); return null; } default T visit(Greater gtNode) { gtNode.getLeft().accept(this); gtNode.getRight().accept(this); return null; } default T visit(LowerOrEqual leqNode) { leqNode.getLeft().accept(this); leqNode.getRight().accept(this); return null; } default T visit(Lower ltNode) { ltNode.getLeft().accept(this); ltNode.getRight().accept(this); return null; } default T visit(NotEqual neqNode) { neqNode.getLeft().accept(this); neqNode.getRight().accept(this); return null; } default T visit(Or orNode) { orNode.getLeft().accept(this); orNode.getRight().accept(this); return null; } default T visit(Negation negNode) { negNode.getExpression().accept(this); return null; } default T visit(Not notNode) { notNode.getExpression().accept(this); return null; } default T visit(Positive posNode) { posNode.getExpression().accept(this); return null; } }