| 188 | } // namespace |
| 189 | |
| 190 | NavigableAst NavigableAst::Build(const Expr& expr) { |
| 191 | cel::TraversalOptions opts; |
| 192 | opts.use_comprehension_callbacks = true; |
| 193 | NavigableExprBuilderVisitor visitor( |
| 194 | []() { return absl::WrapUnique(new NavigableAstNode()); }, |
| 195 | [](NavigableAstNode& node) -> NavigableAstNodeData& { |
| 196 | return node.data_; |
| 197 | }); |
| 198 | AstTraverse(expr, visitor, opts); |
| 199 | return NavigableAst(std::move(visitor).Consume()); |
| 200 | } |
| 201 | |
| 202 | } // namespace cel |