Ppxlib.Ast_traverseAST traversal classes
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_contextclass virtual 'res lift : object ... endclass  sexp_of : object ... endval sexp_of : sexp_of