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 ->
(Genlex.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.