(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* <O___,, * (see version control and CREDITS file for authors & dates) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************)
(* XXX: Improve and add attributes *) type pp_tag = string
(* Following discussion on #390, we play on the safe side and make the
internal representation opaque here. *) type t
type block_type =
| Pp_hbox
| Pp_vbox of int
| Pp_hvbox of int
| Pp_hovbox of int (** [Pp_hovbox] produces boxes according to [Format.open_box] not [Format.open_hovbox] *)
type doc_view =
| Ppcmd_empty
| Ppcmd_string ofstring
| Ppcmd_sized_string of int * string
| Ppcmd_glue of t list
| Ppcmd_box of block_type * t
| Ppcmd_tag of pp_tag * t (* Are those redundant? *)
| Ppcmd_print_break of int * int
| Ppcmd_force_newline
| Ppcmd_comment ofstringlist
val repr : t -> doc_view val unrepr : doc_view -> t
(** {6 Formatting commands} *)
val str : string -> t val brk : int * int -> t val fnl : unit -> t val ws : int -> t val mt : unit -> t val ismt : t -> bool
val comment : stringlist -> t
val fmt : ('a, unit, t) format -> 'a (** complex formatting *)
(** {6 Manipulation commands} *)
valapp : t -> t -> t (** Concatenation. *)
val seq : t list -> t (** Multi-Concatenation. *)
val (++) : t -> t -> t (** Infix alias for [app]. *)
(** {6 Derived commands} *)
val spc : unit -> t val cut : unit -> t val align : unit -> t val int : int -> t val int64 : Int64.t -> t val real : float -> t valbool : bool -> t val qstring : string -> t val qs : string -> t val quote : t -> t val strbrk : string -> t
(** {6 Boxing commands} *)
val h : t -> t val v : int -> t -> t val hv : int -> t -> t val hov : int -> t -> t (** [hov] produces boxes according to [Format.open_box] not [Format.open_hovbox] *)
(** {6 Tagging} *)
val tag : pp_tag -> t -> t
(** {6 Printing combinators} *)
val pr_comma : unit -> t (** Well-spaced comma. *)
val pr_semicolon : unit -> t (** Well-spaced semicolon. *)
val pr_bar : unit -> t (** Well-spaced pipe bar. *)
val pr_spcbar : unit -> t (** Pipe bar with space before and after. *)
val pr_arg : ('a -> t) -> 'a -> t (** Adds a space in front of its argument. *)
val pr_non_empty_arg : ('a -> t) -> 'a -> t (** Adds a space in front of its argument if non empty. *)
val pr_opt : ('a -> t) -> 'a option -> t (** Inner object preceded with a space if [Some], nothing otherwise. *)
val pr_opt_no_spc : ('a -> t) -> 'a option -> t (** Same as [pr_opt] but without the leading space. *)
val pr_opt_default : (unit -> t) -> ('a -> t) -> 'a option -> t (** Prints [pr v] if [ov] is [Some v], else [prdf ()]. *)
val pr_opt_no_spc_default : (unit -> t) -> ('a -> t) -> 'a option -> t (** Same as [pr_opt_default] but without the leading space. *)
val pr_nth : int -> t (** Ordinal number with the correct suffix (i.e. "st", "nd", "th", etc.). *)
val prlist : ('a -> t) -> 'a list -> t (** Concatenation of the list contents, without any separator.
Unlikeallotherfunctionsbelow,[prlist]workslazily.Ifastrict
behavior is needed, use [prlist_strict] instead. *)
val prlist_strict : ('a -> t) -> 'a list -> t (** Same as [prlist], but strict. *)
val prlist_with_sep :
(unit -> t) -> ('a -> t) -> 'a list -> t (** [prlist_with_sep sep pr [a ; ... ; c]] outputs [pra++sep()++...++sep()++prc]. wherethethunksepismemoized,ratherthanbeingcalledeachplace itsresultisused.
*)
val prvect : ('a -> t) -> 'a array -> t (** As [prlist], but on arrays. *)
val prvecti : (int -> 'a -> t) -> 'a array -> t (** Indexed version of [prvect]. *)
val prvect_with_sep :
(unit -> t) -> ('a -> t) -> 'a array -> t (** As [prlist_with_sep], but on arrays. *)
val prvecti_with_sep :
(unit -> t) -> (int -> 'a -> t) -> 'a array -> t (** Indexed version of [prvect_with_sep]. *)
val pr_enum : ('a -> t) -> 'a list -> t (** [pr_enum pr [a ; b ; ... ; c]] outputs
[pr a ++ str "," ++ spc () ++ pr b ++ str "," ++ spc () ++ ... ++ str "and" ++ spc () ++ pr c]. *)
val pr_choice : ('a -> t) -> 'a list -> t (** [pr_choice pr [a ; b ; ... ; c]] outputs
[pr a ++ str "," ++ spc () ++ pr b ++ str "," ++ spc () ++ ... ++ str "or" ++ spc () ++ pr c]. *)
val pr_sequence : ('a -> t) -> 'a list -> t (** Sequence of objects separated by space (unless an element is empty). *)
val surround : t -> t (** Surround with parenthesis. *)
val pr_vertical_list : ('b -> t) -> 'b list -> t
(** {6 Main renderers, to formatter and to string } *)
(** [pp_with fmt pp] Print [pp] to [fmt] and don't flush [fmt] *) val pp_with : Format.formatter -> t -> unit
val string_of_ppcmds : t -> string
(** Tag prefix to start a multi-token diff span *) val start_pfx : string
(** Tag prefix to end a multi-token diff span *) val end_pfx : string
(** Split a tag into prefix and base tag *) val split_tag : string -> string * string
(** Print the Pp in tree form for debugging *) val db_print_pp : Format.formatter -> t -> unit
(** Print the Pp in tree form for debugging, return as a string *) val db_string_of_pp : t -> string
(** Returns [fmt, args] such that [fmt] is a format string which appliedto[args]producesthesameresultas[pp_with].
[with_tags] default false. *) val pp_as_format : ?with_tags:bool -> t -> string * stringlist
(** Combine nested Ppcmd_glues *) val flatten : t -> t
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-09-27)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.