aboutsummaryrefslogtreecommitdiffhomepage
path: root/parsing/g_module.ml4
diff options
context:
space:
mode:
Diffstat (limited to 'parsing/g_module.ml4')
-rw-r--r--parsing/g_module.ml466
1 files changed, 11 insertions, 55 deletions
diff --git a/parsing/g_module.ml4 b/parsing/g_module.ml4
index 56db0cb59..a3714c43b 100644
--- a/parsing/g_module.ml4
+++ b/parsing/g_module.ml4
@@ -6,8 +6,6 @@
(* * GNU Lesser General Public License Version 2.1 *)
(***********************************************************************)
-(*i camlp4deps: "parsing/grammar.cma" i*)
-
(* $Id$ *)
open Pp
@@ -16,75 +14,33 @@ open Pcoq
open Prim
open Module
open Util
+open Topconstr
(* Grammar rules for module expressions and types *)
GEXTEND Gram
- GLOBAL: ne_binders_list module_expr
- module_type;
+ GLOBAL: module_expr module_type;
- ident:
- [ [ id = Prim.var -> id ] ]
- ;
-
- ident_comma_list_tail:
- [ [ ","; idl = LIST0 ident SEP "," -> idl
- | -> [] ] ]
- ;
-
- qualid:
- [ [ id = Prim.var; l = fields -> <:ast< (QUALID $id ($LIST $l)) >>
- | id = Prim.var -> <:ast< (QUALID $id) >>
- ] ]
- ;
- fields:
- [ [ id = FIELD; l = fields -> <:ast< ($VAR $id) >> :: l
- | id = FIELD -> [ <:ast< ($VAR $id) >> ]
- ] ]
- ;
-
- vardecls: (* This is interpreted by Pcoq.abstract_binder *)
- [ [ id = ident; idl = ident_comma_list_tail;
- ":"; mty = module_type ->
- <:ast< (BINDER $mty $id ($LIST $idl)) >> ] ]
- ;
-
- ne_vardecls_list:
- [ [ id = vardecls; ";"; idl = ne_vardecls_list -> id :: idl
- | id = vardecls -> [id] ] ]
- ;
-
- rawbinders:
- [ [ "["; bl = ne_vardecls_list; "]" -> bl ] ]
- ;
-
- ne_binders_list:
- [ [ bl = rawbinders; bll = ne_binders_list -> bl @ bll
- | bl = rawbinders -> bl ] ]
- ;
-
module_expr:
- [ [ qid = qualid -> <:ast< (MODEXPRQID $qid) >>
- | me1 = module_expr; me2 = module_expr ->
- <:ast< (MODEXPRAPP $me1 $me2) >>
- | "("; me = module_expr; ")" ->
- me
+ [ [ qid = qualid -> CMEident qid
+ | me1 = module_expr; me2 = module_expr -> CMEapply (me1,me2)
+ | "("; me = module_expr; ")" -> me
(* ... *)
] ]
;
with_declaration:
- [ [ "Definition"; id = ident; ":="; c = Constr.constr ->
- <:ast< (WITHDEFINITION $id $c) >>
- | IDENT "Module"; id = ident; ":="; qid = qualid ->
- <:ast< (WITHMODULE $id $qid) >>
+ [ [ "Definition"; id = base_ident; ":="; c = Constr.constr ->
+ CWith_Definition (id,c)
+ | IDENT "Module"; id = base_ident; ":="; qid = qualid ->
+ CWith_Module (id,qid)
] ]
;
module_type:
- [ [ qid = qualid -> <:ast< (MODTYPEQID $qid) >>
+ [ [ qid = qualid -> CMTEident qid
(* ... *)
| mty = module_type; "with"; decl = with_declaration ->
- <:ast< (MODTYPEWITH $mty $decl)>> ] ]
+ CMTEwith (mty,decl) ] ]
;
END