diff options
| author | herbelin | 2003-09-10 14:28:07 +0000 |
|---|---|---|
| committer | herbelin | 2003-09-10 14:28:07 +0000 |
| commit | 0141ad09a89784de0d8b3d02f7574e2a7f29bd7e (patch) | |
| tree | 90a1ec1461e1036fbbfd5f6662a6c9b1904521bd | |
| parent | 46ff8406c6999fa75558d9d306f13b05ab0cdc78 (diff) | |
Traduction de Distfix
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@4344 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | parsing/g_basevernac.ml4 | 4 | ||||
| -rw-r--r-- | toplevel/metasyntax.ml | 7 | ||||
| -rw-r--r-- | toplevel/metasyntax.mli | 3 |
3 files changed, 14 insertions, 0 deletions
diff --git a/parsing/g_basevernac.ml4 b/parsing/g_basevernac.ml4 index 1bd70679ff..0b815a0c61 100644 --- a/parsing/g_basevernac.ml4 +++ b/parsing/g_basevernac.ml4 @@ -294,7 +294,11 @@ GEXTEND Gram VernacInfix (local,ai,ni,op,p,b,v8,sc) | IDENT "Distfix"; local = locality; a = entry_prec; n = natural; s = STRING; p = global; sc = OPT [ ":"; sc = IDENT -> sc ] -> + let (a,s,c) = Metasyntax.translate_distfix a s p in + VernacNotation (local,c,Some(s,[SetLevel n;SetAssoc a]),None,sc) +(* VernacDistfix (local,a,n,s,p,sc) +*) | IDENT "Notation"; local = locality; s = IDENT; ":="; c = constr; l = [ "("; IDENT "only"; IDENT "parsing"; ")" -> [SetOnlyParsing] | -> [] ] -> diff --git a/toplevel/metasyntax.ml b/toplevel/metasyntax.ml index 3d11b2412e..2a5fd697c9 100644 --- a/toplevel/metasyntax.ml +++ b/toplevel/metasyntax.ml @@ -888,6 +888,13 @@ let rec rename x vars n = function | WhiteSpace _::l -> rename x vars n l +let translate_distfix assoc df r = + let (vars,l) = rename "x" [] 1 (split df) in + let df = String.concat " " l in + let a = mkAppC (mkRefC r, vars) in + let assoc = match assoc with None -> Gramext.LeftA | Some a -> a in + (assoc,df,a) + let add_distfix local assoc n df r sc = (* "x" cannot clash since r is globalized (included section vars) *) let (vars,l) = rename "x" [] 1 (split df) in diff --git a/toplevel/metasyntax.mli b/toplevel/metasyntax.mli index aae9229125..31b8e046d0 100644 --- a/toplevel/metasyntax.mli +++ b/toplevel/metasyntax.mli @@ -35,6 +35,9 @@ val add_infix : locality_flag -> val add_distfix : locality_flag -> grammar_associativity -> precedence -> string -> reference -> scope_name option -> unit +val translate_distfix : grammar_associativity -> string -> reference -> + Gramext.g_assoc * string * constr_expr + val add_delimiters : scope_name -> string -> unit val add_notation : locality_flag -> constr_expr |
