aboutsummaryrefslogtreecommitdiff
path: root/parsing
diff options
context:
space:
mode:
authorHugo Herbelin2017-08-23 20:32:15 +0200
committerHugo Herbelin2018-02-20 10:03:07 +0100
commit69822345c198aa6bf51354f6b84c7fd5d401bc9c (patch)
treecdca429d31c34bc606d5deb05ebbdba59695ac2e /parsing
parentb176959335a8cc097c254ea10b910e8ecbcde54b (diff)
Moving Metasyntax.register_grammar to Pcoq for usability in Egramcoq.
Renaming it register_grammars_by_name.
Diffstat (limited to 'parsing')
-rw-r--r--parsing/pcoq.ml12
-rw-r--r--parsing/pcoq.mli7
2 files changed, 19 insertions, 0 deletions
diff --git a/parsing/pcoq.ml b/parsing/pcoq.ml
index 54e7949aea..ddb26d7717 100644
--- a/parsing/pcoq.ml
+++ b/parsing/pcoq.ml
@@ -638,3 +638,15 @@ let () =
Grammar.register0 wit_constr (Constr.constr);
Grammar.register0 wit_red_expr (Vernac_.red_expr);
()
+
+(** Registering extra grammar *)
+
+type any_entry = AnyEntry : 'a Gram.entry -> any_entry
+
+let grammar_names : any_entry list String.Map.t ref = ref String.Map.empty
+
+let register_grammars_by_name name grams =
+ grammar_names := String.Map.add name grams !grammar_names
+
+let find_grammars_by_name name =
+ String.Map.find name !grammar_names
diff --git a/parsing/pcoq.mli b/parsing/pcoq.mli
index 75378d2c66..accb51366b 100644
--- a/parsing/pcoq.mli
+++ b/parsing/pcoq.mli
@@ -315,3 +315,10 @@ val (!@) : Ploc.t -> Loc.t
type frozen_t
val parser_summary_tag : frozen_t Summary.Dyn.tag
+
+(** Registering grammars by name *)
+
+type any_entry = AnyEntry : 'a Gram.entry -> any_entry
+
+val register_grammars_by_name : string -> any_entry list -> unit
+val find_grammars_by_name : string -> any_entry list