sig
  type 'a or_error = ('a, string) Result.result
  type line_num = int
  type col_num = int
  type parse_branch
  val string_of_branch : CCParse.parse_branch -> string
  exception ParseError of CCParse.parse_branch * (unit -> string)
  type position
  type state
  val state_of_string : string -> CCParse.state
  type 'a t = CCParse.state -> ok:('-> unit) -> err:(exn -> unit) -> unit
  val return : '-> 'CCParse.t
  val pure : '-> 'CCParse.t
  val ( >|= ) : 'CCParse.t -> ('-> 'b) -> 'CCParse.t
  val map : ('-> 'b) -> 'CCParse.t -> 'CCParse.t
  val map2 : ('-> '-> 'c) -> 'CCParse.t -> 'CCParse.t -> 'CCParse.t
  val map3 :
    ('-> '-> '-> 'd) ->
    'CCParse.t -> 'CCParse.t -> 'CCParse.t -> 'CCParse.t
  val ( >>= ) : 'CCParse.t -> ('-> 'CCParse.t) -> 'CCParse.t
  val ( <*> ) : ('-> 'b) CCParse.t -> 'CCParse.t -> 'CCParse.t
  val ( <* ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
  val ( *> ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
  val fail : string -> 'CCParse.t
  val failf : ('a, unit, string, 'CCParse.t) Pervasives.format4 -> 'a
  val parsing : string -> 'CCParse.t -> 'CCParse.t
  val eoi : unit CCParse.t
  val nop : unit CCParse.t
  val char : char -> char CCParse.t
  val char_if : (char -> bool) -> char CCParse.t
  val chars_if : (char -> bool) -> string CCParse.t
  val chars1_if : (char -> bool) -> string CCParse.t
  val endline : char CCParse.t
  val space : char CCParse.t
  val white : char CCParse.t
  val skip_chars : (char -> bool) -> unit CCParse.t
  val skip_space : unit CCParse.t
  val skip_white : unit CCParse.t
  val is_alpha : char -> bool
  val is_num : char -> bool
  val is_alpha_num : char -> bool
  val is_space : char -> bool
  val is_white : char -> bool
  val ( <|> ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
  val ( <?> ) : 'CCParse.t -> string -> 'CCParse.t
  val try_ : 'CCParse.t -> 'CCParse.t
  val suspend : (unit -> 'CCParse.t) -> 'CCParse.t
  val string : string -> string CCParse.t
  val many : 'CCParse.t -> 'a list CCParse.t
  val many1 : 'CCParse.t -> 'a list CCParse.t
  val skip : 'CCParse.t -> unit CCParse.t
  val sep : by:'CCParse.t -> 'CCParse.t -> 'a list CCParse.t
  val sep1 : by:'CCParse.t -> 'CCParse.t -> 'a list CCParse.t
  val fix : ('CCParse.t -> 'CCParse.t) -> 'CCParse.t
  val memo : 'CCParse.t -> 'CCParse.t
  val fix_memo : ('CCParse.t -> 'CCParse.t) -> 'CCParse.t
  val get_lnum : int CCParse.t
  val get_cnum : int CCParse.t
  val get_pos : (int * int) CCParse.t
  val parse : 'CCParse.t -> CCParse.state -> 'CCParse.or_error
  val parse_exn : 'CCParse.t -> CCParse.state -> 'a
  val parse_string : 'CCParse.t -> string -> 'CCParse.or_error
  val parse_string_exn : 'CCParse.t -> string -> 'a
  val parse_file : 'CCParse.t -> string -> 'CCParse.or_error
  val parse_file_exn : 'CCParse.t -> string -> 'a
  module Infix :
    sig
      val ( >|= ) : 'CCParse.t -> ('-> 'b) -> 'CCParse.t
      val ( >>= ) : 'CCParse.t -> ('-> 'CCParse.t) -> 'CCParse.t
      val ( <*> ) : ('-> 'b) CCParse.t -> 'CCParse.t -> 'CCParse.t
      val ( <* ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
      val ( *> ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
      val ( <|> ) : 'CCParse.t -> 'CCParse.t -> 'CCParse.t
      val ( <?> ) : 'CCParse.t -> string -> 'CCParse.t
    end
  module U :
    sig
      val list :
        ?start:string ->
        ?stop:string -> ?sep:string -> 'CCParse.t -> 'a list CCParse.t
      val int : int CCParse.t
      val word : string CCParse.t
      val pair :
        ?start:string ->
        ?stop:string ->
        ?sep:string -> 'CCParse.t -> 'CCParse.t -> ('a * 'b) CCParse.t
      val triple :
        ?start:string ->
        ?stop:string ->
        ?sep:string ->
        'CCParse.t ->
        'CCParse.t -> 'CCParse.t -> ('a * 'b * 'c) CCParse.t
    end
end