aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar delahaye <delahaye@85f007b7-540e-0410-9357-904b9bb8a0f7>2000-10-30 16:55:46 +0000
committerGravatar delahaye <delahaye@85f007b7-540e-0410-9357-904b9bb8a0f7>2000-10-30 16:55:46 +0000
commitcae025c40c270a23ffef489d855346dd86944aa6 (patch)
tree0c807e2b7edc420ee89cf928619adb21232d6b35
parent69953ca730d5f05ce3925273ae6e8018aa564959 (diff)
Priorite du Try/Orelse + Debug switch + correction bug dans Pattern
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@785 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--parsing/g_tactic.ml44
-rw-r--r--parsing/g_vernac.ml44
-rw-r--r--parsing/pattern.ml3
3 files changed, 9 insertions, 2 deletions
diff --git a/parsing/g_tactic.ml4 b/parsing/g_tactic.ml4
index eb4bc02e4..311ca3371 100644
--- a/parsing/g_tactic.ml4
+++ b/parsing/g_tactic.ml4
@@ -263,6 +263,8 @@ GEXTEND Gram
| IDENT "Info"; tc = tactic_expr -> <:ast< (INFO $tc) >>
| IDENT "Solve" ; "["; l = LIST0 tactic_expr SEP "|"; "]" ->
<:ast<(TCLSOLVE ($LIST $l))>>
+ | IDENT "Try"; ta0 = tactic_atom; "Orelse"; ta1 = tactic_atom ->
+ <:ast< (TRY (ORELSE $ta0 $ta1)) >>
| IDENT "Try"; ta = tactic_atom -> <:ast< (TRY $ta) >>
| IDENT "Do"; n = numarg; ta = tactic_atom -> <:ast< (DO $n $ta) >>
| IDENT "Repeat"; ta = tactic_atom -> <:ast< (REPEAT $ta) >>
@@ -416,4 +418,4 @@ GEXTEND Gram
tactic:
[ [ tac = tactic_expr -> tac ] ]
;
-END
+END;;
diff --git a/parsing/g_vernac.ml4 b/parsing/g_vernac.ml4
index 7c91cbf90..c4bc8fe13 100644
--- a/parsing/g_vernac.ml4
+++ b/parsing/g_vernac.ml4
@@ -423,6 +423,10 @@ GEXTEND Gram
<:ast< (PrintExtractId $id) >>
| IDENT "Extraction"; "." -> <:ast< (PrintExtract) >>
+(* Tactic Debugger *)
+ | IDENT "Debug"; IDENT "On"; "." -> <:ast< (DebugOn) >>
+ | IDENT "Debug"; IDENT "Off"; "." -> <:ast< (DebugOff) >>
+
] ];
END
diff --git a/parsing/pattern.ml b/parsing/pattern.ml
index 176903cb2..3db193625 100644
--- a/parsing/pattern.ml
+++ b/parsing/pattern.ml
@@ -162,7 +162,8 @@ let matches_core convert pat c =
| PSort RType, IsSort (Type _) -> sigma
| PApp (c1,arg1), IsApp (c2,arg2) ->
- array_fold_left2 (sorec stk) (sorec stk sigma c1 c2) arg1 arg2
+ (try array_fold_left2 (sorec stk) (sorec stk sigma c1 c2) arg1 arg2
+ with Invalid_argument _ -> raise PatternMatchingFailure)
| PBinder(BProd,na1,c1,d1), IsProd(na2,c2,d2) ->
sorec ((na2,c2)::stk) (sorec stk sigma c1 c2) d1 d2