ExpressionVisitor.vala 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. namespace Invercargill.Expressions {
  2. /**
  3. * Visitor interface for expression traversal and translation.
  4. *
  5. * Implement this interface to traverse expression trees for purposes such as:
  6. * - SQL translation for ORM functionality
  7. * - Expression optimization
  8. * - Debugging/logging
  9. * - Validation
  10. *
  11. * All methods have empty default implementations, so visitors only need
  12. * to override the methods they care about.
  13. */
  14. public interface ExpressionVisitor : Object {
  15. /**
  16. * Visit a literal expression.
  17. */
  18. public virtual void visit_literal(LiteralExpression expr) {}
  19. /**
  20. * Visit a variable expression.
  21. */
  22. public virtual void visit_variable(VariableExpression expr) {}
  23. /**
  24. * Visit a binary expression.
  25. */
  26. public virtual void visit_binary(BinaryExpression expr) {}
  27. /**
  28. * Visit a unary expression.
  29. */
  30. public virtual void visit_unary(UnaryExpression expr) {}
  31. /**
  32. * Visit a ternary expression.
  33. */
  34. public virtual void visit_ternary(TernaryExpression expr) {}
  35. /**
  36. * Visit a property expression.
  37. */
  38. public virtual void visit_property(PropertyExpression expr) {}
  39. /**
  40. * Visit a function call expression.
  41. */
  42. public virtual void visit_function_call(FunctionCallExpression expr) {}
  43. /**
  44. * Visit a lambda expression.
  45. */
  46. public virtual void visit_lambda(LambdaExpression expr) {}
  47. /**
  48. * Visit a bracketed expression.
  49. */
  50. public virtual void visit_bracketed(BracketedExpression expr) {}
  51. }
  52. }