Module Stdlib.Genlex
type token
=
|
Kwd of string
|
Ident of string
|
Int of int
|
Float of float
|
String of string
|
Char of char
The type of tokens. The lexical classes are:
Int
andFloat
for integer and floating-point numbers;String
for string literals, enclosed in double quotes;Char
for character literals, enclosed in single quotes;Ident
for identifiers (either sequences of letters, digits, underscores and quotes, or sequences of 'operator characters' such as+
,*
, etc); andKwd
for keywords (either identifiers or single 'special characters' such as(
,}
, etc).
val make_lexer : string list -> char Stdlib.Stream.t -> token Stdlib.Stream.t
Construct the lexer function. The first argument is the list of keywords. An identifier
s
is returned asKwd s
ifs
belongs to this list, and asIdent s
otherwise. A special characters
is returned asKwd s
ifs
belongs to this list, and cause a lexical error (exceptionStream.Error
with the offending lexeme as its parameter) otherwise. Blanks and newlines are skipped. Comments delimited by(*
and*)
are skipped as well, and can be nested. AStream.Failure
exception is raised if end of stream is unexpectedly reached.