sig
  type ('i, 'o) t = 'Cf_seq.t -> ('o * 'Cf_seq.t) option
  exception Error
  val nil : ('i, 'o) Cf_parser.t
  val err : ?f:('Cf_seq.t -> exn) -> unit -> ('i, 'x) Cf_parser.t
  val req :
    ?f:('Cf_seq.t -> exn) -> ('i, 'o) Cf_parser.t -> ('i, 'o) Cf_parser.t
  val fin : ('i, unit) Cf_parser.t
  val alt : ('i, 'o) Cf_parser.t list -> ('i, 'o) Cf_parser.t
  val altz : ('i, 'o) Cf_parser.t Cf_seq.t -> ('i, 'o) Cf_parser.t
  val sat : ('-> bool) -> ('i, 'i) Cf_parser.t
  val tok : ('-> 'o option) -> ('i, 'o) Cf_parser.t
  val lit : string -> '-> (char, 'o) Cf_parser.t
  val unfold : ('i, 'o) Cf_parser.t -> 'Cf_seq.t -> 'Cf_seq.t
  class ['i] cursor :
    int ->
    object ('a)
      val position_ : int
      method advance : '-> 'a
      method position : int
    end
  module X :
    sig
      type ('a, 'i, 'o) t =
          ('i * 'a) Cf_seq.t -> ('o * ('i * 'a) Cf_seq.t) option
        constraint 'a = '#Cf_parser.cursor
      exception Error of int
      val err :
        ?f:(('i * ('#Cf_parser.cursor as 'a)) Cf_seq.t -> exn) ->
        unit -> ('a, 'i, 'o) Cf_parser.X.t
      val req :
        ?f:(('i * ('#Cf_parser.cursor as 'a)) Cf_seq.t -> exn) ->
        ('a, 'i, 'o) Cf_parser.X.t -> ('a, 'i, 'o) Cf_parser.X.t
      val sat : ('-> bool) -> ('#Cf_parser.cursor, 'i, 'i) Cf_parser.X.t
      val tok :
        ('-> 'o option) -> ('#Cf_parser.cursor, 'i, 'o) Cf_parser.X.t
      val lit :
        string -> '-> ('#Cf_parser.cursor, char, 'o) Cf_parser.X.t
      val weave :
        c:('#Cf_parser.cursor as 'c) -> 'Cf_seq.t -> ('i * 'c) Cf_seq.t
      val unfold :
        ('#Cf_parser.cursor as 'a, 'i, 'o) Cf_parser.X.t ->
        ('i * 'a) Cf_seq.t -> ('o * 'a) Cf_seq.t
    end
  module Op :
    sig
      val ( >>= ) :
        ('i, 'a) Cf_parser.t ->
        ('-> ('i, 'b) Cf_parser.t) -> ('i, 'b) Cf_parser.t
      val ( ~: ) : '-> ('i, 'o) Cf_parser.t
      val ( ?. ) : '-> ('i, 'i) Cf_parser.t
      val ( ?: ) : '-> ('#Cf_parser.cursor, 'i, 'i) Cf_parser.X.t
      val ( ?/ ) : ('i, 'o) Cf_parser.t -> ('i, 'o option) Cf_parser.t
      val ( ?* ) : ('i, 'o) Cf_parser.t -> ('i, 'o list) Cf_parser.t
      val ( ?+ ) : ('i, 'o) Cf_parser.t -> ('i, 'o * 'o list) Cf_parser.t
      val ( %= ) :
        ('#Cf_parser.cursor as 'a, 'i, 'x) Cf_parser.X.t ->
        ('a, 'x, 'o) Cf_parser.X.t -> ('a, 'i, 'o) Cf_parser.X.t
    end
  val filter : ('-> bool) -> ('i, 'o) Cf_parser.t -> ('i, 'o) Cf_parser.t
  val map : ('-> 'y) -> ('i, 'x) Cf_parser.t -> ('i, 'y) Cf_parser.t
  val optmap :
    ('-> 'y option) -> ('i, 'x) Cf_parser.t -> ('i, 'y) Cf_parser.t
  val to_extended :
    ('i, 'o) Cf_parser.t -> ('#Cf_parser.cursor, 'i, 'o) Cf_parser.X.t
  val of_extended :
    ('#Cf_parser.cursor as 'c) ->
    ('c, 'i, 'o) Cf_parser.X.t -> ('i, 'o) Cf_parser.t
end