This commit is contained in:
swrup 2025-11-11 02:07:51 +01:00
parent aa2ff7b2f0
commit 2f3113f55d
11742 changed files with 1223940 additions and 0 deletions

View 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