Sexplib.SexpSexp: Module for handling S-expressions (I/O, etc.)
include Sexp_intf.Smodule Raw_grammar = Sexplib0.Sexp.Private.Raw_grammartype bigstring = (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.tType of bigstrings
val default_indent : int refdefault_indent reference to default indentation level for human-readable conversions. Initialisation value: 2.
val size : t -> int * intsize sexp
val scan_sexp : ?buf:Buffer.t -> Lexing.lexbuf -> tscan_sexp ?buf lexbuf scans an S-expression from lex buffer lexbuf using the optional string buffer buf for storing intermediate strings.
val scan_sexps : ?buf:Buffer.t -> Lexing.lexbuf -> t listscan_sexps ?buf lexbuf reads a list of whitespace separated S-expressions from lex buffer lexbuf using the optional string buffer buf for storing intermediate strings.
val scan_rev_sexps : ?buf:Buffer.t -> Lexing.lexbuf -> t listscan_rev_sexps ?buf lexbuf same as scan_sexps, but returns the reversed list and is slightly more efficient.
val scan_sexp_opt : ?buf:Buffer.t -> Lexing.lexbuf -> t optionscan_sexp_opt ?buf lexbuf is equivalent to scan_sexp ?buf lexbuf except that it returns None when the eof is reached.
val scan_iter_sexps : ?buf:Buffer.t -> f:(t -> unit) -> Lexing.lexbuf -> unitscan_iter_sexps ?buf ~f lexbuf iterates over all whitespace separated S-expressions scanned from lex buffer lexbuf using function f, and the optional string buffer buf for storing intermediate strings.
val scan_fold_sexps : ?buf:Buffer.t -> f:('a -> t -> 'a) -> init:'a -> Lexing.lexbuf -> 'ascan_fold_sexps ?buf ~f ~init lexbuf folds over all whitespace separated S-expressions scanned from lex buffer lexbuf using function f, initial state init, and the optional string buffer buf for storing intermediate strings.
val scan_sexps_conv : ?buf:Buffer.t -> f:(t -> 'a) -> Lexing.lexbuf -> 'a listscan_sexps_conv ?buf ~f lexbuf maps all whitespace separated S-expressions scanned from lex buffer lexbuf to some list using function f, and the optional string buffer buf for storing intermediate strings.
module Parse_pos : sig ... endmodule Cont_state : sig ... endtype ('a, 't) parse_result = ('a, 't) Pre_sexp.parse_result = | Done of 't * Parse_pos.t | (*
|
| Cont of Cont_state.t * ('a, 't) parse_fun | (*
|
Type of result from calling Sexp.parse.
and ('a, 't) parse_fun = pos:int -> len:int -> 'a -> ('a, 't) parse_resultType of parsing functions with given offsets and lengths.
module Annotated : sig ... endModule for parsing S-expressions annotated with location information
type 't parse_state = private 't Pre_sexp.parse_state = {parse_pos : Parse_pos.t; | (* Current parse position *) |
}Type of state maintained during parsing
type parse_error = Pre_sexp.parse_error = {err_msg : string; | (* Reason why parsing failed *) |
parse_state : [ `Sexp of t list list parse_state | `Annot of Annotated.stack parse_state ]; | (* State of parser *) |
}Type of parse errors
exception Parse_error of parse_errorException raised during partial parsing
val parse : ?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, t) parse_resultparse ?parse_pos ?len str (partially) parses an S-expression in string buffer str starting out with position information provided in parse_pos and reading at most len characters. To parse a single atom that is not delimited by whitespace it is necessary to call this function a second time with the returned continuation, and a dummy buffer that contains whitespace.
parse starts parsing str at position parse_pos.buf_pos. Each subsequent parse_fun from a Cont uses the buf and pos that is supplied to it. The final parse_fun that returns Done mutates the buf_pos in the originally supplied parse_pos, and then returns it.
val parse_bigstring : ?parse_pos:Parse_pos.t -> ?len:int -> bigstring -> (bigstring, t) parse_resultparse_bigstring ?parse_pos ?len str same as parse, but operates on bigstrings.
val input_sexp : ?parse_pos:Parse_pos.t -> in_channel -> tinput_sexp ?parse_pos ic parses an S-expression from input channel ic using initial position information in parse_pos. NOTE: this function is not as fast on files as Sexp.load_sexp, and is also slightly slower than the scan-functions. But it is guaranteed that input_sexp is only going to read data parseable as an S-expression. Thus, subsequent input functions will see the data immediately following it.
val input_sexps : ?parse_pos:Parse_pos.t -> ?buf:bytes -> in_channel -> t listinput_sexps ?parse_pos ?buf ic parses whitespace separated S-expressions from input channel ic until EOF is reached. Faster than the scan-functions.
val input_rev_sexps : ?parse_pos:Parse_pos.t -> ?buf:bytes -> in_channel -> t listinput_rev_sexps ?parse_pos ?buf ic same as Sexp.input_sexps, but returns a reversed list of S-expressions, which is slightly more efficient.
val load_sexp : ?strict:bool -> ?buf:bytes -> string -> tload_sexp ?strict ?buf file reads one S-expression from file using buffer buf for storing intermediate data. Faster than the scan-functions.
val load_sexps : ?buf:bytes -> string -> t listload_sexps ?buf file reads a list of whitespace separated S-expressions from file using buffer buf for storing intermediate data. Faster than the scan-functions.
val load_rev_sexps : ?buf:bytes -> string -> t listload_rev_sexps ?buf file same as Sexp.load_sexps, but returns a reversed list of S-expressions, which is slightly more efficient.
val load_sexp_conv : ?strict:bool -> ?buf:bytes -> string -> (t -> 'a) -> 'a Annotated.convload_sexp_conv ?strict ?buf file f like Sexp.load_sexp, but performs a conversion on the fly using f. Performance is equivalent to executing Sexp.load_sexp and performing conversion when there are no errors. In contrast to the plain S-expression loader, this function not only performs the conversion, it will give exact error ranges for conversion errors.
val load_sexp_conv_exn : ?strict:bool -> ?buf:bytes -> string -> (t -> 'a) -> 'aload_sexp_conv_exn ?strict ?buf file f like load_sexp_conv, but returns the converted value or raises Of_sexp_error with exact location information in the case of a conversion error.
val load_sexps_conv : ?buf:bytes -> string -> (t -> 'a) -> 'a Annotated.conv listload_sexps_conv ?buf file f like Sexp.load_sexps, but performs a conversion on the fly using f. Performance is equivalent to executing Sexp.load_sexps and performing conversion when there are no errors. In contrast to the plain S-expression loader, this function not only performs the conversion, it will give exact error ranges for conversion errors.
val load_sexps_conv_exn : ?buf:bytes -> string -> (t -> 'a) -> 'a listload_sexps_conv_exn ?buf file f like load_sexps_conv, but returns the converted value or raises Of_sexp_error with exact location information in the case of a conversion error.
NOTE: for performance reasons these output functions may need to allocate large strings to write out huge S-expressions. This may cause problems on 32-bit platforms. If you think that you may need to write huge S-expressions on such platforms, you might want to use the pretty-printers that write to formatters instead (see further below).
val output_hum : out_channel -> t -> unitoutput_hum oc sexp outputs S-expression sexp to output channel oc in human readable form.
val output_hum_indent : int -> out_channel -> t -> unitoutput_hum_indent indent oc sexp outputs S-expression sexp to output channel oc in human readable form using indentation level indent.
val output_mach : out_channel -> t -> unitoutput_mach oc sexp outputs S-expression sexp to output channel oc in machine readable (i.e. most compact) form.
val output : out_channel -> t -> unitoutput oc sexp same as output_mach.
All save-functions write to a temporary file before moving it into place to avoid intermittent garbling of existing files, which may cause problems for other processes that try to read.
val save_hum : ?perm:int -> string -> t -> unitsave_hum ?perm file sexp outputs S-expression sexp to file in human readable form.
val save_mach : ?perm:int -> string -> t -> unitsave_mach ?perm file sexp outputs S-expression sexp to file in machine readable (i.e. most compact) form.
val save_sexps_hum : ?perm:int -> string -> t list -> unitsave_sexps_hum ?perm file sexps outputs S-expression list sexps to file in human readable form, each sexp being followed by a newline.
val save_sexps_mach : ?perm:int -> string -> t list -> unitsave_sexps_mach ?perm file sexps outputs S-expression list sexps to file in machine readable form, each sexp being followed by a newline.
val save_sexps : ?perm:int -> string -> t list -> unitsave_sexps ?perm file sexp same as save_sexps_mach.
val pp_hum : Format.formatter -> t -> unitpp_hum ppf sexp outputs S-expression sexp to formatter ppf in human readable form.
val pp_hum_indent : int -> Format.formatter -> t -> unitpp_hum_indent n ppf sexp outputs S-expression sexp to formatter ppf in human readable form and indentation level n.
val pp_mach : Format.formatter -> t -> unitpp_mach ppf sexp outputs S-expression sexp to formatter ppf in machine readable (i.e. most compact) form.
val pp : Format.formatter -> t -> unitpp ppf sexp same as pp_mach.
module Of_string_conv_exn : sig ... endModule encapsulating the exception raised by string converters when type conversions fail.
val of_string : string -> tof_string str converts string str to an S-expression. NOTE: trailing whitespace is considered an error, which may be overly strict for some applications. Either strip the string of trailing whitespace first, or, even cheaper, use parse instead.
val of_string_conv : string -> (t -> 'a) -> 'a Annotated.convof_string_conv str conv like of_string, but performs type conversion with conv.
val of_string_conv_exn : string -> (t -> 'a) -> 'aof_string_conv_exn str conv like of_string_conv, but raises Of_string_conv_exn.E if type conversion fails.
val of_bigstring_conv : bigstring -> (t -> 'a) -> 'a Annotated.convof_bigstring_conv bstr conv like of_bigstring, but performs type conversion with conv.
of_bigstring_conv_exn bstr conv like of_bigstring_conv, but raises Of_string_conv_exn.E if type conversion fails.
val to_string_hum : ?indent:int -> t -> stringto_string_hum ?indent sexp converts S-expression sexp to a string in human readable form with indentation level indent.
val to_string_mach : t -> stringto_string_mach sexp converts S-expression sexp to a string in machine readable (i.e. most compact) form.
val to_string : t -> stringto_string sexp same as to_string_mach.
to_buffer_hum ~buf ?indent sexp outputs the S-expression sexp converted to a string in human readable form to buffer buf.
to_buffer_mach ~buf sexp outputs the S-expression sexp converted to a string in machine readable (i.e. most compact) form to buffer buf.
to_buffer ~buf sexp same as to_buffer_mach.
val to_buffer_gen : buf:'buffer -> add_char:('buffer -> char -> unit) ->
add_string:('buffer -> string -> unit) -> t -> unitto_buffer_gen ~buf ~add_char ~add_string sexp outputs the S-expression sexp converted to a string to buffer buf using the output functions add_char and add_string.
val unit : tunit the unit-value as expressed by an S-expression.
val is_unit : t -> boolsexp_of_t sexp maps S-expressions which are part of a type with automated S-expression conversion to themselves.
t_of_sexp sexp maps S-expressions which are part of a type with automated S-expression conversion to themselves.
val t_sexp_grammar : Sexplib0.Private.Raw_grammar.tType of successful search results. `Found means that an S-expression was found at the immediate position, and `Pos (pos,
found) indicates that it was found at position pos within a structure (= S-expression list) where found describes recursively where it was found in that structure.
Type of search results. `Not_found means that an S-expression was not found within another S-expression.
val search_physical : t -> contained:t -> search_resultsearch_physical sexp ~contained
module With_layout : sig ... endS-expressions annotated with relative source positions and comments