module Ploc: sig .. end
Locations and some pervasive type and value.
type t
exception Exc of t * exn
Ploc.Exc loc e is an encapsulation of the exception e with
the input location loc. To be used to specify a location
for an error. This exception must not be raised by raise but
rather by Ploc.raise (see below), to prevent the risk of several
encapsulations of Ploc.Exc.
val raise : t -> exn -> 'a
Ploc.raise loc e, if e is already the exception Ploc.Exc,
re-raise it (ignoring the new location loc), else raise the
exception Ploc.Exc loc e.
val make : int -> int -> int * int -> t
Ploc.make line_nb bol_pos (bp, ep) creates a location starting
at line number line_nb, where the position of the beginning of the
line is bol_pos and between the positions bp (included) and ep
excluded. The positions are in number of characters since the begin
of the stream.
val make_unlined : int * int -> t
Ploc.make_unlined is like Ploc.make except that the line number
is not provided (to be used e.g. when the line number is unknown.
val dummy : t
Ploc.dummy is a dummy location, used in situations when location
has no meaning.
val first_pos : t -> int
Ploc.first_pos loc returns the position of the begin of the location
in number of characters since the beginning of the stream.
val last_pos : t -> int
Ploc.last_pos loc returns the position of the first character not
of the location in number of characters since the beginning of the
stream.
val line_nb : t -> int
Ploc.line_nb loc returns the line number of the location or -1 if
the location does not contain a line number (i.e. built with
Ploc.make_unlined.
val bol_pos : t -> int
Ploc.bol_pos loc returns the position of the beginning of the line
of the location in number of characters since the beginning of
the stream, or 0 if the location does not contain a line number
(i.e. built with Ploc.make_unlined.
val encl : t -> t -> t
Ploc.encl loc1 loc2 returns the location starting at the
smallest start of loc1 and loc2 and ending at the greatest end
of them. In other words, it is the location enclosing loc1 and
loc2.
val shift : int -> t -> t
Ploc.shift sh loc returns the location loc shifted with sh
characters. The line number is not recomputed.
val sub : t -> int -> int -> t
Ploc.sub loc sh len is the location loc shifted with sh
characters and with length len. The previous ending position
of the location is lost.
val after : t -> int -> int -> t
Ploc.after loc sh len is the location just after loc (starting at
the end position of loc) shifted with sh characters and of length
len.
val name : string Pervasives.ref
Ploc.name.val is the name of the location variable used in grammars
and in the predefined quotations for OCaml syntax trees. Default:
"loc"
val from_file : string -> t -> string * int * int * int
Ploc.from_file fname loc reads the file fname up to the
location loc and returns the real input file, the line number
and the characters location in the line; the real input file
can be different from fname because of possibility of line
directives typically generated by /lib/cpp.
type 'a vala =
| |
VaAnt of string |
| |
VaVal of 'a |
val call_with : 'a Pervasives.ref -> 'a -> ('b -> 'c) -> 'b -> 'c
Ploc.call_with r v f a sets the reference r to the value v,
then call f a, and resets r to its initial value. If f a raises
an exception, its initial value is also reset and the exception is
re-raised. The result is the result of f a.