diff options
| author | herbelin | 2001-08-10 14:42:22 +0000 |
|---|---|---|
| committer | herbelin | 2001-08-10 14:42:22 +0000 |
| commit | 8e92ee787e7d1fd48cae1eccf67a9b05e739743e (patch) | |
| tree | b33191fbaba0cad4b14a96cf5d7786dd2c07c3d7 /parsing/coqlib.ml | |
| parent | c0a3b41ad2f2afba3f060e0d4001bd7aceea0831 (diff) | |
Parsing
- Typage renforcé dans les grammaires (distinction des vars et des metavars)
- Disparition de SLAM au profit de ABSTRACT
- Paths primitifs dans les quotations (syntaxe concrète à base de .)
- Mise en place de identifier dès le type ast
- Protection de identifier contre les effets de bord via un String.copy
- Utilisation de module_ident (= identifier) dans les dir_path (au
lieu de string)
Table des noms qualifiés
- Remplacement de la table de visibilité par une table qui ne cache
plus les noms de modules et sections mais seulement les noms des
constantes (e.g. Require A. ne cachera plus le contenu d'un éventuel
module A déjà existant : seuls les noms de constructions de l'ancien
A qui existent aussi dans le nouveau A seront cachés)
- Renoncement à la possibilité d'accéder les formes non déchargées des
constantes définies à l'intérieur de sections et simplification
connexes (suppression de END-SECTION, une seule table de noms qui ne
survit pas au discharge)
- Utilisation de noms longs pour les modules, de noms qualifiés pour
Require and co, tests de cohérence; pour être cohérent avec la non
survie des tables de noms à la sortie des section, les require à
l'intérieur d'une section eux aussi sont refaits à la fermeture de la
section
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@1889 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'parsing/coqlib.ml')
| -rw-r--r-- | parsing/coqlib.ml | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/parsing/coqlib.ml b/parsing/coqlib.ml index 88548def38..dca396ea21 100644 --- a/parsing/coqlib.ml +++ b/parsing/coqlib.ml @@ -15,9 +15,20 @@ open Declare open Pattern open Nametab -let nat_path = make_path ["Coq";"Init";"Datatypes"] (id_of_string "nat") CCI +let make_dir l = make_dirpath (List.map id_of_string l) +let coq_id = id_of_string "Coq" +let init_id = id_of_string "Init" +let arith_id = id_of_string "Arith" +let datatypes_id = id_of_string "Datatypes" + +let logic_module = make_dir ["Coq";"Init";"Logic"] +let logic_type_module = make_dir ["Coq";"Init";"Logic_Type"] +let datatypes_module = make_dir ["Coq";"Init";"Datatypes"] +let arith_module = make_dir ["Coq";"Arith";"Arith"] + +let nat_path = make_path datatypes_module (id_of_string "nat") CCI let myvar_path = - make_path ["Coq";"Arith";"Arith"] (id_of_string "My_special_variable") CCI + make_path arith_module (id_of_string "My_special_variable") CCI let glob_nat = IndRef (nat_path,0) @@ -26,14 +37,14 @@ let glob_S = ConstructRef ((nat_path,0),2) let glob_My_special_variable_nat = ConstRef myvar_path -let eq_path = make_path ["Coq";"Init";"Logic"] (id_of_string "eq") CCI -let eqT_path = make_path ["Coq";"Init";"Logic_Type"] (id_of_string "eqT") CCI +let eq_path = make_path logic_module (id_of_string "eq") CCI +let eqT_path = make_path logic_type_module (id_of_string "eqT") CCI let glob_eq = IndRef (eq_path,0) let glob_eqT = IndRef (eqT_path,0) let reference dir s = - let dir = "Coq"::"Init"::[dir] in + let dir = make_dir ("Coq"::"Init"::[dir]) in let id = id_of_string s in try Nametab.locate_in_absolute_module dir id |
