diff options
| author | herbelin | 2001-12-16 09:03:08 +0000 |
|---|---|---|
| committer | herbelin | 2001-12-16 09:03:08 +0000 |
| commit | e6d2309432e62b38d689777c28ef84ce495c8b27 (patch) | |
| tree | 0af3e498b44b75d56633ed860269361c744cbd00 | |
| parent | e2e4f1388e9ab9dc6a92a9bf9b6c6c001faa048a (diff) | |
Ajout syntaxe 'Canonical Structure' en remplacement de @Definition + suppression des @Coercion, @Local et @Local Coercion
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2299 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | parsing/g_vernac.ml4 | 23 | ||||
| -rw-r--r-- | toplevel/vernacentries.ml | 9 |
2 files changed, 28 insertions, 4 deletions
diff --git a/parsing/g_vernac.ml4 b/parsing/g_vernac.ml4 index accb5d9586..caae9a1e40 100644 --- a/parsing/g_vernac.ml4 +++ b/parsing/g_vernac.ml4 @@ -77,10 +77,6 @@ GEXTEND Gram def_tok: [ [ "Definition" -> <:ast< "DEFINITION" >> | IDENT "Local" -> <:ast< "LOCAL" >> - | "@"; "Definition" -> <:ast< "OBJECT" >> - | "@"; IDENT "Local" -> <:ast< "LOBJECT" >> - | "@"; IDENT "Coercion" -> <:ast< "OBJCOERCION" >> - | "@"; IDENT "Local"; IDENT "Coercion" -> <:ast< "LOBJCOERCION" >> | IDENT "SubClass" -> <:ast< "SUBCLASS" >> | IDENT "Local"; IDENT "SubClass" -> <:ast< "LSUBCLASS" >> ] ] ; @@ -324,6 +320,7 @@ GEXTEND Gram <:ast< (CONSTR (CAST $c1 $c2)) >> | c = Constr.constr -> <:ast< (CONSTR $c) >> ] ]; + gallina_ext: [ [ (* Sections *) @@ -338,6 +335,24 @@ GEXTEND Gram | IDENT "Opaque"; l = ne_qualidarg_list -> <:ast< (OPAQUE ($LIST $l)) >> +(* Canonical structure *) + | IDENT "Canonical"; IDENT "Structure"; qid = qualidarg -> + <:ast< (CANONICAL $qid) >> + | IDENT "Canonical"; IDENT "Structure"; qid = qualidarg; ":"; + t = Constr.constr; ":="; c = Constr.constr -> + let s = Ast.coerce_to_var qid in + <:ast< (DEFINITION "OBJECT" $s (CONSTR $c) (CONSTR $t)) >> + | IDENT "Canonical"; IDENT "Structure"; qid = qualidarg; ":="; + c = Constr.constr; ":"; t = Constr.constr -> + let s = Ast.coerce_to_var qid in + <:ast< (DEFINITION "OBJECT" $s (CONSTR $c) (CONSTR $t)) >> + | IDENT "Canonical"; IDENT "Structure"; qid = qualidarg; ":="; + c = Constr.constr -> + let s = Ast.coerce_to_var qid in + <:ast< (DEFINITION "OBJECT" $s (CONSTR $c)) >> + (* Rem: LOBJECT, OBJCOERCION, LOBJCOERCION have been removed + (they were unused and undocumented *) + (* Coercions *) | IDENT "Coercion"; qid = qualidarg; ":="; c = def_body -> let s = Ast.coerce_to_var qid in diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml index d5366f8c60..b603b28e33 100644 --- a/toplevel/vernacentries.ml +++ b/toplevel/vernacentries.ml @@ -916,6 +916,15 @@ let _ = | _ -> bad_vernac_args "DEFINITION") let _ = + add "CANONICAL" + (function + | [VARG_QUALID qid] -> + fun () -> + let ref = Nametab.global dummy_loc qid in + Recordobj.objdef_declare ref + | _ -> bad_vernac_args "CANONICAL") + +let _ = add "VARIABLE" (function | [VARG_STRING kind; VARG_BINDERLIST slcl] -> |
