package ppxlib

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

AST 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#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
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 sexp_of : object ... end
val sexp_of : sexp_of