sig
  type 'a result
  type 'a t = Strng.t -> 'Parser.result
  val ( >>= ) : 'Parser.t -> ('-> 'Parser.t) -> 'Parser.t
  val ( <|> ) : 'Parser.t -> 'Parser.t -> 'Parser.t
  val ( >> ) : 'Parser.t -> 'Parser.t -> 'Parser.t
  val any_char : char Parser.t
  val between : 'Parser.t -> 'Parser.t -> 'Parser.t -> 'Parser.t
  val char : char -> char Parser.t
  val digit : char Parser.t
  val letter : char Parser.t
  val many1 : 'Parser.t -> 'a list Parser.t
  val many : 'Parser.t -> 'a list Parser.t
  val none_of : string -> char Parser.t
  val one_of : string -> char Parser.t
  val parse : 'Parser.t -> Strng.t -> 'a option
  val return : '-> 'Parser.t
  val sat : (char -> bool) -> char Parser.t
  val sep_by1 : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val sep_by : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val sep_end_by1 : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val sep_end_by : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val skip_many1 : 'Parser.t -> unit Parser.t
  val skip_many : 'Parser.t -> unit Parser.t
  val space : char Parser.t
  val spaces : unit Parser.t
  val string : string -> Strng.t Parser.t
  val tempt : 'Parser.t -> 'Parser.t
  val test : 'Parser.t -> string -> 'a
  val many_until : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val many_before : 'Parser.t -> 'Parser.t -> 'a list Parser.t
  val spaces1 : unit Parser.t
  val parse_strict : 'Parser.t -> Strng.t -> 'a option
end