11-Nov-2013 01:20, Jacob Carlborg пишет:
I've been thinking quite long of how AST macros could look like in D.
I've been posting my vision of AST macros here in the newsgroup a couple
of times already. I've now been asked to create a DIP out of it, so here
it is:
http://wiki.dlang.org/DIP50
I have to say I like it.
I find it nice that it would allow one to finally ensure that inlining
is always done by making critical primitives macros instead of
functions. This is vastly superior compared to the _only_ current option
of generating unrolled code with string mixins.
I'd call attribute macros - declaration macros in line with statement
macros, then describe how they look - a lot like attributes.
Things to note though:
- Can't implement scope(exit/success/failure) because that would need
to capture the outer scope to pack it into try/catch/finally.
- Can't implement foreach if only because of the syntax of the latter.
- There is no definition of Ast!(T) construct - I take it's a struct
or a class of sorts and the whole thing works with the CTFE engine. Then
it also needs specification of Statements, Declarations.
- It seems like I can use AST literal in R-T code as well? That would
be useful but only if some library actually accepted these AST nodes.
--
Dmitry Olshansky