What are AST Macros?

Nick Sabalausky a at a.a
Mon Jul 12 16:21:08 PDT 2010


"Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message 
news:op.vfq0aydoeav7ka at localhost.localdomain...
> On Mon, 12 Jul 2010 16:22:28 -0400, bearophile <bearophileHUGS at lycos.com> 
> wrote:
>
>> Steven Schveighoffer:
>>> bearophile:
>>> > String mixins are a hack, just a bit better than C preprocessor
>>> (because
>>> > they are scoped), they are not a replacement of clean macros.
>>>
>>> Interesting statement, can you back it up? :)  What can you do with a
>>> macro that you can't do with a mixin?
>>
>> In the meantime others have already given you some answers, I can add 
>> one example. The Brainfuck language allows you to do every kind of 
>> thing, I have seen even compilers written in it, but its usage is very 
>> unhandy, it's bug-prone, requires lot of code to do even simple things, 
>> and it's very hard to modify and debug programs written in it. What I 
>> meant is that string mixins in theory allow you to do many things, but 
>> in practice you can't use them for complex tasks, and you can't modify 
>> and fix the resulting code if you try to use them for more complex 
>> tasks. They are not a long-term solution for a language that seriously 
>> wants to improve over C and its preprocessor macros, they are a hack.
>
> Brainfuck is basically a toy example of a language.  Nobody uses it for 
> serious work.  Mixins are much better than a hack, the syntax of using 
> them is just not polished.  They are easy to use/understand because a) 
> people understand the language and b) people understand string 
> manipulation.
>

But when you're talking about the string being actual code, you're not 
always talking about typical string manipulation, sometimes you're talking 
about parsing which is only "string manipulation" superficially.

>
> I'll give you another example -- javascript and HTML editing.  Most people 
> would prefer to just use the innerHTML component of an element than have 
> to use the DOM methods to create individual elements and add them as 
> children, etc.
>

For writing, yes, but there's also reading: How many people do you know who 
would rather find the elements they want by parsing innerHTML instead of 
just dealing with the readily-available tree? None, I would hope, but the 
latter is essentially what we have to do for many of the more advanced 
things that string mixins *technically* replace AST macros for.




More information about the Digitalmars-d mailing list