Module
Ast_iterator
:
sig end
Ast_iterator.iterator enables AST inspection using open recursion. A typical mapper would be based on Ast_iterator.default_iterator , a trivial iterator, and will fall back on it for handling the syntax it does not modify.
Warning: this module is unstable and part of Compiler_libs .
type iterator
= {
attribute :
iterator -> Parsetree.attribute -> unit
;
attributes :
iterator -> Parsetree.attribute list -> unit
;
binding_op :
iterator -> Parsetree.binding_op -> unit
;
case :
iterator -> Parsetree.case -> unit
;
cases :
iterator -> Parsetree.case list -> unit
;
class_declaration :
iterator -> Parsetree.class_declaration -> unit
;
class_description :
iterator -> Parsetree.class_description -> unit
;
class_expr :
iterator -> Parsetree.class_expr -> unit
;
class_field :
iterator -> Parsetree.class_field -> unit
;
class_signature :
iterator -> Parsetree.class_signature -> unit
;
class_structure :
iterator -> Parsetree.class_structure -> unit
;
class_type :
iterator -> Parsetree.class_type -> unit
;
class_type_declaration :
iterator -> Parsetree.class_type_declaration -> unit
;
class_type_field :
iterator -> Parsetree.class_type_field -> unit
;
constructor_declaration :
iterator -> Parsetree.constructor_declaration -> unit
;
expr :
iterator -> Parsetree.expression -> unit
;
extension :
iterator -> Parsetree.extension -> unit
;
extension_constructor :
iterator -> Parsetree.extension_constructor -> unit
;
include_declaration :
iterator -> Parsetree.include_declaration -> unit
;
include_description :
iterator -> Parsetree.include_description -> unit
;
label_declaration :
iterator -> Parsetree.label_declaration -> unit
;
location :
iterator -> Location.t -> unit
;
module_binding :
iterator -> Parsetree.module_binding -> unit
;
module_declaration :
iterator -> Parsetree.module_declaration -> unit
;
module_substitution :
iterator -> Parsetree.module_substitution -> unit
;
module_expr :
iterator -> Parsetree.module_expr -> unit
;
module_type :
iterator -> Parsetree.module_type -> unit
;
module_type_declaration :
iterator -> Parsetree.module_type_declaration -> unit
;
open_declaration :
iterator -> Parsetree.open_declaration -> unit
;
open_description :
iterator -> Parsetree.open_description -> unit
;
pat :
iterator -> Parsetree.pattern -> unit
;
payload :
iterator -> Parsetree.payload -> unit
;
signature :
iterator -> Parsetree.signature -> unit
;
signature_item :
iterator -> Parsetree.signature_item -> unit
;
structure :
iterator -> Parsetree.structure -> unit
;
structure_item :
iterator -> Parsetree.structure_item -> unit
;
typ :
iterator -> Parsetree.core_type -> unit
;
row_field :
iterator -> Parsetree.row_field -> unit
;
object_field :
iterator -> Parsetree.object_field -> unit
;
type_declaration :
iterator -> Parsetree.type_declaration -> unit
;
type_extension :
iterator -> Parsetree.type_extension -> unit
;
type_exception :
iterator -> Parsetree.type_exception -> unit
;
type_kind :
iterator -> Parsetree.type_kind -> unit
;
value_binding :
iterator -> Parsetree.value_binding -> unit
;
value_description :
iterator -> Parsetree.value_description -> unit
;
with_constraint :
iterator -> Parsetree.with_constraint -> unit
;
}
A iterator record implements one "method" per syntactic category, using an open recursion style: each method takes as its first argument the iterator to be applied to children in the syntax tree.
val default_iterator : iterator
A default iterator, which implements a "do not do anything" mapping.