Ppxlib.Ast_traverseThis module provides AST traversal classes, such as maps, iterations, folds, etc. on the Parsetree types.
For a detailed explanation on this module, refer to the relevant part of the manual.
To use these classes, inherit from them and override the methods corresponding to the types from Parsetree you want to process. For instance to collect all the string constants in a structure:
let string_constants_of =
  object
    inherit [string list] Ast_traverse.fold as super
    method! expression e acc =
      let acc = super#expression e acc in
      match e.pexp_desc with
      | Pexp_constant (Const_string (s, _)) -> s :: acc
      | _ -> acc
    method! pattern p acc =
      let acc = super#pattern p acc in
      match p.ppat_desc with
      | Ppat_constant (Const_string (s, _)) -> s :: acc
      | _ -> acc
  end
let string_constants_of_structure = string_constants_of#structureclass map : object ... endclass iter : object ... endclass 'acc fold : object ... endclass 'acc fold_map : object ... endclass 'ctx map_with_context : object ... endclass map_with_path : string map_with_contextval enter_value : 
  (Astlib.Ast_500.Parsetree.expression, string Astlib.Location.loc) Attribute.tval enter_module : 
  (Astlib.Ast_500.Parsetree.module_expr, string Astlib.Location.loc)
    Attribute.tval do_not_enter_value_binding : 
  (Astlib.Ast_500.Parsetree.value_binding, unit) Attribute.tval do_not_enter_value_description : 
  (Astlib.Ast_500.Parsetree.value_description, unit) Attribute.tval do_not_enter_module_binding : 
  (Astlib.Ast_500.Parsetree.module_binding, unit) Attribute.tval do_not_enter_module_declaration : 
  (Astlib.Ast_500.Parsetree.module_declaration, unit) Attribute.tval do_not_enter_module_type_declaration : 
  (Astlib.Ast_500.Parsetree.module_type_declaration, unit) Attribute.tval do_not_enter_let_module : 
  (Astlib.Ast_500.Parsetree.expression, unit) Attribute.tclass virtual 'res lift : object ... endclass virtual ['ctx, 'res] lift_map_with_context : object ... endclass map_with_expansion_context_and_errors : object ... endclass sexp_of : object ... endval sexp_of : sexp_of