Ast_iterator

Section: OCaml library (3o)
Updated: 2023-02-12
Index Return to Main Contents
 

NAME

Ast_iterator - Ast_iterator.iterator enables AST inspection using open recursion.  

Module

Module Ast_iterator  

Documentation

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 .

 

A generic Parsetree iterator

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.


 

Index

NAME
Module
Documentation
A generic Parsetree iterator

This document was created by man2html, using the manual pages.
Time: 09:54:03 GMT, April 20, 2024