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