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
.