aboutsummaryrefslogtreecommitdiff
path: root/parsing
diff options
context:
space:
mode:
authorherbelin2006-10-24 12:55:46 +0000
committerherbelin2006-10-24 12:55:46 +0000
commit6dceb3df36d30ad32db7e73713e7f7dee083e872 (patch)
treea929ebb6ad7aae06b05c32b1515db924f4761d5f /parsing
parentf1248d64c25602d75d069b07b51a8b4f751415b2 (diff)
Extension de la primitive ltac fresh pour qu'elle accepte une liste de
noms et de chaînes qu'elle va concaténer pour créer un nom. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9267 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'parsing')
-rw-r--r--parsing/g_ltac.ml45
-rw-r--r--parsing/pptactic.ml6
2 files changed, 8 insertions, 3 deletions
diff --git a/parsing/g_ltac.ml4 b/parsing/g_ltac.ml4
index 9bf5d0ea90..2e72784b5f 100644
--- a/parsing/g_ltac.ml4
+++ b/parsing/g_ltac.ml4
@@ -115,7 +115,10 @@ GEXTEND Gram
;
may_eval_arg:
[ [ c = constr_eval -> ConstrMayEval c
- | IDENT "fresh"; s = OPT STRING -> TacFreshId s ] ]
+ | IDENT "fresh"; l = LIST0 fresh_id -> TacFreshId l ] ]
+ ;
+ fresh_id:
+ [ [ s = STRING -> ArgArg s | id = ident -> ArgVar (loc,id) ] ]
;
constr_eval:
[ [ IDENT "eval"; rtc = red_expr; "in"; c = Constr.constr ->
diff --git a/parsing/pptactic.ml b/parsing/pptactic.ml
index f354ac44f3..fdb0ff5032 100644
--- a/parsing/pptactic.ml
+++ b/parsing/pptactic.ml
@@ -127,6 +127,8 @@ let rec pr_message_token prid = function
| MsgInt n -> int n
| MsgIdent id -> prid id
+let pr_fresh_ids = prlist (fun s -> spc() ++ pr_or_var qs s)
+
let rec pr_raw_generic prc prlc prtac prref (x:(Genarg.rlevel, Tacexpr.raw_tactic_expr) Genarg.generic_argument) =
match Genarg.genarg_tag x with
| BoolArgType -> pr_arg str (if out_gen rawwit_bool x then "true" else "false")
@@ -900,7 +902,7 @@ let rec pr_tac inherited tac =
str "constr:" ++ pr_constr c, latom
| TacArg(ConstrMayEval c) ->
pr_may_eval pr_constr pr_lconstr pr_cst c, leval
- | TacArg(TacFreshId sopt) -> str "fresh" ++ pr_opt qs sopt, latom
+ | TacArg(TacFreshId l) -> str "fresh" ++ pr_fresh_ids l, latom
| TacArg(Integer n) -> int n, latom
| TacArg(TacCall(loc,f,l)) ->
pr_with_comments loc
@@ -921,7 +923,7 @@ and pr_tacarg = function
| Reference r -> pr_ref r
| ConstrMayEval c ->
pr_may_eval pr_constr pr_lconstr pr_cst c
- | TacFreshId sopt -> str "fresh" ++ pr_opt qs sopt
+ | TacFreshId l -> str "fresh" ++ pr_fresh_ids l
| TacExternal (_,com,req,la) ->
str "external" ++ spc() ++ qs com ++ spc() ++ qs req ++
spc() ++ prlist_with_sep spc pr_tacarg la