(** Time-stamp: <modified the 18/12/2007 (at 11:10) by Erwan Jahier> *) (*---------------------------------------------------------------------- module : Compile date : ------------------------------------------------------------------------ DESCRIPTION : Le top du compilateur _ init_appli : initialisation de l'appli (links dynamiques enre les modules caml, n�cessaires � cause des d�pendences cycliques) - test_check : test du check statique du packbody - compile : compilation standard ----------------------------------------------------------------------*) open Lxm open Errors open SyntaxTree (*--------------------------------------------------------------------- init_appli ---------------------------------------------------------------------*) (* let init_appli () = ( *) (* CheckExp.call_check_node_key := CheckNode.check_node_key *) (* ) *) let rec first_pack_in = ( function | (NSPack pi)::_ -> pi.it.pa_name | _::tail -> first_pack_in tail | [] -> raise (Global_error "No package has been provided") ) let doit (srclist : SyntaxTree.pack_or_model list) (mnode : Ident.idref) = ( (* init de la table source *) let srctab = SyntaxTab.create srclist in SyntaxTab.dump srctab; (* le pack par d�faut est le premier de la liste ... *) Ident.set_dft_pack_name (first_pack_in srclist); (* la cl�e "absolue" du main node (pas d'args statiques) *) let mnode_key = CompileData.make_simple_node_key (Ident.long_of_idref mnode) in Verbose.put "-- MAIN NODE: \"%s\"\n" (CompileData.string_of_node_key mnode_key); (* Pour chaque package, on a un solveur de r�f�rences globales, pour les types, const et oper : - les r�f�rences point�es (p::n) sont recherch�es directement dans la srctab puisqu'il n'y a pas d'ambiguit� - les r�f�rences simple sont recherch�es : . dans le pack lui-m�me . dans un des packs d�clar�s "uses", avec priorit� dans l'ordre *) let lzcomp = LazyCompiler.create srctab in (* let res = LazyCompiler.do_node lzcomp mnode_key in *) LazyCompiler.test_types lzcomp ; (* XXX : a virer *) () )