sig
  type ('a, 'b, 'c) t =
      'a Gramext.g_entry ->
      'a Gramext.g_symbol list -> ('a Stream.t -> 'b) -> 'a Stream.t -> 'c
  type ('a, 'b, 'c) tsep =
      'a Gramext.g_entry ->
      'a Gramext.g_symbol list ->
      ('a Stream.t -> 'b) -> ('a Stream.t -> unit) -> 'a Stream.t -> 'c
  val sfold0 : ('a -> 'b -> 'b) -> 'b -> ('c, 'a, 'b) Extfold.t
  val sfold1 : ('a -> 'b -> 'b) -> 'b -> ('c, 'a, 'b) Extfold.t
  val sfold0sep : ('a -> 'b -> 'b) -> 'b -> ('c, 'a, 'b) Extfold.tsep
  val sfold1sep : ('a -> 'b -> 'b) -> 'b -> ('c, 'a, 'b) Extfold.tsep
  val slist0 : ('a, 'b, 'b list) Extfold.t
  val slist1 : ('a, 'b, 'b list) Extfold.t
  val slist0sep : ('a, 'b, 'b list) Extfold.tsep
  val slist1sep : ('a, 'b, 'b list) Extfold.tsep
  val sopt : ('a, 'b, 'b option) Extfold.t
end