Skip to content
Snippets Groups Projects
Commit 14d2f1fd authored by erwan's avatar erwan
Browse files

build: git rid of Warning 69

parent 2005e8b8
No related branches found
No related tags found
No related merge requests found
Pipeline #205336 passed
(* Time-stamp: <modified the 29/08/2019 (at 15:24) by Erwan Jahier> *) (* Time-stamp: <modified the 28/11/2024 (at 11:28) by Erwan Jahier> *)
(** (**
Table des infos sources : une couche au dessus de AstV6 pour mieux Table des infos sources : une couche au dessus de AstV6 pour mieux
ranger les packages et les modèles et faciliter la résolution des ranger les packages et les modèles et faciliter la résolution des
identificateurs. identificateurs.
...@@ -42,9 +42,9 @@ let dbg = (Lv6Verbose.get_flag "ast") ...@@ -42,9 +42,9 @@ let dbg = (Lv6Verbose.get_flag "ast")
dans la partie provide ou body. dans la partie provide ou body.
Il contient aussi une table des items exportés pour faciliter le Il contient aussi une table des items exportés pour faciliter le
traitement des "use" du package. C'est une correspondance traitement des "use" du package. C'est une correspondance
nature + nom simple -> nom complet nature + nom simple -> nom complet
(c.a.d. ??? + AstV6.item_ident -> Lv6Id.long) (c.a.d. ??? + AstV6.item_ident -> Lv6Id.long)
*) *)
...@@ -53,7 +53,7 @@ type pack_mng = { ...@@ -53,7 +53,7 @@ type pack_mng = {
(* le lexeme associé au package? *) (* le lexeme associé au package? *)
pm_lxm : Lxm.t; pm_lxm : Lxm.t;
(* le source brut *) (* le source brut *)
pm_raw_src : AstV6.pack_info; (* pm_raw_src : AstV6.pack_info; *)
(* le source expansé *) (* le source expansé *)
pm_actual_src : AstV6.pack_given; pm_actual_src : AstV6.pack_given;
(* table "brute" des items provided *) (* table "brute" des items provided *)
...@@ -83,24 +83,24 @@ type t = { ...@@ -83,24 +83,24 @@ type t = {
st_raw_mod_tab : (Lv6Id.t , model_info srcflagged) Hashtbl.t ; st_raw_mod_tab : (Lv6Id.t , model_info srcflagged) Hashtbl.t ;
st_raw_pack_tab : (Lv6Id.pack_name , pack_info srcflagged) Hashtbl.t ; st_raw_pack_tab : (Lv6Id.pack_name , pack_info srcflagged) Hashtbl.t ;
(* table des managers de packs *) (* table des managers de packs *)
st_pack_mng_tab : (Lv6Id.pack_name , pack_mng) Hashtbl.t; st_pack_mng_tab : (Lv6Id.pack_name , pack_mng) Hashtbl.t;
} }
(* exported *) (* exported *)
let (pack_list:t -> Lv6Id.pack_name list) = let (pack_list:t -> Lv6Id.pack_name list) =
fun this -> fun this ->
Hashtbl.fold (fun n _p l -> n::l) this.st_pack_mng_tab [] Hashtbl.fold (fun n _p l -> n::l) this.st_pack_mng_tab []
(* exported *) (* exported *)
let (pack_body_env: t -> Lv6Id.pack_name -> AstTabSymbol.t) = let (pack_body_env: t -> Lv6Id.pack_name -> AstTabSymbol.t) =
fun this p -> fun this p ->
try try
(Hashtbl.find this.st_pack_mng_tab p).pm_body_stab (Hashtbl.find this.st_pack_mng_tab p).pm_body_stab
with Not_found -> with Not_found ->
print_string ("*** Error: can not find package '" ^ print_string ("*** Error: can not find package '" ^
(Lv6Id.pack_name_to_string p) ^ "' in the following packages: "); (Lv6Id.pack_name_to_string p) ^ "' in the following packages: ");
Hashtbl.iter Hashtbl.iter
(fun pn _pm -> print_string ("\n***\t '"^(Lv6Id.pack_name_to_string pn)^ "'")) (fun pn _pm -> print_string ("\n***\t '"^(Lv6Id.pack_name_to_string pn)^ "'"))
this.st_pack_mng_tab; this.st_pack_mng_tab;
print_string "\n"; print_string "\n";
...@@ -112,30 +112,30 @@ let (pack_body_env: t -> Lv6Id.pack_name -> AstTabSymbol.t) = ...@@ -112,30 +112,30 @@ let (pack_body_env: t -> Lv6Id.pack_name -> AstTabSymbol.t) =
let pack_prov_env (this: t) (p: Lv6Id.pack_name) let pack_prov_env (this: t) (p: Lv6Id.pack_name)
: AstTabSymbol.t option = : AstTabSymbol.t option =
try (Hashtbl.find this.st_pack_mng_tab p).pm_provide_stab try (Hashtbl.find this.st_pack_mng_tab p).pm_provide_stab
with Not_found -> with Not_found ->
(* let msg = *) (* let msg = *)
(* ("\n*** Could not find package " ^(Lv6Id.pack_name_to_string p) ^ *) (* ("\n*** Could not find package " ^(Lv6Id.pack_name_to_string p) ^ *)
(* " in the package table" ) *) (* " in the package table" ) *)
(* in *) (* in *)
None None
(* raise(Compile_error(lxm, msg)) *) (* raise(Compile_error(lxm, msg)) *)
(** Insert an item in the lexeme table. Raise [Compile_error] if already defined. *) (** Insert an item in the lexeme table. Raise [Compile_error] if already defined. *)
let put_in_tab let put_in_tab
(what: string) (what: string)
(tab : ('a, 'b Lxm.srcflagged) Hashtbl.t) (tab : ('a, 'b Lxm.srcflagged) Hashtbl.t)
(key : 'a) (key : 'a)
(value : 'b Lxm.srcflagged) (value : 'b Lxm.srcflagged)
= =
try try
let plxm = (Hashtbl.find tab key).src in let plxm = (Hashtbl.find tab key).src in
let msg = let msg =
Printf.sprintf "%s already declared in %s" what (Lxm.position plxm) Printf.sprintf "%s already declared in %s" what (Lxm.position plxm)
in in
raise (Lv6errors.Compile_error (value.src, msg)) raise (Lv6errors.Compile_error (value.src, msg))
with with
Not_found -> Hashtbl.add tab key value Not_found -> Hashtbl.add tab key value
...@@ -152,14 +152,14 @@ let init_user_items (this: pack_mng) = ( ...@@ -152,14 +152,14 @@ let init_user_items (this: pack_mng) = (
(ConstItem s) (ConstItem s)
(Lxm.flagit (Lv6Id.make_long pname s) xci.src) (Lxm.flagit (Lv6Id.make_long pname s) xci.src)
in in
(* Exportation D'un type_info *) (* Exportation D'un type_info *)
let export_type (s: Lv6Id.t) (xti: AstCore.type_info srcflagged) = let export_type (s: Lv6Id.t) (xti: AstCore.type_info srcflagged) =
( match (xti.it) with ( match (xti.it) with
| EnumType (_, ecl) -> ( | EnumType (_, ecl) -> (
(* Cas particulier des types enums *) (* Cas particulier des types enums *)
(* on exporte les constantes ... *) (* on exporte les constantes ... *)
let treat_enum_const ec = let treat_enum_const ec =
let s = ec.it in let s = ec.it in
let lxm = ec.src in let lxm = ec.src in
Lv6Verbose.printf ~flag:dbg " export enum const %s\n" (Lv6Id.to_string s); Lv6Verbose.printf ~flag:dbg " export enum const %s\n" (Lv6Id.to_string s);
...@@ -170,9 +170,9 @@ let init_user_items (this: pack_mng) = ( ...@@ -170,9 +170,9 @@ let init_user_items (this: pack_mng) = (
List.iter treat_enum_const ecl List.iter treat_enum_const ecl
) )
| ExternalType _ | ExternalType _
| AliasedType _ | AliasedType _
| StructType _ | StructType _
| ArrayType _ | ArrayType _
-> () -> ()
); );
Lv6Verbose.printf ~flag:dbg " export type %s\n" (Lv6Id.to_string s); Lv6Verbose.printf ~flag:dbg " export type %s\n" (Lv6Id.to_string s);
...@@ -182,7 +182,7 @@ let init_user_items (this: pack_mng) = ( ...@@ -182,7 +182,7 @@ let init_user_items (this: pack_mng) = (
in in
(* Exportation D'un node_info *) (* Exportation D'un node_info *)
let export_node (s: Lv6Id.t) (xoi: AstCore.node_info srcflagged) = let export_node (s: Lv6Id.t) (xoi: AstCore.node_info srcflagged) =
Lv6Verbose.printf ~flag:dbg " export node %s\n" (Lv6Id.to_string s); Lv6Verbose.printf ~flag:dbg " export node %s\n" (Lv6Id.to_string s);
put_in_tab "node" this.pm_user_items put_in_tab "node" this.pm_user_items
(NodeItem (s,xoi.it.static_params)) (NodeItem (s,xoi.it.static_params))
...@@ -199,7 +199,7 @@ let init_user_items (this: pack_mng) = ( ...@@ -199,7 +199,7 @@ let init_user_items (this: pack_mng) = (
Hashtbl.iter export_node pg.pg_body.pk_node_table ; Hashtbl.iter export_node pg.pg_body.pk_node_table ;
| Some spflg -> | Some spflg ->
(* On Exporte Les Provides *) (* On Exporte Les Provides *)
let treat_prov x = let treat_prov x =
let lxm = x.src in let lxm = x.src in
let s = Lxm.id lxm in let s = Lxm.id lxm in
match (x.it) with match (x.it) with
...@@ -216,24 +216,24 @@ On pr ...@@ -216,24 +216,24 @@ On pr
pour pouvoir traiter les éventuels "use" des autres pack. pour pouvoir traiter les éventuels "use" des autres pack.
Les tables de symboles sont créées plus tard. Les tables de symboles sont créées plus tard.
*) *)
let create_pack_mng let create_pack_mng
(pdata : AstV6.pack_info srcflagged) (pdata : AstV6.pack_info srcflagged)
(pgiven : AstV6.pack_given) (pgiven : AstV6.pack_given)
= ( = (
(* la table pm_provide_stab n'est créée que si besoin *) (* la table pm_provide_stab n'est créée que si besoin *)
let ppstab = match pgiven.pg_provides with let ppstab = match pgiven.pg_provides with
None -> None None -> None
| Some _ -> Some (AstTabSymbol.create ()) | Some _ -> Some (AstTabSymbol.create ())
in in
let res = let res =
{ {
pm_lxm = pdata.src ; pm_lxm = pdata.src ;
pm_raw_src = pdata.it; (* pm_raw_src = pdata.it; *)
pm_actual_src = pgiven; pm_actual_src = pgiven;
pm_user_items = Hashtbl.create 50; pm_user_items = Hashtbl.create 50;
pm_provide_stab = ppstab; pm_provide_stab = ppstab;
pm_body_stab = AstTabSymbol.create (); pm_body_stab = AstTabSymbol.create ();
} }
in in
init_user_items res; init_user_items res;
res res
...@@ -254,14 +254,14 @@ Se fait en plusieurs passes : ...@@ -254,14 +254,14 @@ Se fait en plusieurs passes :
****************************************************************************) ****************************************************************************)
let rec (create : AstV6.pack_or_model list -> t) = let rec (create : AstV6.pack_or_model list -> t) =
fun sl -> fun sl ->
(* liste + tables des sources bruts *) (* liste + tables des sources bruts *)
let res = { let res = {
st_list = sl ; st_list = sl ;
st_raw_mod_tab = Hashtbl.create 50; st_raw_mod_tab = Hashtbl.create 50;
st_raw_pack_tab = Hashtbl.create 50; st_raw_pack_tab = Hashtbl.create 50;
st_pack_mng_tab = Hashtbl.create 50; st_pack_mng_tab = Hashtbl.create 50;
} }
in in
Lv6Verbose.printf ~flag:dbg "*** AstTab.create pass 1\n"; Lv6Verbose.printf ~flag:dbg "*** AstTab.create pass 1\n";
(* passe 1 *) (* passe 1 *)
...@@ -271,7 +271,7 @@ let rec (create : AstV6.pack_or_model list -> t) = ...@@ -271,7 +271,7 @@ let rec (create : AstV6.pack_or_model list -> t) =
let init_pack_mng pname pdata = ( let init_pack_mng pname pdata = (
Lv6Verbose.printf ~flag:dbg " init pack %s\n" (Lv6Id.pack_name_to_string pname); Lv6Verbose.printf ~flag:dbg " init pack %s\n" (Lv6Id.pack_name_to_string pname);
let pg = AstInstanciateModel.f res.st_raw_mod_tab pdata in let pg = AstInstanciateModel.f res.st_raw_mod_tab pdata in
Hashtbl.add res.st_pack_mng_tab Hashtbl.add res.st_pack_mng_tab
pname pname
(create_pack_mng pdata pg) (create_pack_mng pdata pg)
) in ) in
...@@ -287,14 +287,14 @@ and ...@@ -287,14 +287,14 @@ and
(* init des tables string -> mod ou pack *) (* init des tables string -> mod ou pack *)
init_raw_tabs (this : t) (sl : AstV6.pack_or_model list) = init_raw_tabs (this : t) (sl : AstV6.pack_or_model list) =
(* on itère pour chaque pack_or_model : *) (* on itère pour chaque pack_or_model : *)
let treat_ns ns = let treat_ns ns =
match ns with match ns with
(* cas d'un package *) (* cas d'un package *)
| AstV6.NSPack pi -> | AstV6.NSPack pi ->
let lxm = pi.Lxm.src in let lxm = pi.Lxm.src in
let nme = (Lv6Id.pack_name_of_string (Lxm.str lxm)) in let nme = (Lv6Id.pack_name_of_string (Lxm.str lxm)) in
put_in_tab "package" this.st_raw_pack_tab nme pi put_in_tab "package" this.st_raw_pack_tab nme pi
| AstV6.NSModel mi -> (* cas d'un modele *) | AstV6.NSModel mi -> (* cas d'un modele *)
let lxm = mi.Lxm.src in let lxm = mi.Lxm.src in
let nme = (Lxm.id lxm) in let nme = (Lxm.id lxm) in
...@@ -303,7 +303,7 @@ and ...@@ -303,7 +303,7 @@ and
List.iter treat_ns sl List.iter treat_ns sl
and and
(***** PASSE 3 *****) (***** PASSE 3 *****)
(* Essentiellement le remplissage des champs de pack_mng : (* Essentiellement le remplissage des champs de pack_mng :
pm_provide_stab : AstTabSymbol.t pm_provide_stab : AstTabSymbol.t
table qui permettra de résoudre les refs simples table qui permettra de résoudre les refs simples
...@@ -330,7 +330,7 @@ and ...@@ -330,7 +330,7 @@ and
let treat_uses (px:Lv6Id.pack_name srcflagged) = ( let treat_uses (px:Lv6Id.pack_name srcflagged) = (
let pname = px.it in let pname = px.it in
let lxm = px.src in let lxm = px.src in
let pum = let pum =
try Hashtbl.find this.st_pack_mng_tab pname try Hashtbl.find this.st_pack_mng_tab pname
with Not_found -> raise(Compile_error(lxm, "unknown package")) with Not_found -> raise(Compile_error(lxm, "unknown package"))
in in
...@@ -356,7 +356,7 @@ and ...@@ -356,7 +356,7 @@ and
Some pt -> AstTabSymbol.add_import_node pt n iks.it sparams Some pt -> AstTabSymbol.add_import_node pt n iks.it sparams
| None -> () | None -> ()
) )
) )
in in
Hashtbl.iter fill_used_item pum.pm_user_items Hashtbl.iter fill_used_item pum.pm_user_items
) )
...@@ -370,17 +370,17 @@ and ...@@ -370,17 +370,17 @@ and
Hashtbl.iter (AstTabSymbol.add_node pm.pm_body_stab) pg.pg_body.pk_node_table; Hashtbl.iter (AstTabSymbol.add_node pm.pm_body_stab) pg.pg_body.pk_node_table;
(* ... dans le provide : *) (* ... dans le provide : *)
match pg.pg_provides with match pg.pg_provides with
| None -> () | None -> ()
| Some spflg -> ( | Some spflg -> (
let pptab = match pm.pm_provide_stab with let pptab = match pm.pm_provide_stab with
Some pt -> pt Some pt -> pt
| None -> assert false | None -> assert false
in in
let treat_prov x = let treat_prov x =
let lxm = x.src in let lxm = x.src in
let s = Lxm.id lxm in let s = Lxm.id lxm in
match (x.it) with match (x.it) with
| TypeInfo xti -> AstTabSymbol.add_type pptab pname s (Lxm.flagit xti lxm) | TypeInfo xti -> AstTabSymbol.add_type pptab pname s (Lxm.flagit xti lxm)
| ConstInfo xci -> AstTabSymbol.add_const pptab pname s (Lxm.flagit xci lxm) | ConstInfo xci -> AstTabSymbol.add_const pptab pname s (Lxm.flagit xci lxm)
| NodeInfo xoi -> AstTabSymbol.add_node pptab s (Lxm.flagit xoi lxm) | NodeInfo xoi -> AstTabSymbol.add_node pptab s (Lxm.flagit xoi lxm)
in in
...@@ -399,35 +399,33 @@ Associations : ...@@ -399,35 +399,33 @@ Associations :
(* exported *) (* exported *)
let (dump : t -> unit) = let (dump : t -> unit) =
fun x -> fun x ->
(* let p = Lv6Verbose.print_string ~level:3 in *) (* let p = Lv6Verbose.print_string ~level:3 in *)
let p = prerr_string in let p = prerr_string in
p "*** « Syntax table dump:\n"; p "*** « Syntax table dump:\n";
p " \t - Package or model list:\n\t\t"; p " \t - Package or model list:\n\t\t";
(* st_list : AstV6.pack_or_model list ; *) (* st_list : AstV6.pack_or_model list ; *)
List.iter List.iter
(fun pm -> p (AstV6.pack_or_model_to_string pm); p "\n\t\t") (fun pm -> p (AstV6.pack_or_model_to_string pm); p "\n\t\t")
x.st_list ; x.st_list ;
p "\n\t - Raw model table: "; p "\n\t - Raw model table: ";
(* st_raw_mod_tab : (Lv6Id.t , model_info srcflagged) Hashtbl.t ; *) (* st_raw_mod_tab : (Lv6Id.t , model_info srcflagged) Hashtbl.t ; *)
Hashtbl.iter Hashtbl.iter
(fun id _mi -> p ((Lv6Id.to_string id) ^ " ")) (fun id _mi -> p ((Lv6Id.to_string id) ^ " "))
x.st_raw_mod_tab; x.st_raw_mod_tab;
p "\n\t - Raw Package table: "; p "\n\t - Raw Package table: ";
(* st_raw_pack_tab : (Lv6Id.pack_name , pack_info srcflagged) Hashtbl.t ; *) (* st_raw_pack_tab : (Lv6Id.pack_name , pack_info srcflagged) Hashtbl.t ; *)
Hashtbl.iter Hashtbl.iter
(fun pn _pi -> p ((Lv6Id.pack_name_to_string pn) ^ " ")) (fun pn _pi -> p ((Lv6Id.pack_name_to_string pn) ^ " "))
x.st_raw_pack_tab; x.st_raw_pack_tab;
p "\n\t - Package manager table: "; p "\n\t - Package manager table: ";
(* st_pack_mng_tab : (Lv6Id.pack_name , pack_mng) Hashtbl.t; *) (* st_pack_mng_tab : (Lv6Id.pack_name , pack_mng) Hashtbl.t; *)
Hashtbl.iter Hashtbl.iter
(fun pn _pm -> p ((Lv6Id.pack_name_to_string pn) ^ " ")) (fun pn _pm -> p ((Lv6Id.pack_name_to_string pn) ^ " "))
x.st_pack_mng_tab; x.st_pack_mng_tab;
p "\nEnd of Syntax table dump. »\n"
p "\nEnd of Syntax table dump. »\n"
(** Time-stamp: <modified the 10/10/2024 (at 14:56) by Erwan Jahier> *) (** Time-stamp: <modified the 28/11/2024 (at 11:29) by Erwan Jahier> *)
open Lxm open Lxm
open Lic open Lic
...@@ -8,7 +8,7 @@ let dbg = (Lv6Verbose.get_flag "ei") ...@@ -8,7 +8,7 @@ let dbg = (Lv6Verbose.get_flag "ei")
(* pack useful info into a single struct *) (* pack useful info into a single struct *)
type local_ctx = { type local_ctx = {
node : Lic.node_exp; node : Lic.node_exp;
prg : LicPrg.t; (* prg : LicPrg.t; *)
} }
(********************************************************************************) (********************************************************************************)
...@@ -555,7 +555,7 @@ let (doit : LicPrg.t -> LicPrg.t) = ...@@ -555,7 +555,7 @@ let (doit : LicPrg.t -> LicPrg.t) =
fun nk ne outprg -> fun nk ne outprg ->
let lctx = { let lctx = {
node = ne; node = ne;
prg = inprg; (* prg = inprg; *)
} }
in in
let ne = node lctx ne false in let ne = node lctx ne false in
...@@ -576,7 +576,7 @@ let (doit_boolred : LicPrg.t -> LicPrg.t) = ...@@ -576,7 +576,7 @@ let (doit_boolred : LicPrg.t -> LicPrg.t) =
fun nk ne outprg -> fun nk ne outprg ->
let lctx = { let lctx = {
node = ne; node = ne;
prg = inprg; (* prg = inprg; *)
} }
in in
let ne = node lctx ne true in let ne = node lctx ne true in
......
(** Time-stamp: <modified the 31/10/2024 (at 12:07) by Erwan Jahier> *) (** Time-stamp: <modified the 28/11/2024 (at 11:29) by Erwan Jahier> *)
(* XXX ce module est mal crit. A reprendre. (R1) *) (* XXX ce module est mal crit. A reprendre. (R1) *)
...@@ -20,7 +20,7 @@ exception Undef_soc of Soc.key * Lxm.t * Lic.by_pos_op * Data.t list * Soc.var_e ...@@ -20,7 +20,7 @@ exception Undef_soc of Soc.key * Lxm.t * Lic.by_pos_op * Data.t list * Soc.var_e
(** Informations lies au contexte de traduction. *) (** Informations lies au contexte de traduction. *)
type ctx = { type ctx = {
prg : LicPrg.t; prg : LicPrg.t;
last_temp_var : int; (* last_temp_var : int; *)
last_mem : int; (* to count instances number *) last_mem : int; (* to count instances number *)
last_task : int; (* to count tasks number *) last_task : int; (* to count tasks number *)
locals : Soc.var list; locals : Soc.var list;
...@@ -30,7 +30,7 @@ let create_context: (LicPrg.t -> ctx) = ...@@ -30,7 +30,7 @@ let create_context: (LicPrg.t -> ctx) =
fun prg -> fun prg ->
{ {
prg = prg; prg = prg;
last_temp_var = 0; (* last_temp_var = 0; *)
last_mem = 0; last_mem = 0;
last_task = 0; last_task = 0;
locals = []; locals = [];
......
(* Time-stamp: <modified the 05/11/2024 (at 09:56) by Erwan Jahier> *) (* Time-stamp: <modified the 28/11/2024 (at 11:29) by Erwan Jahier> *)
(* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *) (* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *)
...@@ -54,7 +54,7 @@ let _ = ...@@ -54,7 +54,7 @@ let _ =
(* Soc printer *) (* Soc printer *)
type 'a soc_pp = { type 'a soc_pp = {
hfmt: ('a, unit, string, unit) format4 -> 'a; (* hfmt: ('a, unit, string, unit) format4 -> 'a; *)
cfmt: ('a, unit, string, unit) format4 -> 'a; cfmt: ('a, unit, string, unit) format4 -> 'a;
cput : string -> unit; cput : string -> unit;
hput : string -> unit; hput : string -> unit;
...@@ -327,7 +327,7 @@ let (soc2c : int -> out_channel -> out_channel -> Soc.tbl -> Soc.key -> ...@@ -327,7 +327,7 @@ let (soc2c : int -> out_channel -> out_channel -> Soc.tbl -> Soc.key ->
let cfmt fmt = Printf.ksprintf (fun t -> output_string cfile t) fmt in let cfmt fmt = Printf.ksprintf (fun t -> output_string cfile t) fmt in
let hput str = output_string hfile str in let hput str = output_string hfile str in
let cput str = output_string cfile str in let cput str = output_string cfile str in
let sp = { hfmt = hfmt; cfmt=cfmt; hput = hput; cput = cput; soc = soc } in let sp = { (* hfmt = hfmt; *) cfmt=cfmt; hput = hput; cput = cput; soc = soc } in
(* include the header files that define the step functions used by the soc *) (* include the header files that define the step functions used by the soc *)
if (one_file()) then () else ( if (one_file()) then () else (
let (used_soc:Soc.key list) = KeySet.elements (get_used_soc soc) in let (used_soc:Soc.key list) = KeySet.elements (get_used_soc soc) in
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment