Ppxlib.Ast_traverse
This 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#structure
class map : object ... end
class iter : object ... end
class 'acc fold : object ... end
class 'acc fold_map : object ... end
class 'ctx map_with_context : object ... end
class map_with_path : string map_with_context
val enter_value :
(Astlib.Ast_500.Parsetree.expression, string Astlib.Location.loc) Attribute.t
val enter_module :
(Astlib.Ast_500.Parsetree.module_expr, string Astlib.Location.loc)
Attribute.t
val do_not_enter_value_binding :
(Astlib.Ast_500.Parsetree.value_binding, unit) Attribute.t
val do_not_enter_value_description :
(Astlib.Ast_500.Parsetree.value_description, unit) Attribute.t
val do_not_enter_module_binding :
(Astlib.Ast_500.Parsetree.module_binding, unit) Attribute.t
val do_not_enter_module_declaration :
(Astlib.Ast_500.Parsetree.module_declaration, unit) Attribute.t
val do_not_enter_module_type_declaration :
(Astlib.Ast_500.Parsetree.module_type_declaration, unit) Attribute.t
val do_not_enter_let_module :
(Astlib.Ast_500.Parsetree.expression, unit) Attribute.t
class virtual 'res lift : object ... end
class virtual ['ctx, 'res] lift_map_with_context : object ... end
class map_with_expansion_context_and_errors : object ... end
class sexp_of : object ... end
val sexp_of : sexp_of