diff options
Diffstat (limited to 'printing/ppvernac.ml')
| -rw-r--r-- | printing/ppvernac.ml | 136 |
1 files changed, 69 insertions, 67 deletions
diff --git a/printing/ppvernac.ml b/printing/ppvernac.ml index 572876e5bf..415d703162 100644 --- a/printing/ppvernac.ml +++ b/printing/ppvernac.ml @@ -177,7 +177,7 @@ let pr_reference_or_constr pr_c = function | HintsReference r -> pr_reference r | HintsConstr c -> pr_c c -let pr_hints local db h pr_c pr_pat = +let pr_hints db h pr_c pr_pat = let opth = pr_opt_hintbases db in let pph = match h with @@ -200,7 +200,7 @@ let pr_hints local db h pr_c pr_pat = str "Extern" ++ spc() ++ int n ++ spc() ++ pat ++ str" =>" ++ spc() ++ pr_raw_tactic tac in - hov 2 (str"Hint "++pr_locality local ++ pph ++ opth) + hov 2 (str"Hint "++ pph ++ opth) let pr_with_declaration pr_c = function | CWith_Definition (id,c) -> @@ -306,7 +306,9 @@ let pr_class_rawexpr = function | SortClass -> str"Sortclass" | RefClass qid -> pr_smart_global qid -let pr_assumption_token many = function +let pr_assumption_token many (l,a) = + let l = match l with Some x -> x | None -> Decl_kinds.Global in + match l, a with | (Discharge,Logical) -> str (if many then "Hypotheses" else "Hypothesis") | (Discharge,Definitional) -> @@ -475,6 +477,8 @@ let pr_printable = function in let rec pr_vernac = function + | VernacProgram v -> str"Program" ++ spc() ++ pr_vernac v + | VernacLocal (local, v) -> pr_locality local ++ spc() ++ pr_vernac v (* Proof management *) | VernacAbortAll -> str "Abort All" @@ -530,10 +534,9 @@ let rec pr_vernac = function | VernacFail v -> str"Fail" ++ spc() ++ pr_vernac v (* Syntax *) - | VernacTacticNotation (local,n,r,e) -> - pr_locality local ++ pr_grammar_tactic_rule n ("",r,e) - | VernacOpenCloseScope (local,opening,sc) -> - pr_section_locality local ++ + | VernacTacticNotation (n,r,e) -> + pr_grammar_tactic_rule n ("",r,e) + | VernacOpenCloseScope (_,(opening,sc)) -> str (if opening then "Open " else "Close ") ++ str "Scope" ++ spc() ++ str sc | VernacDelimiters (sc,key) -> @@ -542,20 +545,20 @@ let rec pr_vernac = function | VernacBindScope (sc,cll) -> str"Bind Scope" ++ spc () ++ str sc ++ spc() ++ str "with " ++ prlist_with_sep spc pr_smart_global cll - | VernacArgumentsScope (local,q,scl) -> let pr_opt_scope = function + | VernacArgumentsScope (q,scl) -> let pr_opt_scope = function | None -> str"_" | Some sc -> str sc in - pr_section_locality local ++ str"Arguments Scope" ++ spc() ++ + str"Arguments Scope" ++ spc() ++ pr_smart_global q ++ spc() ++ str"[" ++ prlist_with_sep sep pr_opt_scope scl ++ str"]" - | VernacInfix (local,((_,s),mv),q,sn) -> (* A Verifier *) - hov 0 (hov 0 (pr_locality local ++ str"Infix " + | VernacInfix (_,((_,s),mv),q,sn) -> (* A Verifier *) + hov 0 (hov 0 (str"Infix " ++ qs s ++ str " :=" ++ pr_constrarg q) ++ pr_syntax_modifiers mv ++ (match sn with | None -> mt() | Some sc -> spc() ++ str":" ++ spc() ++ str sc)) - | VernacNotation (local,c,((_,s),l),opt) -> + | VernacNotation (_,c,((_,s),l),opt) -> let ps = let n = String.length s in if n > 2 && s.[0] == '\'' && s.[n-1] == '\'' @@ -563,18 +566,20 @@ let rec pr_vernac = function let s' = String.sub s 1 (n-2) in if String.contains s' '\'' then qs s else str s' else qs s in - hov 2 (pr_locality local ++ str"Notation" ++ spc() ++ ps ++ + hov 2 (str"Notation" ++ spc() ++ ps ++ str " :=" ++ pr_constrarg c ++ pr_syntax_modifiers l ++ (match opt with | None -> mt() | Some sc -> str" :" ++ spc() ++ str sc)) - | VernacSyntaxExtension (local,(s,l)) -> - pr_locality local ++ str"Reserved Notation" ++ spc() ++ pr_located qs s ++ + | VernacSyntaxExtension (_,(s,l)) -> + str"Reserved Notation" ++ spc() ++ pr_located qs s ++ pr_syntax_modifiers l (* Gallina *) | VernacDefinition (d,id,b) -> (* A verifier... *) - let pr_def_token dk = str (Kindops.string_of_definition_kind dk) in + let pr_def_token (l,dk) = + let l = match l with Some x -> x | None -> Decl_kinds.Global in + str (Kindops.string_of_definition_kind (l,dk)) in let pr_reduce = function | None -> mt() | Some r -> @@ -650,9 +655,9 @@ let rec pr_vernac = function | VernacFixpoint (local, recs) -> let local = match local with - | Discharge -> "Let " - | Local -> "Local " - | Global -> "" + | Some Discharge -> "Let " + | Some Local -> "Local " + | None | Some Global -> "" in let pr_onerec = function | ((loc,id),ro,bl,type_,def),ntn -> @@ -667,9 +672,9 @@ let rec pr_vernac = function | VernacCoFixpoint (local, corecs) -> let local = match local with - | Discharge -> "Let " - | Local -> "Local " - | Global -> "" + | Some Discharge -> "Let " + | Some Local -> "Local " + | None | Some Global -> "" in let pr_onecorec (((loc,id),bl,c,def),ntn) = pr_id id ++ spc() ++ pr_binders bl ++ spc() ++ str":" ++ @@ -698,22 +703,19 @@ let rec pr_vernac = function (if f then str"Export" else str"Import") ++ spc() ++ prlist_with_sep sep pr_import_module l | VernacCanonical q -> str"Canonical Structure" ++ spc() ++ pr_smart_global q - | VernacCoercion (s,id,c1,c2) -> + | VernacCoercion (_,id,c1,c2) -> hov 1 ( - str"Coercion" ++ (if s then spc() ++ - str"Local" ++ spc() else spc()) ++ + str"Coercion" ++ pr_smart_global id ++ spc() ++ str":" ++ spc() ++ pr_class_rawexpr c1 ++ spc() ++ str">->" ++ spc() ++ pr_class_rawexpr c2) - | VernacIdentityCoercion (s,id,c1,c2) -> + | VernacIdentityCoercion (_,id,c1,c2) -> hov 1 ( - str"Identity Coercion" ++ (if s then spc() ++ - str"Local" ++ spc() else spc()) ++ pr_lident id ++ + str"Identity Coercion" ++ pr_lident id ++ spc() ++ str":" ++ spc() ++ pr_class_rawexpr c1 ++ spc() ++ str">->" ++ spc() ++ pr_class_rawexpr c2) - | VernacInstance (abst,glob, sup, (instid, bk, cl), props, pri) -> + | VernacInstance (abst, sup, (instid, bk, cl), props, pri) -> hov 1 ( - pr_non_locality (not glob) ++ (if abst then str"Declare " else mt ()) ++ str"Instance" ++ (match snd instid with Name id -> spc () ++ pr_lident (fst instid, id) ++ spc () | @@ -730,10 +732,10 @@ let rec pr_vernac = function str"Context" ++ spc () ++ pr_and_type_binders_arg l) - | VernacDeclareInstances (glob, ids) -> - hov 1 (pr_non_locality (not glob) ++ - str"Existing" ++ spc () ++ str(String.plural (List.length ids) "Instance") ++ - spc () ++ prlist_with_sep spc pr_reference ids) + | VernacDeclareInstances ids -> + hov 1 ( str"Existing" ++ spc () ++ + str(String.plural (List.length ids) "Instance") ++ + spc () ++ prlist_with_sep spc pr_reference ids) | VernacDeclareClass id -> hov 1 (str"Existing" ++ spc () ++ str"Class" ++ spc () ++ pr_reference id) @@ -784,13 +786,12 @@ let rec pr_vernac = function | VernacRemoveLoadPath s -> str"Remove LoadPath" ++ qs s | VernacAddMLPath (fl,s) -> str"Add" ++ (if fl then str" Rec " else spc()) ++ str"ML Path" ++ qs s - | VernacDeclareMLModule (local, l) -> - pr_locality local ++ + | VernacDeclareMLModule (l) -> hov 2 (str"Declare ML Module" ++ spc() ++ prlist_with_sep sep qs l) | VernacChdir s -> str"Cd" ++ pr_opt qs s (* Commands *) - | VernacDeclareTacticDefinition (local,rc,l) -> + | VernacDeclareTacticDefinition (rc,l) -> let pr_tac_body (id, redef, body) = let idl, body = match body with @@ -803,34 +804,33 @@ let rec pr_vernac = function pr_raw_tactic body in hov 1 - (pr_locality local ++ str "Ltac " ++ + (str "Ltac " ++ prlist_with_sep (fun () -> fnl() ++ str"with ") pr_tac_body l) - | VernacCreateHintDb (local,dbname,b) -> - hov 1 (pr_locality local ++ str "Create HintDb " ++ + | VernacCreateHintDb (dbname,b) -> + hov 1 (str "Create HintDb " ++ str dbname ++ (if b then str" discriminated" else mt ())) - | VernacRemoveHints (local, dbnames, ids) -> - hov 1 (pr_locality local ++ str "Remove Hints " ++ + | VernacRemoveHints (dbnames, ids) -> + hov 1 (str "Remove Hints " ++ prlist_with_sep spc (fun r -> pr_id (coerce_reference_to_id r)) ids ++ pr_opt_hintbases dbnames) - | VernacHints (local,dbnames,h) -> - pr_hints local dbnames h pr_constr pr_constr_pattern_expr - | VernacSyntacticDefinition (id,(ids,c),local,onlyparsing) -> + | VernacHints (_, dbnames,h) -> + pr_hints dbnames h pr_constr pr_constr_pattern_expr + | VernacSyntacticDefinition (id,(ids,c),_,onlyparsing) -> hov 2 - (pr_locality local ++ str"Notation " ++ pr_lident id ++ spc () ++ + (str"Notation " ++ pr_lident id ++ spc () ++ prlist (fun x -> spc() ++ pr_id x) ids ++ str":=" ++ pr_constrarg c ++ pr_syntax_modifiers (match onlyparsing with None -> [] | Some v -> [SetOnlyParsing v])) - | VernacDeclareImplicits (local,q,[]) -> - hov 2 (pr_section_locality local ++ str"Implicit Arguments" ++ spc() ++ - pr_smart_global q) - | VernacDeclareImplicits (local,q,impls) -> - hov 1 (pr_section_locality local ++ str"Implicit Arguments " ++ + | VernacDeclareImplicits (q,[]) -> + hov 2 (str"Implicit Arguments" ++ spc() ++ pr_smart_global q) + | VernacDeclareImplicits (q,impls) -> + hov 1 (str"Implicit Arguments " ++ spc() ++ pr_smart_global q ++ spc() ++ prlist_with_sep spc (fun imps -> str"[" ++ prlist_with_sep sep pr_explanation imps ++ str"]") impls) - | VernacArguments (local, q, impl, nargs, mods) -> - hov 2 (pr_section_locality local ++ str"Arguments" ++ spc() ++ + | VernacArguments (q, impl, nargs, mods) -> + hov 2 (str"Arguments" ++ spc() ++ pr_smart_global q ++ let pr_s = function None -> str"" | Some (_,s) -> str "%" ++ str s in let pr_if b x = if b then x else str "" in @@ -861,21 +861,23 @@ let rec pr_vernac = function hov 2 (str"Implicit Type" ++ str (if n > 1 then "s " else " ") ++ pr_ne_params_list pr_lconstr_expr (List.map (fun sb -> false,sb) bl)) - | VernacGeneralizable (local, g) -> - hov 1 (pr_locality local ++ str"Generalizable Variable" ++ + | VernacGeneralizable g -> + hov 1 (str"Generalizable Variable" ++ match g with | None -> str "s none" | Some [] -> str "s all" | Some idl -> str (if List.length idl > 1 then "s " else " ") ++ prlist_with_sep spc pr_lident idl) - | VernacSetOpacity(b,[k,l]) when Conv_oracle.is_transparent k -> - hov 1 (pr_non_locality b ++ str "Transparent" ++ + | VernacSetOpacity(k,l) when Conv_oracle.is_transparent k -> + hov 1 (str "Transparent" ++ spc() ++ prlist_with_sep sep pr_smart_global l) - | VernacSetOpacity(b,[Conv_oracle.Opaque,l]) -> - hov 1 (pr_non_locality b ++ str "Opaque" ++ + | VernacSetOpacity(Conv_oracle.Opaque,l) -> + hov 1 (str "Opaque" ++ spc() ++ prlist_with_sep sep pr_smart_global l) - | VernacSetOpacity (local,l) -> + | VernacSetOpacity _ -> + Errors.anomaly (str "VernacSetOpacity used to set something else") + | VernacSetStrategy l -> let pr_lev = function Conv_oracle.Opaque -> str"opaque" | Conv_oracle.Expand -> str"expand" @@ -884,12 +886,12 @@ let rec pr_vernac = function let pr_line (l,q) = hov 2 (pr_lev l ++ spc() ++ str"[" ++ prlist_with_sep sep pr_smart_global q ++ str"]") in - hov 1 (pr_locality local ++ str "Strategy" ++ spc() ++ + hov 1 (str "Strategy" ++ spc() ++ hv 0 (prlist_with_sep sep pr_line l)) - | VernacUnsetOption (l,na) -> - hov 1 (pr_locality_full l ++ str"Unset" ++ spc() ++ pr_printoption na None) - | VernacSetOption (l,na,v) -> - hov 2 (pr_locality_full l ++ str"Set" ++ spc() ++ pr_set_option na v) + | VernacUnsetOption (na) -> + hov 1 (str"Unset" ++ spc() ++ pr_printoption na None) + | VernacSetOption (na,v) -> + hov 2 (str"Set" ++ spc() ++ pr_set_option na v) | VernacAddOption (na,l) -> hov 2 (str"Add" ++ spc() ++ pr_printoption na (Some l)) | VernacRemoveOption (na,l) -> hov 2 (str"Remove" ++ spc() ++ pr_printoption na (Some l)) | VernacMemOption (na,l) -> hov 2 (str"Test" ++ spc() ++ pr_printoption na (Some l)) @@ -905,8 +907,8 @@ let rec pr_vernac = function let pr_i = match io with None -> mt () | Some i -> int i ++ str ": " in pr_i ++ pr_mayeval r c | VernacGlobalCheck c -> hov 2 (str"Type" ++ pr_constrarg c) - | VernacDeclareReduction (b,s,r) -> - pr_locality b ++ str "Declare Reduction " ++ str s ++ str " := " ++ + | VernacDeclareReduction (s,r) -> + str "Declare Reduction " ++ str s ++ str " := " ++ pr_red_expr (pr_constr,pr_lconstr,pr_smart_global, pr_constr) r | VernacPrint p -> pr_printable p | VernacSearch (sea,sea_r) -> pr_search sea sea_r pr_constr_pattern_expr |
