Module Mapper

module Mapper: sig .. end

A generic Syntax mapper inspired by OCaml's Ast_mapper



type mapper = {
   unit_ : mapper -> Syntax.unit_ -> Syntax.unit_;
   within : mapper -> Syntax.name option -> Syntax.name option;
   comment : mapper -> Syntax.comment -> Syntax.comment;
   annotation : mapper -> Syntax.modification -> Syntax.modification;
   typedef_options : mapper -> Syntax.typedef_options -> Syntax.typedef_options;
   typedef : mapper -> Syntax.typedef -> Syntax.typedef;
   composition : mapper -> Syntax.composition -> Syntax.composition;
   redeclared_typedef : mapper -> Syntax.typedef -> Syntax.typedef;
   extension : mapper -> Syntax.extension -> Syntax.extension;
   def : mapper -> Syntax.definition -> Syntax.definition;
   redeclared_def : mapper -> Syntax.definition -> Syntax.definition;
   import : mapper -> Syntax.import -> Syntax.import;
   import_desc : mapper -> Syntax.import_desc -> Syntax.import_desc;
   extend : mapper -> Syntax.extend -> Syntax.extend;
   imports : mapper -> Syntax.import list -> Syntax.import list;
   public : mapper -> Syntax.elements -> Syntax.elements;
   protected : mapper -> Syntax.elements -> Syntax.elements;
   cargo : mapper -> Syntax.behavior -> Syntax.behavior;
   constraint_ : mapper -> Syntax.constraint_ -> Syntax.constraint_;
   der_spec : mapper -> Syntax.der_spec -> Syntax.der_spec;
   enum_literal : mapper -> Syntax.enum_literal -> Syntax.enum_literal;
   algorithm : mapper -> Syntax.algorithm -> Syntax.algorithm;
   external_def : mapper -> Syntax.external_def -> Syntax.external_def;
   texp : mapper -> Syntax.texp -> Syntax.texp;
   exp : mapper -> Syntax.exp -> Syntax.exp;
   idx : mapper -> Syntax.idx -> Syntax.idx;
   statement_desc : mapper -> Syntax.statement_desc -> Syntax.statement_desc;
   statement : mapper -> Syntax.statement -> Syntax.statement;
   equation_desc : mapper -> Syntax.equation_desc -> Syntax.equation_desc;
   equation : mapper -> Syntax.equation -> Syntax.equation;
   modification : mapper -> Syntax.modification -> Syntax.modification;
   type_redeclaration : mapper -> Syntax.type_redeclaration -> Syntax.type_redeclaration;
   component_redeclaration : mapper ->
Syntax.component_redeclaration -> Syntax.component_redeclaration
;
   component_modification : mapper ->
Syntax.component_modification -> Syntax.component_modification
;
   component_modification_struct : mapper ->
Syntax.component_modification_struct -> Syntax.component_modification_struct
;
   modification_value : mapper -> Syntax.modification_value -> Syntax.modification_value;
   name : mapper -> Syntax.name -> Syntax.name;
   named_arg : mapper -> Syntax.named_arg -> Syntax.named_arg;
   identifier : mapper -> string -> string;
   comment_str : mapper -> string -> string;
   location : mapper -> Location.t -> Location.t;
}
A mapper record implements one "method" per syntactic category, using an open recursion style: each method takes as its first argument the mapper to be applied to children in the syntax tree.
val (&&&) : ('a -> 'b -> 'c -> 'd) -> ('e -> 'a) -> 'e -> 'b -> 'c -> 'd
combine two generic mappers
val map_list : ('a -> 'b -> 'c) -> 'a -> 'b list -> 'c list
Lift a sub-map function to a map function over lists
val map_option : ('a -> 'b -> 'c) -> 'a -> 'b option -> 'c option
val map_commented : (mapper -> 'a -> 'b) ->
mapper -> 'a Syntax.commented -> 'b Syntax.commented
val map_located : (mapper -> 'a -> 'b) ->
mapper -> 'a Location.loc -> 'b Location.loc
val map_else_conditional : (mapper -> 'a -> 'b) ->
mapper -> 'a Syntax.else_condition -> 'b Syntax.else_condition
val map_conditional : (mapper -> 'a -> 'b) ->
mapper -> 'a Syntax.condition_struct -> 'b Syntax.condition_struct
val map_for_loop : (mapper -> 'a -> 'b) ->
mapper -> 'a Syntax.for_loop_struct -> 'b Syntax.for_loop_struct
val id : 'a -> 'b -> 'b
The identity map function. Does no traversal
module TD: sig .. end
Map for type-definitions
module Unit: sig .. end
module DerSpec: sig .. end
module Name: sig .. end
module Import_Desc: sig .. end
module Import: sig .. end
module Comment: sig .. end
module TRD: sig .. end
module CRD: sig .. end
module CMOD: sig .. end
module CMOD_Struct: sig .. end
module CMOD_Value: sig .. end
module Modification: sig .. end
module Equation_Desc: sig .. end
module Equation: sig .. end
module Idx: sig .. end
module Algorithm: sig .. end
module Statement: sig .. end
module Statement_Desc: sig .. end
module Named_Arg: sig .. end
module Exp: sig .. end
val default_mapper : mapper