sig
  type 'parser
  val return : '-> 'Pcombinators.parser
  val ( >>= ) :
    'Pcombinators.parser ->
    ('-> 'Pcombinators.parser-> 'Pcombinators.parser
  val fail : 'Pcombinators.parser
  val eof : unit Pcombinators.parser
  val predicate : (char -> bool) -> char Pcombinators.parser
  val ( ++ ) :
    'Pcombinators.parser ->
    'Pcombinators.parser -> 'Pcombinators.parser
  val ( +?+ ) :
    'Pcombinators.parser ->
    'Pcombinators.parser -> 'Pcombinators.parser
  val many : 'Pcombinators.parser -> 'a list Pcombinators.parser
  val many1 : 'Pcombinators.parser -> 'a list Pcombinators.parser
  val repeat : int -> 'Pcombinators.parser -> 'a list Pcombinators.parser
  val sep_by :
    'Pcombinators.parser ->
    'Pcombinators.parser -> 'a list Pcombinators.parser
  val sep_by1 :
    'Pcombinators.parser ->
    'Pcombinators.parser -> 'a list Pcombinators.parser
  val one_of : char list -> char Pcombinators.parser
  val char_exact : char -> char Pcombinators.parser
  val string_exact : string -> string Pcombinators.parser
  val int_exact : int -> string Pcombinators.parser
  val bool_exact : bool -> string Pcombinators.parser
  val digit : int Pcombinators.parser
  val digits : int Pcombinators.parser
  val whitespace : string Pcombinators.parser
  val whitespace1 : string Pcombinators.parser
  type 'a parse_result = Yes of '| No of string
  val parse :
    string -> 'Pcombinators.parser -> 'Pcombinators.parse_result
  val parse_and_print :
    string -> 'Pcombinators.parser -> ('-> string) -> unit
end