aboutsummaryrefslogtreecommitdiffhomepage
path: root/parsing/g_prim.ml4
diff options
context:
space:
mode:
Diffstat (limited to 'parsing/g_prim.ml4')
-rw-r--r--parsing/g_prim.ml447
1 files changed, 26 insertions, 21 deletions
diff --git a/parsing/g_prim.ml4 b/parsing/g_prim.ml4
index 5363be633..f65ebd64d 100644
--- a/parsing/g_prim.ml4
+++ b/parsing/g_prim.ml4
@@ -8,14 +8,11 @@
(*i $Id$ i*)
-(*
-camlp4o pa_ifdef.cmo pa_extend.cmo pr_o.cmo pr_extend.cmo -quotify -DQuotify -impl parsing/g_prim.ml4
-*)
-
open Coqast
open Pcoq
open Names
open Libnames
+open Topconstr
ifdef Quotify then
open Qast
@@ -72,23 +69,30 @@ ifdef Quotify then
open Q
GEXTEND Gram
- GLOBAL: var ident natural metaident integer string preident ast astpat
- astact astlist qualid reference dirpath rawident;
+ GLOBAL: ident natural integer string preident ast
+ astlist qualid reference dirpath identref name base_ident var;
+ (* Compatibility: Prim.var is a synonym of Prim.ident *)
+ var:
+ [ [ id = ident -> id ] ]
+ ;
metaident:
[ [ s = METAIDENT -> Nmeta (loc,s) ] ]
;
- var:
- [ [ id = ident -> Nvar(loc, id) ] ]
- ;
preident:
[ [ s = IDENT -> s ] ]
;
- ident:
+ base_ident:
[ [ s = IDENT -> local_id_of_string s ] ]
;
- rawident:
- [ [ id = ident -> (loc,id) ] ]
+ name:
+ [ [ IDENT "_" -> (loc, Anonymous) | id = base_ident -> (loc, Name id) ] ]
+ ;
+ identref:
+ [ [ id = base_ident -> (loc,id) ] ]
+ ;
+ ident:
+ [ [ id = base_ident -> id ] ]
;
natural:
[ [ i = INT -> local_make_posint i ] ]
@@ -101,7 +105,8 @@ GEXTEND Gram
[ [ s = FIELD -> local_id_of_string s ] ]
;
dirpath:
- [ [ id = ident; l = LIST0 field -> local_make_dirpath (local_append l id) ] ]
+ [ [ id = base_ident; l = LIST0 field ->
+ local_make_dirpath (local_append l id) ] ]
;
fields:
[ [ id = field; (l,id') = fields -> (local_append l id,id')
@@ -109,26 +114,26 @@ GEXTEND Gram
] ]
;
basequalid:
- [ [ id = ident; (l,id')=fields -> local_make_qualid (local_append l id) id'
- | id = ident -> local_make_short_qualid id
+ [ [ id = base_ident; (l,id')=fields -> local_make_qualid (local_append l id) id'
+ | id = base_ident -> local_make_short_qualid id
] ]
;
qualid:
[ [ qid = basequalid -> loc, qid ] ]
;
reference:
- [ [ id = ident; (l,id') = fields ->
- Coqast.RQualid (loc, local_make_qualid (local_append l id) id')
- | id = ident -> Coqast.RIdent (loc,id)
+ [ [ id = base_ident; (l,id') = fields ->
+ Qualid (loc, local_make_qualid (local_append l id) id')
+ | id = base_ident -> Ident (loc,id)
] ]
;
string:
[ [ s = STRING -> s ] ]
;
astpath:
- [ [ id = ident; (l,a) = fields ->
+ [ [ id = base_ident; (l,a) = fields ->
Path(loc, local_make_path (local_append l id) a)
- | id = ident -> Nvar(loc, id)
+ | id = base_ident -> Nvar(loc, id)
] ]
;
(* ast *)
@@ -156,6 +161,6 @@ GEXTEND Gram
| "'"; a = ast -> Node(loc,"$QUOTE",[a]) ] ]
;
astlist:
- [ [ l = LIST0 Prim.ast -> l ] ]
+ [ [ l = LIST0 ast -> l ] ]
;
END