On Monday, 11 November 2013 at 19:23:21 UTC, Ellery Newcomer
wrote:
On 11/10/2013 01:20 PM, Jacob Carlborg wrote:
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
For macros that generate macros, I think you need a way to
escape the splicing and maybe define how splicing works in an
inner quasi quote.
I guess you want <[ <[ $exp ]> ]> to turn into the ast <[ 1 ]>
Then if you wanted ast <[ <[ $exp ]> ]> with the splice
associated with the inner quasi quote, you'd have to do
something like
<[ <[ <[ \\\$exp ]> ]> ]>
maybe a way to associate a splice with a quasi quote?
<a[ <b[ <c[ $(a, exp) + $(b, exp) + $(c, exp) ]> ]> ]>
a's exp is A
b's exp is B
c's exp is C
then splice the quasi quote N times:
1: ast <b[ <c[ A + $(b, exp) + $(c, exp) ]> ]>
2: ast <c[ A + B + $(c, exp) ]>
3: ast A + B + C
just dinking around here
$ refers to the enclosing scope. so $$foo should refers to $foo
in the enclosing scope. No need for special rule or label.