This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
123
unikernel/duniverse/ocaml-re/lib/automata.mli
Normal file
123
unikernel/duniverse/ocaml-re/lib/automata.mli
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
(*
|
||||
RE - A regular expression library
|
||||
|
||||
Copyright (C) 2001 Jerome Vouillon
|
||||
email: Jerome.Vouillon@pps.jussieu.fr
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation, with
|
||||
linking exception; either version 2.1 of the License, or (at
|
||||
your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*)
|
||||
|
||||
(* Regular expressions *)
|
||||
|
||||
module Mark : sig
|
||||
type t [@@immediate]
|
||||
|
||||
val compare : t -> t -> int
|
||||
val start : t
|
||||
val prev : t -> t
|
||||
val next : t -> t
|
||||
val next2 : t -> t
|
||||
val group_count : t -> int
|
||||
end
|
||||
|
||||
module Sem : sig
|
||||
type t =
|
||||
[ `Longest
|
||||
| `Shortest
|
||||
| `First
|
||||
]
|
||||
|
||||
val to_dyn : t -> Dyn.t
|
||||
val pp : t Fmt.t
|
||||
end
|
||||
|
||||
module Rep_kind : sig
|
||||
type t =
|
||||
[ `Greedy
|
||||
| `Non_greedy
|
||||
]
|
||||
|
||||
val to_dyn : t -> Dyn.t
|
||||
val pp : t Fmt.t
|
||||
end
|
||||
|
||||
type expr
|
||||
|
||||
val is_eps : expr -> bool
|
||||
val pp : expr Fmt.t
|
||||
|
||||
module Ids : sig
|
||||
type t
|
||||
|
||||
val create : unit -> t
|
||||
end
|
||||
|
||||
val cst : Ids.t -> Cset.t -> expr
|
||||
val empty : Ids.t -> expr
|
||||
val alt : Ids.t -> expr list -> expr
|
||||
val seq : Ids.t -> Sem.t -> expr -> expr -> expr
|
||||
val eps : Ids.t -> expr
|
||||
val rep : Ids.t -> Rep_kind.t -> Sem.t -> expr -> expr
|
||||
val mark : Ids.t -> Mark.t -> expr
|
||||
val pmark : Ids.t -> Pmark.t -> expr
|
||||
val erase : Ids.t -> Mark.t -> Mark.t -> expr
|
||||
val before : Ids.t -> Category.t -> expr
|
||||
val after : Ids.t -> Category.t -> expr
|
||||
val rename : Ids.t -> expr -> expr
|
||||
|
||||
(****)
|
||||
|
||||
(* States of the automata *)
|
||||
|
||||
module Idx : sig
|
||||
type t
|
||||
|
||||
val to_int : t -> int
|
||||
end
|
||||
|
||||
module Status : sig
|
||||
type t =
|
||||
| Failed
|
||||
| Match of Mark_infos.t * Pmark.Set.t
|
||||
| Running
|
||||
end
|
||||
|
||||
module State : sig
|
||||
type t
|
||||
|
||||
val pp : t Fmt.t
|
||||
val dummy : t
|
||||
val create : Category.t -> expr -> t
|
||||
val idx : t -> Idx.t
|
||||
val status_no_mutex : t -> Status.t
|
||||
val status : Mutex.t -> t -> Status.t
|
||||
val to_dyn : t -> Dyn.t
|
||||
|
||||
module Table : Hashtbl.S with type key = t
|
||||
end
|
||||
|
||||
(****)
|
||||
|
||||
(* Computation of the states following a given state *)
|
||||
|
||||
module Working_area : sig
|
||||
type t
|
||||
|
||||
val create : unit -> t
|
||||
val index_count : t -> int
|
||||
end
|
||||
|
||||
val delta : Working_area.t -> Category.t -> Cset.c -> State.t -> State.t
|
||||
Loading…
Add table
Add a link
Reference in a new issue