(* $Id: spec,v 1.3 2013/12/29 12:33:44 weis Exp $ *)

In file walker_ast.ml:
  * the abstract syntax of an actual walker function for a given type t:
    printing this abstract syntax using Walker_ast_print.print_file gives a
    Caml program that walk values of any given type t, performing some action
    (e.g. printing the value).
  In file walker_ast_print.ml:
    * function print_file that prints the abstract syntax of an actual walker
      function for the type t, giving a Caml program that walk values of type
      t.

In file walker_spec.mli:
  * module type Out, the type of a module that gives a Format.formatter
    value to print the walker program text onto.
  * module type Walk, the type of a module that defines the set of event
    handlers (a set of functions to call when an event occurs) to call when
    walking a Caml type definition abstract syntax tree.

  * module type Action, the type of a module that defines the set of actions
    to perform when some event has been triggered during the walk of a type
    definition abstract syntax tree.

  * functor type Make_walk: Output -> Walk
  * functor type Make_action: Output -> Action

  * module type T: the type of a module that defines a walker, i.e. a
    function that walks a type definition abstract syntax tree.
  * functor type Make: Output -> Make_walk -> Make_action -> T
    given a Format.formater a Make_walk functor and a Make_action functor
    computes a walker function and returns it in a T module.

In file walker.ml:
   * defines a unique functor Make which is a Walker_spec.Make functor.

In file generator_spec.mli:
  * module type Prefix, the type of a module that:
    gives the prefix for generated walker functions names (e.g. print_<type>)
    gives the suffix for generated walker module names (e.g. <File>_print)

  * module type Ast_walker_generator, the type of a module that:
    gives a walker function generator that, given a type definition abstract
    syntax returns a walker for that type definition.

  * functor type Make_ast_walker_generator, the type of a functor that:
    given a Prefix module, return an Ast_walker_generator module.

In file generator.ml:
  * the functor Make: Generator_spec.Make_ast_walker_generator
    with Generator_spec.Make_ast_walker_generator == Prefix -> Ast_walker_generator;
    in other words, given a Prefix module P, the functor application
    Make (P) is an Ast_walker_generator module.

Abstract:
 Generator_spec.Make (Prefix) :


(*
 Local Variables:
  compile-command: "cd ..; make"
  End:
*)
