Defined variables module, not fully working

This commit is contained in:
elvis
2024-12-16 05:15:33 +01:00
parent 590123d988
commit 25f9f12525
12 changed files with 435 additions and 50 deletions

View File

@ -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

View File

@ -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