Module BatCharParser

module BatCharParser: sig .. end

Parsing character strings.

This module defines common functions for parsing character strings, encoded in Latin-1. These functions are meant to be used in conjunction with the ParserCo module.

Note As ParserCo, this module is still very rough and needs testing.


type position = {
   offset : int; (*

Offset on the line (starting at 0)

*)
   line : int; (*

Line number (starting at 0)

*)
}

The position inside one file or one stream.

val advance : char -> position -> position

Advance by one char.

advance c p returns a new position advanced by one char. If c is '\r' or '\n', the result is {offset = 0; line = p.line + 1}. Other wise, the result is {offset = p.offset + 1; line = p.line}.

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

Create a source from a latin-1 character string.

val source_of_enum : char BatEnum.t -> (char, position) BatParserCo.Source.t

Create a source from a latin-1 character.

val parse : (char, 'a, position) BatParserCo.t ->
string ->
('a, position BatParserCo.report) BatPervasives.result

Apply a parser to a string.

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

Recognize exactly one char

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

Accept any value not in a list As ParserCo.none_of, just with improved error message.

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

Accept any value not a given char As none_of.

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

Recognize exactly one string

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

As char, but case-insensitive

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

As case_string, but case-insensitive

val newline : (char, char, position) BatParserCo.t

Recognizes a newline

val whitespace : (char, char, position) BatParserCo.t

Recognizes white-space

val uppercase : (char, char, position) BatParserCo.t

Recognizes one upper-case ASCII character, including accentuated characters.

val lowercase : (char, char, position) BatParserCo.t

Recognizes one lower-case ASCII character, including accentuated characters.

val letter : (char, char, position) BatParserCo.t

Recognizes one lower- or upper-case ASCII character, including accentuated characters.

val uppercase_latin1 : (char, char, position) BatParserCo.t

Recognizes one upper-case Latin-1 character, including accentuated characters.

val lowercase_latin1 : (char, char, position) BatParserCo.t

Recognizes one lower-case Latin-1 character, including accentuated characters.

val latin1 : (char, char, position) BatParserCo.t

Recognizes one lower- or upper-case Latin1 character, including accentuated characters.

val digit : (char, char, position) BatParserCo.t

Recognizes one decimal digit

val hex : (char, char, position) BatParserCo.t

Recognizes one hexadecimal digit (case-insensitive)