Module Tjr_substring

type 'a poly_substring = {
s_ : 'a;
i_ : int;
j_ : int;
}
val length : 'a poly_substring -> int
type substring_ = string poly_substring
val mk_substring : string -> string poly_substring
module String_position : sig ... end
type terminal_parser = String_position.string_position -> int list
val eps : String_position.string_position -> int list
val re : re:Str.regexp -> String_position.string_position -> int list
val upto_re : re:Str.regexp -> String_position.string_position -> int list
val a : string -> String_position.string_position -> int list
val upto_a : string -> String_position.string_position -> int list
val (**>) : (String_position.string_position -> int list) -> (String_position.string_position -> 'a list) -> String_position.string_position -> 'a list
module X : functor (Y : sig ... end) -> sig ... end