Newer
Older
(** Time-stamp: <modified the 07/02/2008 (at 11:25) by Erwan Jahier> *)
(*----------------------------------------------------------------------
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 :
- 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
Erwan Jahier
committed
=> 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
Erwan Jahier
committed
=> 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
----------------------------------------------------------------------*)
val doit :
Erwan Jahier
committed
(* la table des sources de modeles *)
(Ident.t, SyntaxTree.model_info Lxm.srcflagged) Hashtbl.t ->
Erwan Jahier
committed
(* la def de pack à traiter *)
Erwan Jahier
committed
SyntaxTree.pack_given