mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
8 lines
No EOL
15 KiB
HTML
8 lines
No EOL
15 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCSexp (containers.CCSexp)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCSexp</span></h1></header><h2>Handling S-expressions</h2><div class="spec type" id="type-or_error"><a href="#type-or_error" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a or_error</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span>, string) Result.result</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a sequence</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><h3>Basics</h3><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><span class="keyword"> = </span><code>[ </code><table class="variant"><tr id="type-t.Atom" class="anchored"><td class="def constructor"><a href="#type-t.Atom" class="anchor"></a><code><span class="keyword">| </span></code><code>`Atom<span class="keyword"> of </span>string</code></td></tr><tr id="type-t.List" class="anchored"><td class="def constructor"><a href="#type-t.List" class="anchor"></a><code><span class="keyword">| </span></code><code>`List<span class="keyword"> of </span><a href="index.html#type-t">t</a> list</code></td></tr></table><code> ]</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-sexp"><a href="#type-sexp" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>sexp</code><code><span class="keyword"> = </span><a href="index.html#type-t">t</a></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-hash"><a href="#val-hash" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-atom"><a href="#val-atom" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>atom : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Build an atom directly from a string.</p></div></div><div class="spec val" id="val-of_int"><a href="#val-of_int" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_int : int <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_bool"><a href="#val-of_bool" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_bool : bool <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_list"><a href="#val-of_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_list : <a href="index.html#type-t">t</a> list <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_rev_list"><a href="#val-of_rev_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_rev_list : <a href="index.html#type-t">t</a> list <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Reverse the list.</p></div></div><div class="spec val" id="val-of_float"><a href="#val-of_float" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_float : float <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Reverse the list.</p></div></div><div class="spec val" id="val-of_unit"><a href="#val-of_unit" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_unit : <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_pair"><a href="#val-of_pair" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_pair : (<a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_triple"><a href="#val-of_triple" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_triple : (<a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_quad"><a href="#val-of_quad" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_quad : (<a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a><span class="keyword"> * </span><a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_variant"><a href="#val-of_variant" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_variant : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> list <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">of_variant name args</code> is used to encode algebraic variants
|
||
into a S-expr. For instance <code class="code">of_variant "some" [of_int 1]</code>
|
||
represents the value <code class="code">Some 1</code>.</p></div></div><div class="spec val" id="val-of_field"><a href="#val-of_field" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_field : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Used to represent one record field.</p></div></div><div class="spec val" id="val-of_record"><a href="#val-of_record" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_record : (string<span class="keyword"> * </span><a href="index.html#type-t">t</a>) list <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Represent a record by its named fields.</p></div></div><h3>Printing</h3><div class="spec val" id="val-to_buf"><a href="#val-to_buf" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_buf : Buffer.t <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-to_string"><a href="#val-to_string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_string : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> string</code></div><div class="doc"></div></div><div class="spec val" id="val-to_file"><a href="#val-to_file" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_file : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-to_file_seq"><a href="#val-to_file_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_file_seq : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <a href="index.html#type-sequence">sequence</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Print the given sequence of expressions to a file.</p></div></div><div class="spec val" id="val-to_chan"><a href="#val-to_chan" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_chan : Pervasives.out_channel <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : Format.formatter <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Pretty-printer nice on human eyes (including indentation).</p></div></div><div class="spec val" id="val-pp_noindent"><a href="#val-pp_noindent" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_noindent : Format.formatter <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Raw, direct printing as compact as possible.</p></div></div><h3>Parsing</h3><div class="spec type" id="type-parse_result"><a href="#type-parse_result" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a parse_result</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-parse_result.Yield" class="anchored"><td class="def constructor"><a href="#type-parse_result.Yield" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Yield</span><span class="keyword"> of </span><span class="type-var">'a</span></code></td></tr><tr id="type-parse_result.Fail" class="anchored"><td class="def constructor"><a href="#type-parse_result.Fail" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Fail</span><span class="keyword"> of </span>string</code></td></tr><tr id="type-parse_result.End" class="anchored"><td class="def constructor"><a href="#type-parse_result.End" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">End</span></code></td></tr></table><code></code></div><div class="doc"><p>A parser of <code class="code">'a</code> can return <code class="code">Yield x</code> when it parsed a value,
|
||
or <code class="code">Fail e</code> when a parse error was encountered, or
|
||
<code class="code">End</code> if the input was empty.</p></div></div><div class="spec module" id="module-Decoder"><a href="#module-Decoder" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Decoder/index.html">Decoder</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec val" id="val-parse_string"><a href="#val-parse_string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_string : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <a href="index.html#type-or_error">or_error</a></code></div><div class="doc"><p>Parse a string.</p></div></div><div class="spec val" id="val-parse_chan"><a href="#val-parse_chan" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_chan : Pervasives.in_channel <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <a href="index.html#type-or_error">or_error</a></code></div><div class="doc"><p>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 <b>after</b> the S-exp).</p></div></div><div class="spec val" id="val-parse_chan_gen"><a href="#val-parse_chan_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_chan_gen : Pervasives.in_channel <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <a href="index.html#type-or_error">or_error</a> <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p>Parse a channel into a generator of S-expressions.</p></div></div><div class="spec val" id="val-parse_chan_list"><a href="#val-parse_chan_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_chan_list : Pervasives.in_channel <span class="keyword">‑></span> <a href="index.html#type-t">t</a> list <a href="index.html#type-or_error">or_error</a></code></div><div class="doc"></div></div><div class="spec val" id="val-parse_file"><a href="#val-parse_file" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_file : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <a href="index.html#type-or_error">or_error</a></code></div><div class="doc"><p>Open the file and read a S-exp from it.</p></div></div><div class="spec val" id="val-parse_file_list"><a href="#val-parse_file_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>parse_file_list : string <span class="keyword">‑></span> <a href="index.html#type-t">t</a> list <a href="index.html#type-or_error">or_error</a></code></div><div class="doc"><p>Open the file and read a S-exp from it.</p></div></div></body></html> |