ocaml/camlp4/lib/plexer.mli

66 lines
3.1 KiB
OCaml

(* camlp4r *)
(***********************************************************************)
(* *)
(* Camlp4 *)
(* *)
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 2002 Institut National de Recherche en Informatique et *)
(* Automatique. Distributed only by permission. *)
(* *)
(***********************************************************************)
(* $Id$ *)
(** A lexical analyzer. *)
value gmake : unit -> Token.glexer Token.t;
(** 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.
Warning: the string associated with the constructor [STRING] is
the string found in the source without any interpretation. In
particular, the backslashes are not interpreted. For example, if
the input is ["\n"] the string is *not* a string with one
element containing the character "return", but a string of two
elements: the backslash and the character ["n"]. To interpret
a string use the function [Token.eval_string]. Same thing for
the constructor [CHAR]: to get the character, don't get the
first character of the string, but use the function
[Token.eval_char].
The lexer do not use global (mutable) variables: instantiations
of [Plexer.gmake ()] do not perturb each other. *)
value dollar_for_antiquotation : ref bool;
(** When True (default), the next call to [Plexer.make ()] returns a
lexer where the dollar sign is used for antiquotations. If False,
the dollar sign can be used as token. *)
value no_quotations : ref bool;
(** When True, all lexers built by [Plexer.make ()] do not lex the
quotation syntax any more. Default is False (quotations are
lexed). *)
(**/**)
(* deprecated since version 3.05; use rather function gmake *)
value make : unit -> Token.lexer;