Version française
Home     About     Download     Resources     Contact us    
Browse thread
How to achieve this camlp4 syntax extension
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Conglun Yao <yaoconglun@g...>
Subject: How to achieve this camlp4 syntax extension
Dear all,

I tried to achieve the following syntax extension, but failed.

Add expression .[ ] after a module name, inside .[ ] I want to refer
to the specified module, like

let _ = M1.M2.[ here is my syntax,  using M1.M2 module ]

Here is my attempt (failed)

EXTEND Gram

GLOBAL: expr;

expr: LEVEL "top"[
[ e1 = module_longident; ".";  "[";  (*t = test_syntax;*)  "]" ->
  <:expr< $id:e1$ test >>
]];

END

Different kinds of error happened, when trying to use it.

Even the ordinary expression:  List.length [1; 2;3 ],  failed.  'List'
is parsed as module_longident, try to match the rule I defined.

Thanks for any help.

Conglun