33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
Csexp - Canonical S-expressions
|
|
===============================
|
|
|
|
This project provides minimal support for parsing and printing
|
|
[S-expressions in canonical form][wikipedia], which is a very simple
|
|
and canonical binary encoding of S-expressions.
|
|
|
|
[wikipedia]: https://en.wikipedia.org/wiki/Canonical_S-expressions
|
|
|
|
Example
|
|
-------
|
|
|
|
```ocaml
|
|
# #require "csexp";;
|
|
# module Sexp = struct type t = Atom of string | List of t list end;;
|
|
module Sexp : sig type t = Atom of string | List of t list end
|
|
# module Csexp = Csexp.Make(Sexp);;
|
|
module Csexp :
|
|
sig
|
|
val parse_string : string -> (Sexp.t, int * string) result
|
|
val parse_string_many : string -> (Sexp.t list, int * string) result
|
|
val input : in_channel -> (Sexp.t, string) result
|
|
val input_opt : in_channel -> (Sexp.t option, string) result
|
|
val input_many : in_channel -> (Sexp.t list, string) result
|
|
val serialised_length : Sexp.t -> int
|
|
val to_string : Sexp.t -> string
|
|
val to_buffer : Buffer.t -> Sexp.t -> unit
|
|
val to_channel : out_channel -> Sexp.t -> unit
|
|
end
|
|
# Csexp.to_string (List [ Atom "Hello"; Atom "world!" ]);;
|
|
- : string = "(5:Hello6:world!)"
|
|
```
|
|
|