#include
"share/atspre_define.hats"
#include
"share/atspre_staload.hats"
//
(* ****** ****** *)
staload "./falcon.sats"
(* ****** ****** *)
staload "./falcon_genes.dats"
staload "./falcon_parser.dats"
(* ****** ****** *)
staload
LS = "libats/ATS1/SATS/linset_listord.sats"
staload
_ = "libats/ATS1/DATS/linset_listord.dats"
(* ****** ****** *)
staload
UN = "prelude/SATS/unsafe.sats"
// ...
extern
fun
grexplst_cnfize_except (gxs: grexplst, exceptions: &($LS.set(int))): grcnflst
implement
grexplst_cnfize_except (gxs, exceptions) = let
val gdum = gene_make_name ("dummy")
var gxdum: grexp = GRgene(gdum)
var count: int = 0
//
implement
list_map$fopr<grexp><grcnf> (gx) = let
val n = $UN.ptr0_get<int>(addr@count)
val gxd = $UN.ptr0_get<grexp>(addr@gxdum)
val (pf, fpf | excp) = $UN.ptr0_vtake{$LS.set(int)}(addr@exceptions)
val () = (print(n); print(" "))
val skip = $LS.linset_is_member(!excp, n, lam(x,y) =>
g0int_compare_int(x, y))
prval () = fpf(pf)
val () = $UN.ptr0_set<int>(addr@count, n+1)
in // in of [list_map$fopr]
//
if skip then
(println!("Skipping rule ", n); grexp_cnfize(gxd))
else
(print(n); print(" "); grexp_cnfize(gx))
end // end of [list_map$fopr]
//
val () = print("Starting cnfizing on rule #: ")
in
list_map<grexp><grcnf> (gxs)
end