Ast_iterator(3) OCaml library Ast_iterator(3) NAME Ast_iterator - Ast_iterator.iterator enables AST inspection using open recursion. Module Module Ast_iterator Documentation Module Ast_iterator : sig end Ast_iterator.iterator enables AST inspection using open recursion. A typical mapper would be based on Ast_iterator.default_iterator , a trivial iterator, and will fall back on it for handling the syntax it does not modify. Warning: this module is unstable and part of Compiler_libs . A generic Parsetree iterator type iterator = { attribute : iterator -> Parsetree.attribute -> unit ; attributes : iterator -> Parsetree.attribute list -> unit ; binding_op : iterator -> Parsetree.binding_op -> unit ; case : iterator -> Parsetree.case -> unit ; cases : iterator -> Parsetree.case list -> unit ; class_declaration : iterator -> Parsetree.class_declaration -> unit ; class_description : iterator -> Parsetree.class_description -> unit ; class_expr : iterator -> Parsetree.class_expr -> unit ; class_field : iterator -> Parsetree.class_field -> unit ; class_signature : iterator -> Parsetree.class_signature -> unit ; class_structure : iterator -> Parsetree.class_structure -> unit ; class_type : iterator -> Parsetree.class_type -> unit ; class_type_declaration : iterator -> Parsetree.class_type_declaration -> unit ; class_type_field : iterator -> Parsetree.class_type_field -> unit ; constructor_declaration : iterator -> Parsetree.constructor_declaration -> unit ; expr : iterator -> Parsetree.expression -> unit ; extension : iterator -> Parsetree.extension -> unit ; extension_constructor : iterator -> Parsetree.extension_constructor -> unit ; include_declaration : iterator -> Parsetree.include_declaration -> unit ; include_description : iterator -> Parsetree.include_description -> unit ; label_declaration : iterator -> Parsetree.label_declaration -> unit ; location : iterator -> Location.t -> unit ; module_binding : iterator -> Parsetree.module_binding -> unit ; module_declaration : iterator -> Parsetree.module_declaration -> unit ; module_substitution : iterator -> Parsetree.module_substitution -> unit ; module_expr : iterator -> Parsetree.module_expr -> unit ; module_type : iterator -> Parsetree.module_type -> unit ; module_type_declaration : iterator -> Parsetree.module_type_declaration -> unit ; open_declaration : iterator -> Parsetree.open_declaration -> unit ; open_description : iterator -> Parsetree.open_description -> unit ; pat : iterator -> Parsetree.pattern -> unit ; payload : iterator -> Parsetree.payload -> unit ; signature : iterator -> Parsetree.signature -> unit ; signature_item : iterator -> Parsetree.signature_item -> unit ; structure : iterator -> Parsetree.structure -> unit ; structure_item : iterator -> Parsetree.structure_item -> unit ; typ : iterator -> Parsetree.core_type -> unit ; row_field : iterator -> Parsetree.row_field -> unit ; object_field : iterator -> Parsetree.object_field -> unit ; type_declaration : iterator -> Parsetree.type_declaration -> unit ; type_extension : iterator -> Parsetree.type_extension -> unit ; type_exception : iterator -> Parsetree.type_exception -> unit ; type_kind : iterator -> Parsetree.type_kind -> unit ; value_binding : iterator -> Parsetree.value_binding -> unit ; value_description : iterator -> Parsetree.value_description -> unit ; with_constraint : iterator -> Parsetree.with_constraint -> unit ; } A iterator record implements one "method" per syntactic category, using an open recursion style: each method takes as its first argument the iterator to be applied to children in the syntax tree. val default_iterator : iterator A default iterator, which implements a "do not do anything" mapping. OCamldoc 2024-02-29 Ast_iterator(3)