From c0378f4e640b16d2bc485825ca23f2d4b657ef65 Mon Sep 17 00:00:00 2001 From: herbelin Date: Mon, 25 Nov 2002 12:15:01 +0000 Subject: MAJ delimiters et niveaux d'associativite git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3281 85f007b7-540e-0410-9357-904b9bb8a0f7 --- toplevel/metasyntax.ml | 13 +++++++------ toplevel/metasyntax.mli | 2 +- toplevel/vernacexpr.ml | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'toplevel') 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 * -- cgit v1.2.3