(* *)
(* TAToo *)
(* *)
-(* ? *)
+(* Lucca Hirschi, ? *)
(* ? *)
(* *)
(* Copyright 2010-2012 Université Paris-Sud and Centre National de la *)
(* *)
(***********************************************************************)
-open Format
-
type state = State.t
type label = QNameSet.t
let st (st,la,f) = st
let la (st,la,f) = la
let fo (st,la,f) = f
+ let print fmt (st,la,f) =
+ Format.fprintf fmt "(%a,%s,%a)"
+ State.print st
+ (QNameSet.to_string la)
+ Formula.print f
end
module SetT =
include Set.Make(Transition)
end
+type transition = Transition.t
+
type t = {
- reco : StateSet.t;
- selec : StateSet.t;
- bottom : StateSet.t;
- top : StateSet.t;
- trans : SetT.t;
+ mutable reco : StateSet.t;
+ mutable selec : StateSet.t;
+ mutable bottom : StateSet.t;
+ mutable top : StateSet.t;
+ mutable trans : SetT.t;
}
exception Not_found_transition
| (a,s,l) :: tl -> (s,l) :: (remove_states tl) in
remove_states (SetT.elements (SetT.filter filter asta.trans))
-let print fmt asta = ()
+let empty = {
+ reco = StateSet.empty;
+ selec = StateSet.empty;
+ bottom = StateSet.empty;
+ top = StateSet.empty;
+ 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
+ pp "Recognizing states: ";
+ StateSet.print fmt asta.reco;
+ pp "\nSelecting states: ";
+ StateSet.print fmt asta.selec;
+ pp "\nBottom states: ";
+ StateSet.print fmt asta.bottom;
+ pp "\nTop states: ";
+ StateSet.print fmt asta.top;
+ pp "\nTransitions: \n";
+ Format.fprintf fmt "{@[<hov 2> %a @]}" (* todo: check boxes *)
+ (Pretty.print_list ~sep:"@, " (Transition.print))
+ (SetT.elements (asta.trans))
+
let to_file out asta = ()