DIP 50 - AST macros
Jacob Carlborg
doob at me.com
Wed Nov 20 23:28:40 PST 2013
On 2013-11-20 23:25, luka8088 wrote:
> If I understood you correctly, the issue with current way DSLs are
> implemented is that code needs to be parsed two times. First time DSL
> author parses it and creates D code from it, and second time D compiler
> parses that D code and compiles it. What I would suggest in this case is
> that instead of intercepting the compiler and "fixing" the semantics
> before it is verified we allow the user to build D Ast and give it to
> the compiler. That is why I used the mixin in my example.
>
> Ast dCodeAst = dslToD!(q{
> if true
> do()
> else
> dont()
> dont2()
> whatever()
> });
>
> // manipulate dCodeAst
>
> mixin(dCodeAst);
>
> The point of this example is that mixin() accepts Ast instead of string.
> That way, we parse our DSL to D Ast and give it straight to the compiler
> and everything is done only once!
So how is this different except for my proposal, except the use of q{}
and "mixin"?
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list