sig
  val init : unit -> unit
  val warn_bad_docstrings : unit -> unit
  type docstring
  val docstring : string -> Location.t -> Docstrings.docstring
  val register : Docstrings.docstring -> unit
  val docstring_body : Docstrings.docstring -> string
  val docstring_loc : Docstrings.docstring -> Location.t
  val set_pre_docstrings :
    Stdlib.Lexing.position -> Docstrings.docstring list -> unit
  val set_post_docstrings :
    Stdlib.Lexing.position -> Docstrings.docstring list -> unit
  val set_floating_docstrings :
    Stdlib.Lexing.position -> Docstrings.docstring list -> unit
  val set_pre_extra_docstrings :
    Stdlib.Lexing.position -> Docstrings.docstring list -> unit
  val set_post_extra_docstrings :
    Stdlib.Lexing.position -> Docstrings.docstring list -> unit
  type docs = {
    docs_pre : Docstrings.docstring option;
    docs_post : Docstrings.docstring option;
  }
  val empty_docs : Docstrings.docs
  val docs_attr : Docstrings.docstring -> Parsetree.attribute
  val add_docs_attrs :
    Docstrings.docs -> Parsetree.attributes -> Parsetree.attributes
  val symbol_docs : unit -> Docstrings.docs
  val symbol_docs_lazy : unit -> Docstrings.docs Stdlib.Lazy.t
  val rhs_docs : int -> int -> Docstrings.docs
  val rhs_docs_lazy : int -> int -> Docstrings.docs Stdlib.Lazy.t
  val mark_symbol_docs : unit -> unit
  val mark_rhs_docs : int -> int -> unit
  type info = Docstrings.docstring option
  val empty_info : Docstrings.info
  val info_attr : Docstrings.docstring -> Parsetree.attribute
  val add_info_attrs :
    Docstrings.info -> Parsetree.attributes -> Parsetree.attributes
  val symbol_info : unit -> Docstrings.info
  val rhs_info : int -> Docstrings.info
  type text = Docstrings.docstring list
  val empty_text : Docstrings.text
  val empty_text_lazy : Docstrings.text Stdlib.Lazy.t
  val text_attr : Docstrings.docstring -> Parsetree.attribute
  val add_text_attrs :
    Docstrings.text -> Parsetree.attributes -> Parsetree.attributes
  val symbol_text : unit -> Docstrings.text
  val symbol_text_lazy : unit -> Docstrings.text Stdlib.Lazy.t
  val rhs_text : int -> Docstrings.text
  val rhs_text_lazy : int -> Docstrings.text Stdlib.Lazy.t
  val symbol_pre_extra_text : unit -> Docstrings.text
  val symbol_post_extra_text : unit -> Docstrings.text
  val rhs_pre_extra_text : int -> Docstrings.text
  val rhs_post_extra_text : int -> Docstrings.text
  val rhs_post_text : int -> Docstrings.text
  module WithMenhir :
    sig
      val symbol_docs :
        Stdlib.Lexing.position * Stdlib.Lexing.position -> Docstrings.docs
      val symbol_docs_lazy :
        Stdlib.Lexing.position * Stdlib.Lexing.position ->
        Docstrings.docs Stdlib.Lazy.t
      val rhs_docs :
        Stdlib.Lexing.position -> Stdlib.Lexing.position -> Docstrings.docs
      val rhs_docs_lazy :
        Stdlib.Lexing.position ->
        Stdlib.Lexing.position -> Docstrings.docs Stdlib.Lazy.t
      val mark_symbol_docs :
        Stdlib.Lexing.position * Stdlib.Lexing.position -> unit
      val mark_rhs_docs :
        Stdlib.Lexing.position -> Stdlib.Lexing.position -> unit
      val symbol_info : Stdlib.Lexing.position -> Docstrings.info
      val rhs_info : Stdlib.Lexing.position -> Docstrings.info
      val symbol_text : Stdlib.Lexing.position -> Docstrings.text
      val symbol_text_lazy :
        Stdlib.Lexing.position -> Docstrings.text Stdlib.Lazy.t
      val rhs_text : Stdlib.Lexing.position -> Docstrings.text
      val rhs_text_lazy :
        Stdlib.Lexing.position -> Docstrings.text Stdlib.Lazy.t
      val symbol_pre_extra_text : Stdlib.Lexing.position -> Docstrings.text
      val symbol_post_extra_text : Stdlib.Lexing.position -> Docstrings.text
      val rhs_pre_extra_text : Stdlib.Lexing.position -> Docstrings.text
      val rhs_post_extra_text : Stdlib.Lexing.position -> Docstrings.text
      val rhs_post_text : Stdlib.Lexing.position -> Docstrings.text
    end
end