## Parameters

`module M : Definition`

## Signature

## High-level API

`val feed : (char, BatCharParser.position) BatParserCo.Source.t -> (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.