40 lines
2.0 KiB
OCaml
40 lines
2.0 KiB
OCaml
|
(* camlp4r *)
|
||
|
(***********************************************************************)
|
||
|
(* *)
|
||
|
(* Camlp4 *)
|
||
|
(* *)
|
||
|
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
|
||
|
(* *)
|
||
|
(* Copyright 2001 Institut National de Recherche en Informatique et *)
|
||
|
(* Automatique. Distributed only by permission. *)
|
||
|
(* *)
|
||
|
(***********************************************************************)
|
||
|
|
||
|
(* $Id$ *)
|
||
|
|
||
|
(* Module [Plexer]: a lexical analyzer *)
|
||
|
|
||
|
value make : unit -> Token.lexer;
|
||
|
(* Some lexer provided. See the module [Token]. The tokens returned
|
||
|
follow the Objective Caml and the Revised syntax lexing rules.
|
||
|
|
||
|
The meaning of the tokens are:
|
||
|
- * [("", s)] is the keyword [s].
|
||
|
- * [("LIDENT", s)] is the ident [s] starting with a lowercase letter.
|
||
|
- * [("UIDENT", s)] is the ident [s] starting with an uppercase letter.
|
||
|
- * [("INT", s)] is an integer constant whose string source is [s].
|
||
|
- * [("FLOAT", s)] is a float constant whose string source is [s].
|
||
|
- * [("STRING", s)] is the string constant [s].
|
||
|
- * [("CHAR", s)] is the character constant [s].
|
||
|
- * [("QUOTATION", "t:s")] is a quotation [t] holding the string [s].
|
||
|
- * [("ANTIQUOT", "t:s")] is an antiquotation [t] holding the string [s].
|
||
|
- * [("LOCATE", "i:s")] is a location directive at pos [i] holding [s].
|
||
|
- * [("EOI", "")] is the end of input.
|
||
|
|
||
|
The associated token patterns in the EXTEND statement hold the
|
||
|
same names than the first string (constructor name) of the tokens
|
||
|
expressions above.
|
||
|
|
||
|
The lexer do not use global (mutable) variables: instantiations
|
||
|
of [Plexer.make ()] do not perturb each other. *)
|