X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fasta.ml;h=8b9682cfdd6ea2d63952a8f2f0aa07f3d77e725b;hp=670bb3515055b750ae46af51af671fd809b6aed4;hb=e80e269c313952b4d427fa6a5a9729ea15e43f39;hpb=5a9c2accf1b54294cd71b90ca5cca5f69ac8e76e diff --git a/src/asta.ml b/src/asta.ml index 670bb35..8b9682c 100644 --- a/src/asta.ml +++ b/src/asta.ml @@ -35,7 +35,7 @@ struct let print fmt (st,la,f) = Format.fprintf fmt "(%a,%s,%a)" State.print st - "TODO la" + (QNameSet.to_string la) Formula.print f end @@ -44,6 +44,8 @@ struct include Set.Make(Transition) end +type transition = Transition.t + type t = { mutable reco : StateSet.t; mutable selec : StateSet.t; @@ -71,7 +73,7 @@ let transitions asta st = | (a,s,l) :: tl -> (s,l) :: (remove_states tl) in remove_states (SetT.elements (SetT.filter filter asta.trans)) -let dummy = { +let empty = { reco = StateSet.empty; selec = StateSet.empty; bottom = StateSet.empty; @@ -79,6 +81,21 @@ let dummy = { trans = SetT.empty; } +let any_label = QNameSet.complement (QNameSet.empty) + +let new_state () = State.make() + +let add_tr ast tr = ast.trans <- (SetT.add tr (ast.trans)) + +let add_reco ast st = ast.reco <- (StateSet.add st (ast.reco)) + +let add_selec ast st = ast.selec <- (StateSet.add st (ast.selec)) + +let add_bot ast st = ast.bottom <- (StateSet.add st (ast.bottom)) + +let add_top ast st = ast.top <- (StateSet.add st (ast.top)) + +let top_states ast = StateSet.elements ast.top let print fmt asta = let pp = Format.fprintf fmt in