[wg-camlp4] Against the use of syntactically-valid OCaml code for syntax extension purposes
    Leo White 
    lpw25 at cam.ac.uk
       
    Tue Jan 29 18:16:21 GMT 2013
    
    
  
>I propose to start discussing the addition of attributes to most 
>syntactic categories (expressions, type expressions, patterns, type 
>declarations, module expressions, structure/signature items, etc).  I 
>suggest to adopt "expressions" as the (default) nature of attribute's 
>content, because the syntax for expressions is quite flexible.  We need 
>some syntax to attach such an attribute to various syntactic categories. 
>  It might be a good idea to support both prefix and postfix attributes. 
>  Personally I don't care too much about the choice of syntax, and I'm 
>very bad at picking good syntax.  Good proposal are welcome! 
How about allowing {: foo }, {% foo }, {@ foo },
 <: foo < bar >>, <% foo < bar >>  and <@ foo < bar >> ?
The idea is that "{" means it is a valid OCaml expression as oppossed to 
"<" which means it is an unlexed string.
":" means that it is an expression/pattern/type on its own and the 
type-checker should raise an error if it still exists after all 
preprocessing is done.
"%" means it is a postfix attribute that can safely be ignored by the 
type-checker.
"@" means it is a prefix attribute that can safely be ignored by the type 
checker.
This seems fairly systematic and covers many possible use cases.
    
    
More information about the wg-camlp4
mailing list