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#structure
Turn a map
class into an Ast_mapper.mapper
record.
The resulting mapper is "closed", i.e. functions ignore their first argument.