X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fauto%2Fata.mli;fp=src%2Fauto%2Fata.mli;h=0ca6e5578e6213a90f78e90845cbe0df696d2f9e;hp=0000000000000000000000000000000000000000;hb=09058e990c86555c9c9211f00639901bbd386730;hpb=d0165b2cd48fb800c0e3bcacfc85e452233f4525 diff --git a/src/auto/ata.mli b/src/auto/ata.mli new file mode 100644 index 0000000..0ca6e55 --- /dev/null +++ b/src/auto/ata.mli @@ -0,0 +1,93 @@ +(***********************************************************************) +(* *) +(* TAToo *) +(* *) +(* Kim Nguyen, LRI UMR8623 *) +(* Université Paris-Sud & CNRS *) +(* *) +(* Copyright 2010-2013 Université Paris-Sud and Centre National de la *) +(* Recherche Scientifique. All rights reserved. This file is *) +(* distributed under the terms of the GNU Lesser General Public *) +(* License, with the special exception on linking described in file *) +(* ../LICENSE. *) +(* *) +(***********************************************************************) + +(* + Time-stamp: +*) + +type predicate = + First_child + | Next_sibling + | Parent + | Previous_sibling + | Stay + | Is_first_child + | Is_next_sibling + | Is of Tree.Common.NodeKind.t + | Has_first_child + | Has_next_sibling + +val is_move : predicate -> bool + +type atom = predicate * bool * State.t + +module Atom : Formula.ATOM with type data = atom + +module SFormula : + sig + include module type of Formula.Make(Atom) + val mk_atom : predicate -> bool -> State.t -> t + val mk_kind : Tree.Common.NodeKind.t -> t + val has_first_child : t + val has_next_sibling : t + val is_first_child : t + val is_next_sibling : t + val is_attribute : t + val is_element : t + val is_processing_instruction : t + val is_comment : t + val first_child : State.t -> t + val next_sibling : State.t -> t + val parent : State.t -> t + val previous_sibling : State.t -> t + val stay : State.t -> t + val get_states : t -> StateSet.t + end + + +module Transition : Utils.Hcons.S with + type data = State.t * Utils.QNameSet.t * SFormula.t + +module TransList : sig + include Utils.Hlist.S with type elt = Transition.t + val print : Format.formatter -> ?sep:string -> t -> unit +end + + +type t = private { + id : Utils.Uid.t; + mutable states : StateSet.t; + mutable selection_states: StateSet.t; + transitions: (State.t, (Utils.QNameSet.t*SFormula.t) list) Hashtbl.t; + mutable cache2 : TransList.t Utils.Cache.N2.t; + mutable cache6 : (TransList.t*StateSet.t) Utils.Cache.N6.t; +} + + + +val create : StateSet.t -> StateSet.t -> t +val reset : t -> unit +val get_trans : t -> Utils.QNameSet.elt -> StateSet.t -> TransList.t + +val eval_trans : t -> TransList.t + -> StateSet.t -> StateSet.t -> StateSet.t -> StateSet.t + -> bool -> bool -> bool -> bool -> Tree.Common.NodeKind.t + -> TransList.t*StateSet.t + +val add_trans : t -> State.t -> Utils.QNameSet.t -> SFormula.t -> unit +val print : Format.formatter -> t -> unit +val complete_transitions : t -> unit +val cleanup_states : t -> unit +val normalize_negations : t -> unit