module type S = sig .. end
type Type.t = 
| | | Atom of string | 
| | | List of t list | 
Type of S-expressions
type (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t 
Type of bigstrings
Defaults
val default_indent : int Pervasives.ref
default_indent reference to default indentation level for
      human-readable conversions.  Initialisation value: 2.
S-expression size
val size : t -> int * int
size sexp
Returns (n_atoms, n_chars), where n_atoms is
      the number of atoms in S-expression sexp, and n_chars is the
      number of characters in the atoms of the S-expression.
Scan functions
val scan_sexp : ?buf:Buffer.t -> Lexing.lexbuf -> t
scan_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 list
scan_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 list
scan_rev_sexps ?buf lexbuf same as 
Sexp_intf.S.scan_sexps, but returns the
      reversed list and is slightly more efficient.
 
val scan_sexp_opt : ?buf:Buffer.t -> Lexing.lexbuf -> t option
scan_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 -> unit
scan_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 -> 'a
scan_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 list
scan_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.
Type and exception definitions for (partial) parsing
module Parse_pos: sig .. end
module Cont_state: sig .. end
type ('a, 't) parse_result = ('a, 't) Pre_sexp.parse_result = 
Type of result from calling Sexp.parse.
type ('a, 't) parse_fun = pos:int -> len:int -> 'a -> ('a, 't) parse_result 
Type of parsing functions with given offsets and lengths.
module Annotated: sig .. end
Module for parsing S-expressions annotated with location information
type 't parse_state = private 't Pre_sexp.parse_state = private {
|    | parse_pos :Parse_pos.t; | 
|    | mutable pstack :'t; | 
|    | pbuf :Buffer.t; | 
}
Type of state maintained during parsing
type Pre_sexp.parse_error = {
}
Type of parse errors
exception Parse_error of parse_error
Exception raised during partial parsing
Unannotated (partial) parsing
val parse : ?parse_pos:Parse_pos.t ->
       ?len:int -> string -> (string, t) parse_result
parse ?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_pos : default = Parse_pos.create ()
len : default = String.length str - parse_pos.Parse_pos.buf_pos
val parse_bigstring : ?parse_pos:Parse_pos.t ->
       ?len:int ->
       bigstring ->
       (bigstring, t) parse_result
parse_bigstring ?parse_pos ?len str same as 
Sexp_intf.S.parse, but operates on
      bigstrings.
 
val input_sexp : ?parse_pos:Parse_pos.t -> Pervasives.in_channel -> t
input_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.
parse_pos : default = Parse_pos.create ()
val input_sexps : ?parse_pos:Parse_pos.t ->
       ?buf:string -> Pervasives.in_channel -> t list
input_sexps ?parse_pos ?buf ic parses whitespace separated
      S-expressions from input channel ic until EOF is reached.  Faster than
      the scan-functions.
parse_pos : default = Parse_pos.create ()
val input_rev_sexps : ?parse_pos:Parse_pos.t ->
       ?buf:string -> Pervasives.in_channel -> t list
input_rev_sexps ?parse_pos ?buf ic same as Sexp.input_sexps,
      but returns a reversed list of S-expressions, which is slightly more
      efficient.
Loading of (converted) S-expressions
val load_sexp : ?strict:bool -> ?buf:string -> string -> t
load_sexp ?strict ?buf file reads one S-expression from 
file using
      buffer 
buf for storing intermediate data.  Faster than the
      scan-functions.
Raises- Parse_errorif the S-expression is unparseable.
- Failureif parsing reached the end of file before one S-expression
      could be read.
- Failureif- strictis true and there is more than one
      S-expression in the file.
 
strict : default = true
val load_sexps : ?buf:string -> string -> t list
load_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.
Raises- Parse_errorif there is unparseable data in the file.
- Failureif parsing reached the end of file before the last
      S-expression could be fully read.
 
val load_rev_sexps : ?buf:string -> string -> t list
load_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:string ->
       string -> (t -> 'a) -> 'a Annotated.conv
load_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.
Raises- Parse_errorif there is unparseable data in the file.
- Failureif parsing reached the end of file before the last
      S-expression could be fully read.
 
val load_sexp_conv_exn : ?strict:bool -> ?buf:string -> string -> (t -> 'a) -> 'a
load_sexp_conv_exn ?strict ?buf file f like 
Sexp_intf.S.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:string ->
       string -> (t -> 'a) -> 'a Annotated.conv list
load_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.
Raises- Parse_errorif there is unparseable data in the file.
- Failureif parsing reached the end of file before the last
      S-expression could be fully read.
 
val load_sexps_conv_exn : ?buf:string -> string -> (t -> 'a) -> 'a list
load_sexps_conv_exn ?buf file f like 
Sexp_intf.S.load_sexps_conv, but returns
      the converted value or raises 
Of_sexp_error with exact location
      information in the case of a conversion error.
 
Output of S-expressions to I/O-channels
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 : Pervasives.out_channel -> t -> unit
output_hum oc sexp outputs S-expression sexp to output channel
      oc in human readable form.
val output_hum_indent : int -> Pervasives.out_channel -> t -> unit
output_hum_indent indent oc sexp outputs S-expression sexp
      to output channel oc in human readable form using indentation level
      indent.
val output_mach : Pervasives.out_channel -> t -> unit
output_mach oc sexp outputs S-expression sexp to output channel
      oc in machine readable (i.e. most compact) form.
val output : Pervasives.out_channel -> t -> unit
output oc sexp same as output_mach.
Output of S-expressions to file
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 -> unit
save_hum ?perm file sexp outputs S-expression sexp to file in human
      readable form.
perm : default = umask
val save_mach : ?perm:int -> string -> t -> unit
save_mach ?perm file sexp outputs S-expression sexp to file
      in machine readable (i.e. most compact) form.
perm : default = umask
val save : ?perm:int -> string -> t -> unit
val save_sexps_hum : ?perm:int -> string -> t list -> unit
save_sexps_hum ?perm file sexps outputs S-expression list sexps to
      file in human readable form, each sexp being followed by a newline.
perm : default = umask
val save_sexps_mach : ?perm:int -> string -> t list -> unit
save_sexps_mach ?perm file sexps outputs S-expression list sexps to
      file in machine readable form, each sexp being followed by a
      newline.
perm : default = umask
val save_sexps : ?perm:int -> string -> t list -> unit
val pp_hum : Format.formatter -> t -> unit
pp_hum ppf sexp outputs S-expression sexp to formatter ppf
      in human readable form.
val pp_hum_indent : int -> Format.formatter -> t -> unit
pp_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 -> unit
pp_mach ppf sexp outputs S-expression sexp to formatter ppf
      in machine readable (i.e. most compact) form.
val pp : Format.formatter -> t -> unit
pp ppf sexp same as pp_mach.
String and bigstring conversions
module Of_string_conv_exn: sig .. end
Module encapsulating the exception raised by string converters when
      type conversions fail.
val of_string : string -> t
of_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 
Sexp_intf.S.parse instead.
 
val of_string_conv : string -> (t -> 'a) -> 'a Annotated.conv
of_string_conv str conv like 
Sexp_intf.S.of_string, but performs type conversion
      with 
conv.
Returns conversion result.
 
val of_string_conv_exn : string -> (t -> 'a) -> 'a
val of_bigstring : bigstring -> t
val of_bigstring_conv : bigstring ->
       (t -> 'a) -> 'a Annotated.conv
of_bigstring_conv bstr conv like 
Sexp_intf.S.of_bigstring, but performs
      type conversion with 
conv.
Returns conversion result.
 
val of_bigstring_conv_exn : bigstring -> (t -> 'a) -> 'a
val to_string_hum : ?indent:int -> t -> string
to_string_hum ?indent sexp converts S-expression sexp to a
      string in human readable form with indentation level indent.
indent : default = !default_indent
val to_string_mach : t -> string
to_string_mach sexp converts S-expression sexp to a string in
      machine readable (i.e. most compact) form.
val to_string : t -> string
to_string sexp same as to_string_mach.
Buffer conversions
val to_buffer_hum : buf:Buffer.t -> ?indent:int -> t -> unit
to_buffer_hum ~buf ?indent sexp outputs the S-expression sexp
      converted to a string in human readable form to buffer buf.
indent : default = !default_indent
val to_buffer_mach : buf:Buffer.t -> t -> unit
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.
val to_buffer : buf:Buffer.t -> t -> unit
val to_buffer_gen : buf:'buffer ->
       add_char:('buffer -> char -> unit) ->
       add_string:('buffer -> string -> unit) -> t -> unit
to_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.
Utilities for automated type conversions
val unit : t
unit the unit-value as expressed by an S-expression.
val sexp_of_t : t -> t
sexp_of_t sexp maps S-expressions which are part of a type with
      automated S-expression conversion to themselves.
val t_of_sexp : t -> t
t_of_sexp sexp maps S-expressions which are part of a type with
      automated S-expression conversion to themselves.
Utilities for conversion error handling
type [ `Found | `Pos of int * found ] 
Type 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 [ `Found | `Not_found | `Pos of int * found ] 
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_result
search_physical sexp ~contained
Returns the search result
      indicating whether, and if, where the S-expression contained
      was found within S-expression sexp.
val subst_found : t -> subst:t -> found -> t
subst_found sexp ~subst found
Returns the S-expression that
      results from substituting subst within S-expression sexp
      at the location described by found.
module With_layout: sig .. end
S-expressions annotated with relative source positions and comments