Module Sexp.Annotated
Module for parsing S-expressions annotated with location information
type pos
= Pre_sexp.Annotated.pos
=
{
line : int;
col : int;
offset : int;
}
Position information for annotated S-expressions
type range
= Pre_sexp.Annotated.range
=
{
start_pos : pos;
end_pos : pos;
}
Range information for annotated S-expressions
type t
= Pre_sexp.Annotated.t
=
|
Atom of range * Type.t
|
List of range * t list * Type.t
S-expression annotated with location information
type 'a conv
=[
|
`Result of 'a
|
`Error of exn * t
]
Type of conversion results of annotated S-expressions.
exception
Conv_exn of string * exn
Exception associated with conversion errors. First argument describes the location, the second the reason.
type stack
= Pre_sexp.Annotated.stack
=
{
mutable positions : pos list;
mutable stack : t list list;
}
Stack used by annotation parsers
val get_sexp : t -> Type.t
get_sexp annot_sexp
- returns
S-expression associated with annotated S-expression
annot_sexp
.
val get_range : t -> range
get_range annot_sexp
- returns
the range associated with annotated S-expression
annot_sexp
.
val find_sexp : t -> Type.t -> t option
find_sexp annot_sexp sexp
- returns
Some res
whereres
is the annotated S-expression that is physically equivalent tosexp
inannot_sexp
, orNone
if there is no such S-expression.
Annotated (partial) parsing
val parse : ?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, t) parse_result
parse ?parse_pos ?len str
same asparse
, but returns an S-expression annotated with location information.
val parse_bigstring : ?parse_pos:Parse_pos.t -> ?len:int -> bigstring -> (bigstring, t) parse_result
parse_bigstring ?parse_pos ?len str
same asparse_bigstring
, but returns an S-expression annotated with location information.
val input_sexp : ?parse_pos:Parse_pos.t -> Stdlib.in_channel -> t
input_sexp ?parse_pos ic
likeinput_sexp
, but returns an annotated S-expression instead.
val input_sexps : ?parse_pos:Parse_pos.t -> ?buf:bytes -> Stdlib.in_channel -> t list
input_sexps ?parse_pos ?buf ic
likeinput_sexps
, but returns a list of annotated S-expressions.
val input_rev_sexps : ?parse_pos:Parse_pos.t -> ?buf:bytes -> Stdlib.in_channel -> t list
input_sexps ?parse_pos ?buf ic
likeinput_rev_sexps
, but returns a list of annotated S-expressions.
Loading of annotated S-expressions
val load_sexp : ?strict:bool -> ?buf:bytes -> string -> t
load_sexp ?strict ?buf file
likeload_sexp
, but returns an annotated S-expression.
val load_sexps : ?buf:bytes -> string -> t list
load_sexps ?buf file
likeload_sexps
, but returns a list of annotated S-expressions.
val load_rev_sexps : ?buf:bytes -> string -> t list
load_rev_sexps ?buf file
likeload_rev_sexps
, but returns a list of annotated S-expressions.
String and bigstring conversions
val conv : (Type.t -> 'a) -> t -> 'a conv
conv f annot_sexp
converts the S-expression associated with annotated S-expressionannot_sexp
usingf
.- returns
`Result res
on success, or`Error (exn, sub_annot_sexp)
otherwise, whereexn
is the exception associated with the conversion error, andsub_annot_sexp
is the annotated S-expression on which conversion failed.
val get_conv_exn : file:string -> exc:exn -> t -> exn
get_conv_exn ~file ~exc annot_sexp
- returns
the exception that would be raised for a given
file
and exceptionexc
if conversion had failed on annotated S-expressionannot_sexp
. The format of the exception message is "file:line:col"