namespace Invercargill.Expressions { /** * Visitor interface for expression traversal and translation. * * Implement this interface to traverse expression trees for purposes such as: * - SQL translation for ORM functionality * - Expression optimization * - Debugging/logging * - Validation * * All methods have empty default implementations, so visitors only need * to override the methods they care about. */ public interface ExpressionVisitor : Object { /** * Visit a literal expression. */ public virtual void visit_literal(LiteralExpression expr) {} /** * Visit a variable expression. */ public virtual void visit_variable(VariableExpression expr) {} /** * Visit a binary expression. */ public virtual void visit_binary(BinaryExpression expr) {} /** * Visit a unary expression. */ public virtual void visit_unary(UnaryExpression expr) {} /** * Visit a ternary expression. */ public virtual void visit_ternary(TernaryExpression expr) {} /** * Visit a property expression. */ public virtual void visit_property(PropertyExpression expr) {} /** * Visit a function call expression. */ public virtual void visit_function_call(FunctionCallExpression expr) {} /** * Visit a lambda expression. */ public virtual void visit_lambda(LambdaExpression expr) {} /** * Visit a bracketed expression. */ public virtual void visit_bracketed(BracketedExpression expr) {} } }