# Functor BatGenlex.Languages.Make

    module Make: functor (M : Definition) -> sig .. end

Parameters:

`M` | : | `Definition`

Create a lexer from a language definition

###### High-level API

    val feed : (char, BatCharParser.position) BatParserCo.Source.t ->
           (BatGenlex.token, BatCharParser.position) BatParserCo.Source.t

Drop comments, present reserved operators and reserved names as `Kwd`, operators and identifiers as `Ident`, integer numbers as `Int`, floating-point numbers as `Float` and characters as `Char`.

If the language is not `case_sensitive`, identifiers and keywords are returned in lower-case.

    val start : (char, unit, BatCharParser.position) BatParserCo.t

###### Medium-level API

Remove any leading whitespaces

    val ident : (char, string, BatCharParser.position) BatParserCo.t

Accepts any non-reserved identifier/operator. If the language is not `case_sensitive`, the identifier is returned in lower-case.

    val kwd : (char, string, BatCharParser.position) BatParserCo.t

Accepts any identifier. If the language is not `case_sensitive`, the identifier is returned in lower-case.

    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

Accepts a character literal, i.e. one character (or an escape) between two quotes.

    val string_literal : (char, string, BatCharParser.position) BatParserCo.t

Accepts a string, i.e. one sequence of characters or escapes between two double quotes, on one line.

    val integer : (char, int, BatCharParser.position) BatParserCo.t

Parse an integer.

    val float : (char, float, BatCharParser.position) BatParserCo.t

Parse a floating-point number.

    val number : (char, [ `Float of float | `Integer of int ], BatCharParser.position)
           BatParserCo.t

Parse either an integer or a floating-point number.

    val char : char -> (char, char, BatCharParser.position) BatParserCo.t

###### Low-level API

As `CharParser.char`, but case-insensitive if specified by `case_sensitive`.

    val string : string -> (char, string, BatCharParser.position) BatParserCo.t

As `CharParser.string`, but case-insensitive if specified by `case_sensitive`.

    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

Apply this filter to your own parsers if you want them to ignore following comments.