60 lines
1.1 KiB
OCaml
60 lines
1.1 KiB
OCaml
|
|
type re
|
||
|
|
|
||
|
|
module Stream : sig
|
||
|
|
type t
|
||
|
|
|
||
|
|
type 'a feed =
|
||
|
|
| Ok of 'a
|
||
|
|
| No_match
|
||
|
|
|
||
|
|
val create : re -> t
|
||
|
|
val feed : t -> string -> pos:int -> len:int -> t feed
|
||
|
|
val finalize : t -> string -> pos:int -> len:int -> bool
|
||
|
|
|
||
|
|
module Group : sig
|
||
|
|
type stream := t
|
||
|
|
type t
|
||
|
|
|
||
|
|
module Match : sig
|
||
|
|
type t
|
||
|
|
|
||
|
|
val get : t -> int -> string option
|
||
|
|
val test_mark : t -> Pmark.t -> bool
|
||
|
|
end
|
||
|
|
|
||
|
|
val create : stream -> t
|
||
|
|
val feed : t -> string -> pos:int -> len:int -> t feed
|
||
|
|
val finalize : t -> string -> pos:int -> len:int -> Match.t feed
|
||
|
|
val no_match_starts_before : t -> int
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
type match_info =
|
||
|
|
| Match of Group.t
|
||
|
|
| Failed
|
||
|
|
| Running of { no_match_starts_before : int }
|
||
|
|
|
||
|
|
val match_str_no_bounds
|
||
|
|
: groups:bool
|
||
|
|
-> partial:bool
|
||
|
|
-> re
|
||
|
|
-> string
|
||
|
|
-> pos:int
|
||
|
|
-> len:int
|
||
|
|
-> match_info
|
||
|
|
|
||
|
|
val match_str
|
||
|
|
: groups:bool
|
||
|
|
-> partial:bool
|
||
|
|
-> re
|
||
|
|
-> string
|
||
|
|
-> pos:int
|
||
|
|
-> len:int
|
||
|
|
-> match_info
|
||
|
|
|
||
|
|
val match_str_p : re -> string -> pos:int -> len:int -> bool
|
||
|
|
val compile : Ast.t -> re
|
||
|
|
val group_count : re -> int
|
||
|
|
val group_names : re -> (string * int) list
|
||
|
|
val pp_re : re Fmt.t
|