On 12/15/13 3:45 AM, Timon Gehr wrote:
On 12/15/2013 12:12 PM, Brian Schott wrote:
On Friday, 13 December 2013 at 10:17:49 UTC, Brian Schott wrote:
I've been working on the next attepmpt at a std.lexer / std.d.lexer
recently. You can follow the progress on Github here:
https://github.com/Hackerpilot/lexer-work

I've ported DScanner over to this new lexer code. It's on a branch here:
https://github.com/Hackerpilot/Dscanner/tree/NewLexer.

One limitation I've noticed with the new tok!"tokenName" approach is
that while dmd has no problem with

case tok!"class":

it does have a problem with

goto case tok!"class":

I managed to work around this by adding new labels and "goto"-ing them
instead. Is this a bug or intentional?

I cannot reproduce your problem. If this does not work, it is a bug.

The problem is that tok is a dynamic value. It should be a static value. Current code:

static @property IDType tok(string symbol)()
{
    ...
}

It should be:

template IDType tok(string symbol)()
{
    alias tok = ...;
}

This is important - if the compiler thinks tok is a dynamic value, it'll generate crappy switch statements.

BTW @Brian - I didn't look at this in depth yet but it's very promising work. Thanks!


Andrei

Reply via email to