Ast_iterator - Ast_iterator.iterator enables AST inspection using
    open recursion.
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
    .
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.