sig
  type pos = Src_pos.Relative.t = { row : int; col : int; }
  val sexp_of_pos : Sexp_intf.S.With_layout.pos -> Type.t
  type t =
      Atom of Sexp_intf.S.With_layout.pos * string * string option
    | List of Sexp_intf.S.With_layout.pos *
        Sexp_intf.S.With_layout.t_or_comment list *
        Sexp_intf.S.With_layout.pos
  and t_or_comment =
      Sexp of Sexp_intf.S.With_layout.t
    | Comment of Sexp_intf.S.With_layout.comment
  and comment =
      Plain_comment of Sexp_intf.S.With_layout.pos * string
    | Sexp_comment of Sexp_intf.S.With_layout.pos *
        Sexp_intf.S.With_layout.comment list * Sexp_intf.S.With_layout.t
  val sexp_of_t : Sexp_intf.S.With_layout.t -> Type.t
  val sexp_of_comment : Sexp_intf.S.With_layout.comment -> Type.t
  val sexp_of_t_or_comment : Sexp_intf.S.With_layout.t_or_comment -> Type.t
  module Forget :
    sig
      val t : Sexp_intf.S.With_layout.t -> Type.t
      val t_or_comment :
        Sexp_intf.S.With_layout.t_or_comment -> Type.t option
      val t_or_comments :
        Sexp_intf.S.With_layout.t_or_comment list -> Type.t list
    end
  module Render :
    sig
      type 'a t
      val return : '-> 'Sexp_intf.S.With_layout.Render.t
      val bind :
        'Sexp_intf.S.With_layout.Render.t ->
        ('-> 'Sexp_intf.S.With_layout.Render.t) ->
        'Sexp_intf.S.With_layout.Render.t
      val sexp :
        Sexp_intf.S.With_layout.t_or_comment ->
        unit Sexp_intf.S.With_layout.Render.t
      val run :
        (char -> unit) -> unit Sexp_intf.S.With_layout.Render.t -> unit
    end
  module Parser :
    sig
      type token
      val sexp :
        (Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token) ->
        Lexing.lexbuf -> Sexp_intf.S.With_layout.t_or_comment
      val sexp_opt :
        (Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token) ->
        Lexing.lexbuf -> Sexp_intf.S.With_layout.t_or_comment option
      val sexps :
        (Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token) ->
        Lexing.lexbuf -> Sexp_intf.S.With_layout.t_or_comment list
      val rev_sexps :
        (Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token) ->
        Lexing.lexbuf -> Sexp_intf.S.With_layout.t_or_comment list
      val sexps_abs :
        (Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token) ->
        Lexing.lexbuf -> Type_with_layout.Parsed.t_or_comment list
    end
  module Lexer :
    sig
      val main :
        ?buf:Buffer.t ->
        Lexing.lexbuf -> Sexp_intf.S.With_layout.Parser.token
    end
end