sig
  type variable
  type charset
  type matcher =
      Literal of string
    | Anystring
    | Lazystring
    | Anychar
    | Anystring_from of Xstr_match.charset
    | Lazystring_from of Xstr_match.charset
    | Anychar_from of Xstr_match.charset
    | Nullstring
    | Alternative of Xstr_match.matcher list list
    | Optional of Xstr_match.matcher list
    | Record of (Xstr_match.variable * Xstr_match.matcher list)
    | Scanner of (string -> int)
  val match_string : Xstr_match.matcher list -> string -> bool
  type replacer =
      ReplaceLiteral of string
    | ReplaceVar of Xstr_match.variable
    | ReplaceFunction of (unit -> string)
  type rflag = Anchored | Limit of int
  val replace_matched_substrings :
    Xstr_match.matcher list ->
    Xstr_match.replacer list ->
    Xstr_match.rflag list -> string -> string * int
  val var : string -> Xstr_match.variable
  val var_matched : Xstr_match.variable -> bool
  val string_of_var : Xstr_match.variable -> string
  val found_string_of_var : Xstr_match.variable -> string
  val mkset : string -> Xstr_match.charset
  val mknegset : string -> Xstr_match.charset
end