sig
  type t
  val of_list : string list -> BatGenlex.t
  val to_stream_filter :
    BatGenlex.t -> char Stream.t -> Genlex.token Stream.t
  val to_enum_filter :
    BatGenlex.t -> char BatEnum.t -> Genlex.token BatEnum.t
  val to_lazy_list_filter :
    BatGenlex.t -> char BatLazyList.t -> Genlex.token BatLazyList.t
  module Languages :
    sig
      module type Definition =
        sig
          val comment_delimiters : (string * string) option
          val line_comment_start : string option
          val nested_comments : bool
          val ident_start :
            (char, char, BatCharParser.position) BatParserCo.t
          val ident_letter :
            (char, char, BatCharParser.position) BatParserCo.t
          val op_start : (char, char, BatCharParser.position) BatParserCo.t
          val op_letter : (char, char, BatCharParser.position) BatParserCo.t
          val reserved_names : string list
          val case_sensitive : bool
        end
      module Library :
        sig module OCaml : Definition module C : Definition end
      module Make :
        functor (M : Definition->
          sig
            val feed :
              (char, BatCharParser.position) BatParserCo.Source.t ->
              (Genlex.token, BatCharParser.position) BatParserCo.Source.t
            val start : (char, unit, BatCharParser.position) BatParserCo.t
            val ident : (char, string, BatCharParser.position) BatParserCo.t
            val kwd : (char, string, BatCharParser.position) BatParserCo.t
            val identifier :
              string -> (char, unit, BatCharParser.position) BatParserCo.t
            val keyword :
              string -> (char, unit, BatCharParser.position) BatParserCo.t
            val char_literal :
              (char, char, BatCharParser.position) BatParserCo.t
            val string_literal :
              (char, string, BatCharParser.position) BatParserCo.t
            val integer : (char, int, BatCharParser.position) BatParserCo.t
            val float : (char, float, BatCharParser.position) BatParserCo.t
            val number :
              (char, [ `Float of float | `Integer of int ],
               BatCharParser.position)
              BatParserCo.t
            val char :
              char -> (char, char, BatCharParser.position) BatParserCo.t
            val string :
              string -> (char, string, BatCharParser.position) BatParserCo.t
            val line_comment :
              (char, unit, BatCharParser.position) BatParserCo.t
            val multiline_comment :
              (char, unit, BatCharParser.position) BatParserCo.t
            val comment : (char, unit, BatCharParser.position) BatParserCo.t
            val whitespaces :
              (char, unit, BatCharParser.position) BatParserCo.t
          end
    end
end