diff options
author | 2000-10-30 16:55:46 +0000 | |
---|---|---|
committer | 2000-10-30 16:55:46 +0000 | |
commit | cae025c40c270a23ffef489d855346dd86944aa6 (patch) | |
tree | 0c807e2b7edc420ee89cf928619adb21232d6b35 | |
parent | 69953ca730d5f05ce3925273ae6e8018aa564959 (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.ml4 | 4 | ||||
-rw-r--r-- | parsing/g_vernac.ml4 | 4 | ||||
-rw-r--r-- | parsing/pattern.ml | 3 |
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 |