aboutsummaryrefslogtreecommitdiff
path: root/toplevel
diff options
context:
space:
mode:
authorherbelin2002-11-25 12:15:01 +0000
committerherbelin2002-11-25 12:15:01 +0000
commitc0378f4e640b16d2bc485825ca23f2d4b657ef65 (patch)
tree74e2b09dcec262514d87a0d5ab16ec4150e1fc48 /toplevel
parent9faf95fb8deb7d533f6d54da9423d85f8b3e07ac (diff)
MAJ delimiters et niveaux d'associativite
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3281 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/metasyntax.ml13
-rw-r--r--toplevel/metasyntax.mli2
-rw-r--r--toplevel/vernacexpr.ml2
3 files changed, 9 insertions, 8 deletions
diff --git a/toplevel/metasyntax.ml b/toplevel/metasyntax.ml
index 858add3c78..8efa576f0d 100644
--- a/toplevel/metasyntax.ml
+++ b/toplevel/metasyntax.ml
@@ -662,13 +662,14 @@ let (inDelim,outDelim) =
load_function = load_delimiters;
export_function = (fun x -> Some x) }
-let make_delimiter_rule (l,r) typ =
+let make_delimiter_rule key typ =
let e = Nameops.make_ident "e" None in
- let symbols = [Terminal l; NonTerminal e; Terminal r] in
+ let m = key^":" in
+ let symbols = [Terminal "`"; Terminal m; NonTerminal e; Terminal "`"] in
make_production [e,typ] symbols
-let add_delimiters scope (l,r as dlms) =
- if l = "" or r = "" then error "Delimiters cannot be empty";
- let gram_rule = make_delimiter_rule dlms (ETConstr ((0,E),Some 0)) in
- let pat_gram_rule = make_delimiter_rule dlms ETPattern in
+let add_delimiters scope key =
+ let gram_rule = make_delimiter_rule key (ETConstr ((0,E),Some 0)) in
+ let pat_gram_rule = make_delimiter_rule key ETPattern in
+ let dlms = ("`"^key^":", "`") in
Lib.add_anonymous_leaf (inDelim(gram_rule,pat_gram_rule,scope,dlms))
diff --git a/toplevel/metasyntax.mli b/toplevel/metasyntax.mli
index fbbe4a94e5..a63d1dea91 100644
--- a/toplevel/metasyntax.mli
+++ b/toplevel/metasyntax.mli
@@ -34,7 +34,7 @@ val add_infix :
val add_distfix :
grammar_associativity -> precedence -> string -> reference
-> scope_name option -> unit
-val add_delimiters : scope_name -> delimiters -> unit
+val add_delimiters : scope_name -> string -> unit
val add_notation : string -> constr_expr
-> syntax_modifier list -> scope_name option -> unit
diff --git a/toplevel/vernacexpr.ml b/toplevel/vernacexpr.ml
index 050ac58d1c..6076184b8d 100644
--- a/toplevel/vernacexpr.ml
+++ b/toplevel/vernacexpr.ml
@@ -155,7 +155,7 @@ type vernac_expr =
| VernacSyntax of string * raw_syntax_entry list
| VernacSyntaxExtension of string * syntax_modifier list
| VernacOpenScope of scope_name
- | VernacDelimiters of scope_name * (string * string)
+ | VernacDelimiters of scope_name * string
| VernacArgumentsScope of reference * scope_name option list
| VernacInfix of
grammar_associativity * precedence * string * reference *