On Monday, 10 February 2014 at 15:35:00 UTC, Patrick D. Jeeves wrote:
From what I can gather constructs like this just aren't allowed in D, but I don't understand why, can anyone explain it please?

It just wasn't there but there's some people who think it would be a good idea to add (including Walter I think) so it might be in later.


What you can do is write it all inline, then do a create an automatic documentation or interface file with dmd -D or dmd -H which strips out most the function bodies.

The other thing I want to know is about the mixin() command, and what the limitations of it are; I know it runs an interpreted version of D

mixin basically copy/pastes the code inside right into the source file then compiles it normally. The interpreted part is only running the function to create teh code, but then the created code is compiled normally.

So

mixin(foo());

foo() is interpreted, then the return value of it is compiled in normally.

Is this because it isn't possible to do such things, or because it would be rather pointless to do so compared to simpler approaches, (in this case calling the C function output by flex/bison).

I think it is just that nobody has tried yet. There are parser generators that work at compile time in D though https://github.com/PhilippeSigaud/Pegged for example

Reply via email to