33 static Result<std::shared_ptr<Expression>>
Visit(std::shared_ptr<Expression> expr);
35 Result<std::shared_ptr<Expression>> AlwaysTrue()
override;
36 Result<std::shared_ptr<Expression>> AlwaysFalse()
override;
37 Result<std::shared_ptr<Expression>>
Not(
38 const std::shared_ptr<Expression>& child_result)
override;
39 Result<std::shared_ptr<Expression>>
And(
40 const std::shared_ptr<Expression>& left_result,
41 const std::shared_ptr<Expression>& right_result)
override;
42 Result<std::shared_ptr<Expression>>
Or(
43 const std::shared_ptr<Expression>& left_result,
44 const std::shared_ptr<Expression>& right_result)
override;
45 Result<std::shared_ptr<Expression>>
Predicate(
46 const std::shared_ptr<BoundPredicate>& pred)
override;
47 Result<std::shared_ptr<Expression>>
Predicate(
48 const std::shared_ptr<UnboundPredicate>& pred)
override;
Result< R > Visit(const std::shared_ptr< Expression > &expr, V &visitor)
Traverse an expression tree with a visitor.
Definition expression_visitor.h:283