59 lines
999 B
OCaml
59 lines
999 B
OCaml
|
|
(** A view of the top-level of a regex. This type is unstable and may change *)
|
||
|
|
|
||
|
|
module Cset : sig
|
||
|
|
type t = Cset.t
|
||
|
|
|
||
|
|
module Range : sig
|
||
|
|
type t
|
||
|
|
|
||
|
|
val first : t -> Char.t
|
||
|
|
val last : t -> Char.t
|
||
|
|
end
|
||
|
|
|
||
|
|
val view : t -> Range.t list
|
||
|
|
end
|
||
|
|
|
||
|
|
module Sem : sig
|
||
|
|
type t =
|
||
|
|
[ `Longest
|
||
|
|
| `Shortest
|
||
|
|
| `First
|
||
|
|
]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Rep_kind : sig
|
||
|
|
type t =
|
||
|
|
[ `Greedy
|
||
|
|
| `Non_greedy
|
||
|
|
]
|
||
|
|
end
|
||
|
|
|
||
|
|
type t =
|
||
|
|
| Set of Cset.t
|
||
|
|
| Sequence of Ast.t list
|
||
|
|
| Alternative of Ast.t list
|
||
|
|
| Repeat of Ast.t * int * int option
|
||
|
|
| Beg_of_line
|
||
|
|
| End_of_line
|
||
|
|
| Beg_of_word
|
||
|
|
| End_of_word
|
||
|
|
| Not_bound
|
||
|
|
| Beg_of_str
|
||
|
|
| End_of_str
|
||
|
|
| Last_end_of_line
|
||
|
|
| Start
|
||
|
|
| Stop
|
||
|
|
| Sem of Sem.t * Ast.t
|
||
|
|
| Sem_greedy of Rep_kind.t * Ast.t
|
||
|
|
| Group of string option * Ast.t
|
||
|
|
| No_group of Ast.t
|
||
|
|
| Nest of Ast.t
|
||
|
|
| Case of Ast.t
|
||
|
|
| No_case of Ast.t
|
||
|
|
| Intersection of Ast.t list
|
||
|
|
| Complement of Ast.t list
|
||
|
|
| Difference of Ast.t * Ast.t
|
||
|
|
| Pmark of Pmark.t * Ast.t
|
||
|
|
|
||
|
|
val view : Ast.t -> t
|