sig   type token =     Genlex.token =       Kwd of string     | Ident of string     | Int of int     | Float of float     | String of string     | Char of char   val make_lexer : string list -> char Stream.t -> BatGenlex.token Stream.t   type lexer_error =       IllegalCharacter of char     | NotReallyAChar     | NotReallyAnEscape     | EndOfStream   exception LexerError of BatGenlex.lexer_error * int   type t   val of_list : string list -> BatGenlex.t   val to_stream_filter :     BatGenlex.t -> char Stream.t -> BatGenlex.token Stream.t   val to_enum_filter :     BatGenlex.t -> char BatEnum.t -> BatGenlex.token BatEnum.t   val to_lazy_list_filter :     BatGenlex.t -> char BatLazyList.t -> BatGenlex.token BatLazyList.t   val string_of_token : BatGenlex.token -> string   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 ->               (BatGenlex.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