diff options
| author | Regis-Gianas | 2014-10-30 22:31:27 +0100 |
|---|---|---|
| committer | Regis-Gianas | 2014-11-04 22:51:35 +0100 |
| commit | 2656c62e9be7a856f12c0da0740869d193273c4d (patch) | |
| tree | 96792a9ccb608e795857f784bc6373eebfd4635c /printing/ppconstr.mli | |
| parent | 0aa24d51d2606549da87ed42085f612f2dbb1428 (diff) | |
Ppannotation: New.
Define the annotations stored in semi-structured pretty-prints.
Ppconstrsig: New.
Contains the signature of a pretty-printer for ppconstr.
Ppconstr: Export a new rich pretty-printer for constr_expr and co.
Diffstat (limited to 'printing/ppconstr.mli')
| -rw-r--r-- | printing/ppconstr.mli | 101 |
1 files changed, 13 insertions, 88 deletions
diff --git a/printing/ppconstr.mli b/printing/ppconstr.mli index 79399094d7..a4c262b92c 100644 --- a/printing/ppconstr.mli +++ b/printing/ppconstr.mli @@ -6,95 +6,20 @@ (* * GNU Lesser General Public License Version 2.1 *) (************************************************************************) -open Loc -open Pp -open Libnames -open Constrexpr -open Names -open Misctypes -open Locus -open Genredexpr +(** This module implements pretty-printers for constr_expr syntactic + objects and their subcomponents. *) -val extract_lam_binders : - constr_expr -> local_binder list * constr_expr -val extract_prod_binders : - constr_expr -> local_binder list * constr_expr -val split_fix : - int -> constr_expr -> constr_expr -> - local_binder list * constr_expr * constr_expr +(** The default pretty-printers produce {!Pp.std_ppcmds} that are + interpreted as raw strings. *) +include Ppconstrsig.Pp -val prec_less : int -> int * Ppextend.parenRelation -> bool +(** The rich pretty-printers produce {!Pp.std_ppcmds} that are + interpreted as annotated strings. The annotations can be + retrieved using {!RichPp.rich_pp}. Their definitions is + located in {!Ppannotation.t}. -val pr_tight_coma : unit -> std_ppcmds + Please refer to {!RichPp} to know what are the requirements over + [Indexer.index] behavior. *) +module RichPp (Indexer : sig val index : Ppannotation.t -> string end) + : Ppconstrsig.Pp -val pr_or_var : ('a -> std_ppcmds) -> 'a or_var -> std_ppcmds -val pr_metaid : Id.t -> std_ppcmds - -val pr_lident : Id.t located -> std_ppcmds -val pr_lname : Name.t located -> std_ppcmds - -val pr_with_comments : Loc.t -> std_ppcmds -> std_ppcmds -val pr_com_at : int -> std_ppcmds -val pr_sep_com : - (unit -> std_ppcmds) -> - (constr_expr -> std_ppcmds) -> - constr_expr -> std_ppcmds - -val pr_id : Id.t -> std_ppcmds -val pr_name : Name.t -> std_ppcmds -val pr_qualid : qualid -> std_ppcmds -val pr_patvar : patvar -> std_ppcmds - -val pr_with_occurrences : - ('a -> std_ppcmds) -> 'a with_occurrences -> std_ppcmds -val pr_red_expr : - ('a -> std_ppcmds) * ('a -> std_ppcmds) * ('b -> std_ppcmds) * ('c -> std_ppcmds) -> - ('a,'b,'c) red_expr_gen -> std_ppcmds -val pr_may_eval : - ('a -> std_ppcmds) -> ('a -> std_ppcmds) -> ('b -> std_ppcmds) -> - ('c -> std_ppcmds) -> ('a,'b,'c) may_eval -> std_ppcmds - -val pr_glob_sort : glob_sort -> std_ppcmds -val pr_guard_annot : (constr_expr -> std_ppcmds) -> - local_binder list -> - ('a * Names.Id.t) option * recursion_order_expr -> - std_ppcmds - -val pr_binders : local_binder list -> std_ppcmds -val pr_constr_pattern_expr : constr_pattern_expr -> std_ppcmds -val pr_lconstr_pattern_expr : constr_pattern_expr -> std_ppcmds -val pr_constr_expr : constr_expr -> std_ppcmds -val pr_lconstr_expr : constr_expr -> std_ppcmds -val pr_cases_pattern_expr : cases_pattern_expr -> std_ppcmds - -type term_pr = { - pr_constr_expr : constr_expr -> std_ppcmds; - pr_lconstr_expr : constr_expr -> std_ppcmds; - pr_constr_pattern_expr : constr_pattern_expr -> std_ppcmds; - pr_lconstr_pattern_expr : constr_pattern_expr -> std_ppcmds -} - -val set_term_pr : term_pr -> unit -val default_term_pr : term_pr - -(** The modular constr printer. - [modular_constr_pr pr s p t] prints the head of the term [t] and calls - [pr] on its subterms. - [s] is typically {!Pp.mt} and [p] is [lsimpleconstr] for "constr" printers - and [ltop] for "lconstr" printers (spiwack: we might need more - specification here). - We can make a new modular constr printer by overriding certain branches, - for instance if we want to build a printer which prints "Prop" as "Omega" - instead we can proceed as follows: - let my_modular_constr_pr pr s p = function - | CSort (_,GProp Null) -> str "Omega" - | t -> modular_constr_pr pr s p t - Which has the same type. We can turn a modular printer into a printer by - taking its fixpoint. *) - -type precedence -val lsimpleconstr : precedence -val ltop : precedence -val modular_constr_pr : - ((unit->std_ppcmds) -> precedence -> constr_expr -> std_ppcmds) -> - (unit->std_ppcmds) -> precedence -> constr_expr -> std_ppcmds |
