Defined variables module, not fully working
This commit is contained in:
@ -5,7 +5,7 @@ module type C = sig
|
||||
type internalnode = {
|
||||
internalin: internal list;
|
||||
internalout: internal list;
|
||||
internalbetween: internal list list;
|
||||
internalbetween: (internal list * internal list) list;
|
||||
}
|
||||
|
||||
type cfgt = elt Cfg.cfginternal
|
||||
@ -30,7 +30,7 @@ module Make (M: Cfg.PrintableType) (I: Cfg.PrintableType) = struct
|
||||
type internalnode = {
|
||||
internalin: internal list;
|
||||
internalout: internal list;
|
||||
internalbetween: internal list list;
|
||||
internalbetween: (internal list * internal list) list;
|
||||
}
|
||||
|
||||
type cfgt = elt Cfg.cfginternal
|
||||
@ -66,7 +66,19 @@ module Make (M: Cfg.PrintableType) (I: Cfg.PrintableType) = struct
|
||||
in
|
||||
if newt = t then newt else helper newt
|
||||
in
|
||||
helper { t with internalvar = Cfg.NodeMap.map init t.t.content }
|
||||
let content = List.fold_left
|
||||
(fun cfg node -> Cfg.NodeMap.add node {internalin = [];
|
||||
internalout = [];
|
||||
internalbetween = []} cfg)
|
||||
Cfg.NodeMap.empty
|
||||
(Cfg.NodeSet.to_list t.t.nodes)
|
||||
in
|
||||
let content = Cfg.NodeMap.union
|
||||
(fun _ket _empty code -> Some code)
|
||||
content
|
||||
(Cfg.NodeMap.map init t.t.content)
|
||||
in
|
||||
helper { t with internalvar = content }
|
||||
|
||||
|
||||
open Cfg
|
||||
@ -130,7 +142,10 @@ module Make (M: Cfg.PrintableType) (I: Cfg.PrintableType) = struct
|
||||
Printf.fprintf ppf "Internal Output: ";
|
||||
Printf.fprintf ppf "%a\n" I.pplist internalout;
|
||||
Printf.fprintf ppf "Internal Between: ";
|
||||
List.iter (Printf.fprintf ppf "%a;" I.pplist) internalbetween;
|
||||
List.iter (fun (i, o) ->
|
||||
Printf.fprintf ppf "IN: %a;" I.pplist i;
|
||||
Printf.fprintf ppf "OUT: %a;" I.pplist o;) internalbetween;
|
||||
Printf.fprintf ppf "\n";
|
||||
) (NodeMap.to_list c.internalvar);
|
||||
) (NodeMap.to_list c.internalvar);
|
||||
Printf.fprintf ppf "\n";
|
||||
end
|
||||
|
||||
@ -5,7 +5,7 @@ module type C = sig
|
||||
type internalnode = {
|
||||
internalin: internal list;
|
||||
internalout: internal list;
|
||||
internalbetween: internal list list;
|
||||
internalbetween: (internal list * internal list) list;
|
||||
}
|
||||
|
||||
type cfgt = elt Cfg.cfginternal
|
||||
|
||||
Reference in New Issue
Block a user