What are AST Macros?

Michel Fortin michel.fortin at michelf.com
Sun Jul 11 06:29:36 PDT 2010


On 2010-07-11 08:47:26 -0400, "Lars T. Kyllingstad" 
<public at kyllingen.NOSPAMnet> said:

> On Sun, 11 Jul 2010 14:26:51 +0200, Philippe Sigaud wrote:
> 
>> That's interesting. Do you have a link or any text I could read on that?
>> String mixins sure are powerful, but I can't get ird of a feeling of
>> 'cheating' when using them. Maybe with some kind of string interpolation
>> they could be made more palatable to some?
> 
> I find that using token strings, q{ ... }, rather than ordinary "..."
> strings, sometimes makes string mixins feel less like a hack.  Especially
> considering that my editor (vim) highlights token strings like ordinary
> code -- or, more likely, it doesn't recognise them as strings. ;)

Personally, I find it *more* like a hack. q{...} is just a way to 
disguise a string as not being one, it's like using a second hack to 
better hide the first hack. But it's too hacks instead of one, and thus 
it's more obscure.

That said, I don't feel like I'm cheating when using string mixins. I 
find them a quite good substitute to AST macros. And perhaps string 
mixins are simpler too: you don't have to learn a new macro syntax, you 
just manipulate strings. Though I'm still waiting for the day we can 
use string mixins in expressions to do things like this:

	int num = 1;
	string result = substitute!"Number: $num";
	assert(result == "Number: 1");

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list