aboutsummaryrefslogtreecommitdiffhomepage
path: root/parsing
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-06-30 01:49:24 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-06-30 01:49:24 +0000
commit66b6a5540c63b2a690082d479e483d4f52a73d76 (patch)
tree09462e65cfcd7f03d0373f12ac0cc308a93d09ac /parsing
parent2fd40ff72d3b7b54422b9b00b394c9c446cb5cd7 (diff)
Fixing Camlp4 compilation.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16613 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'parsing')
-rw-r--r--parsing/compat.ml413
1 files changed, 13 insertions, 0 deletions
diff --git a/parsing/compat.ml4 b/parsing/compat.ml4
index e82f35274..f872c4a2d 100644
--- a/parsing/compat.ml4
+++ b/parsing/compat.ml4
@@ -310,3 +310,16 @@ let expl_anti loc e = <:expr< $anti:e$ >>
ELSE
let expl_anti _loc e = e (* FIXME: understand someday if we can do better *)
END
+
+(** Qualified names in OCaml *)
+
+IFDEF CAMLP5 THEN
+let qualified_name loc path name =
+ let fold dir accu = <:expr< $uid:dir$.$accu$ >> in
+ List.fold_right fold path <:expr< $lid:name$ >>
+ELSE
+let qualified_name loc path name =
+ let fold dir accu = Ast.IdAcc (loc, Ast.IdUid (loc, dir), accu) in
+ let path = List.fold_right fold path (Ast.IdLid (loc, name)) in
+ Ast.ExId (loc, path)
+END