Skip to content
Snippets Groups Projects
expandPack.mli 1.83 KiB
Newer Older
Erwan Jahier's avatar
Erwan Jahier committed
(** Time-stamp: <modified the 07/02/2008 (at 11:25) by Erwan Jahier> *)
Erwan Jahier's avatar
Erwan Jahier committed

(*----------------------------------------------------------------------
MODULE : ExpandPack
------------------------------------------------------------------------
DESCRIPTION :

Une seule fonctionnalité : transformer au niveau "quasi-syntaxique" des
instances de pack du style "package toto = titi(....)" en package "donné",
SI BESOIN.

(i.e. pack_info -> pack_given)

----------------------------------------------------------------------*)

(*----------------------------------------------------------------------
MODULE : ExpandPack
------------------------------------------------------------------------
DESCRIPTION :

Entrée, deux tables d'infos syntaxique :
Erwan Jahier's avatar
Erwan Jahier committed
- une table ptab : (string, SyntaxTree.pack_info srcflagged) Hashtbl.t 
- une table mtab : (string, SyntaxTree.model_info srcflagged) Hashtbl.t 

Sortie, une table d'info de package expansées :
- une table xptab : (string, t) Hashtbl.t

Fonctionnement :
On met en relation les couples (param formel, arg effectif) :

(type t, id/type_exp) : on crée l'alias "type t = id/type_exp",
  qu'on met à la fois dans les export et dans le body
  => LES DÉCLARATIONS DE TYPES SONT EXPORTÉES

(const c : t, id/val_exp) : on crée l'alias "const c : t = id/val_exp",
  qu'on met à la fois dans les export et dans le body
  => LES DÉCLARATIONS DE CONST SONT EXPORTÉES

(node n(..)returns(...), id/node_exp) :
  - on garde le noeud "abstrait" dans export => node n(..)returns(...)
  - on définit l'alias "node n(..)returns(...) = id/node_exp" dans body


Erwan Jahier's avatar
Erwan Jahier committed
----------------------------------------------------------------------*)

val doit : 
Erwan Jahier's avatar
Erwan Jahier committed
  (Ident.t, SyntaxTree.model_info Lxm.srcflagged) Hashtbl.t ->
Erwan Jahier's avatar
Erwan Jahier committed
  (SyntaxTree.pack_info  Lxm.srcflagged) ->
Erwan Jahier's avatar
Erwan Jahier committed