Module CCSexp

Handling S-expressions

type 'a or_error = ('a, string) Result.result
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option

Basics

type t = [
| `Atom of string
| `List of t list
]
type sexp = t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
val atom : string ‑> t

Build an atom directly from a string.

val of_int : int ‑> t
val of_bool : bool ‑> t
val of_list : t list ‑> t
val of_rev_list : t list ‑> t

Reverse the list.

val of_float : float ‑> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) ‑> t
val of_triple : (t * t * t) ‑> t
val of_quad : (t * t * t * t) ‑> t
val of_variant : string ‑> t list ‑> t

of_variant name args is used to encode algebraic variants into a S-expr. For instance of_variant "some" [of_int 1] represents the value Some 1.

val of_field : string ‑> t ‑> t

Used to represent one record field.

val of_record : (string * t) list ‑> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t ‑> t ‑> unit
val to_string : t ‑> string
val to_file : string ‑> t ‑> unit
val to_file_seq : string ‑> t sequence ‑> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel ‑> t ‑> unit
val pp : Format.formatter ‑> t ‑> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter ‑> t ‑> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, or Fail e when a parse error was encountered, or End if the input was empty.

module Decoder : sig ... end
val parse_string : string ‑> t or_error

Parse a string.

val parse_chan : Pervasives.in_channel ‑> t or_error

Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel ‑> t or_error gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel ‑> t list or_error
val parse_file : string ‑> t or_error

Open the file and read a S-exp from it.

val parse_file_list : string ‑> t list or_error

Open the file and read a S-exp from it.