open Algo let rec (algo_varT: Algo.varT -> string) = function | It -> "int" | Ft -> "float" | Bt -> "bool" | Et i -> Printf.sprintf "enum(%d)" i | Nt -> "Neighbor" | St -> "string" | At(t,i) -> Printf.sprintf "%s[%d]" (algo_varT t) i let (algo_vars : Algo.vars -> string) = fun vars -> String.concat "," (List.map (fun (n,t) -> Printf.sprintf "%s:%s" n (algo_varT t)) vars) open Topology let (topology_neighbor :Topology.neighbor -> string) = fun n -> Printf.sprintf "%s (%s)" n.n_id (algo_vars n.n_vars) open Process let (env: Env.t -> Process.t list -> string) = fun env pl -> let ll = List.map (fun p -> List.map (fun (n,_) -> Printf.sprintf "%s.%s->%s" p.pid n (Algo.value_to_string (Env.get env p.pid n))) p.variables) pl in String.concat ", " (List.flatten ll) let (env_rif: Env.t -> Process.t list -> string) = fun env pl -> let ll = List.map (fun p -> List.map (fun (n,_) -> Printf.sprintf "%s" (Algo.value_to_string (Env.get env p.pid n))) p.variables) pl in String.concat " " (List.flatten ll) let (env_rif_decl: Process.t list -> string) = fun pl -> let ll = List.map (fun p -> List.map (fun (n,vt) -> Algo.vart_to_rif_string vt (Printf.sprintf "%s_%s" p.pid n)) p.variables) pl in let algo_vars = String.concat " " (List.flatten ll) in let actions = List.map (fun p -> List.map (fun a -> Printf.sprintf "\"Enab_%s_%s\":bool" p.pid a) p.actions) pl in let actions_vars = String.concat " " (List.flatten actions) in algo_vars ^ " " ^ actions_vars