Concrete syntax tree of s-expressions

This module exposes a type that describe the full contents of a source file containing s-expressions.

One can use this type to do low-level rewriting of s-expression files.

`type t````=`

`|` `Atom of` `{`
`loc : Positions.range;`
`atom : string;` | (** Original unescaped atom, in case it is a double-quoted atom. The string includes the enclosing double quotes. *)
`unescaped : string option;`
`}```
`|` `List of` `{`
`loc : Positions.range;`
`elements : t_or_comment list;`
`}```

``
`type t_or_comment````=`

`|` `Sexp of t`
`|` `Comment of comment`

``
`type comment````=`

`|` `Plain_comment of` `{`
`loc : Positions.range;`
`comment : string;`
`}``` | (** Line or block comment *)
`|` `Sexp_comment of` `{`
`hash_semi_pos : Positions.pos;`
`comments : comment list;`
`sexp : t;`
`}```

``
`include sig ... end`
`val compare : t ‑> t ‑> int`
`val compare_t_or_comment : t_or_comment ‑> t_or_comment ‑> int`
`val compare_comment : comment ‑> comment ‑> int`
`val sexp_of_t : t ‑> Parsexp__.Import.Ppx_sexp_conv_lib.Sexp.t`
`val sexp_of_t_or_comment : t_or_comment ‑> Parsexp__.Import.Ppx_sexp_conv_lib.Sexp.t`
`val sexp_of_comment : comment ‑> Parsexp__.Import.Ppx_sexp_conv_lib.Sexp.t`
`module Forget : sig ... end`