std.d.lexer: pre-voting review / discussion

dennis luehring dl.soluz at gmx.net
Thu Sep 12 01:25:50 PDT 2013


Am 12.09.2013 10:15, schrieb Brian Schott:
> I got some time to work on the lexer this evening. Changeset
> here:
> https://github.com/Hackerpilot/phobos/commit/9bdb7f97bb8021f3b0d0291896b8fe21a6fead23#std/d/lexer.d
>
> The DDoc page has moved here:
> http://hackerpilot.github.io/experimental/std_lexer/phobos/std_d_lexer.html
>
> * There are a few more unit tests now
> * bitAnd renamed to amp
> * slice rename to dotdot
> * Much more cross-referencing in the doc comments
> * Start line and column can be specified in the lexer config
>

problem: many occurences of the same string

you should use constants for the tokens (and others)

string asm_token = "asm";
...

immutable(string[TokenType.max + 1]) tokenValues = [
   ...
   asm_token
   ...
]

and reuse these constants in your "optimization"

maybe you can replace these lines with something getting feed with 
asm_token and give the same result but without 'a' and "sm" as splitted 
and different magic values - maybe a nice template or subrange...

case 'a': if (input[1..$].equal("sm")) return TokenType.asm_; else
...
break;

and in your unit tests

for example

on auto expected =




More information about the Digitalmars-d mailing list