DMD's lexer available on code.dlang.org
    Daniel Murphy via Digitalmars-d-announce 
    digitalmars-d-announce at puremagic.com
       
    Sun Jan  4 05:07:37 PST 2015
    
    
  
I've created a dub package for the D version of DMD's lexer, generated 
automatically from the C++ source.
github: https://github.com/yebblies/ddmd
dub: http://code.dlang.org/packages/ddmd
There are a few annoying limitations, such that it uses dmd's error printing 
and allocation functions, and requires configuration through 'global'.
Here is an example program that uses the lexer:
======================
import std.stdio;
import std.file;
import ddmd.tokens;
import ddmd.lexer;
/////////////////////////
void main()
{
    Lexer.initLexer();
    string data = "void blah() {} // stuff";
    auto l = new Lexer("myfile", data.ptr, 0, data.length, 0, 0);
    l.nextToken();
    do
    {
        printf("token: %s\n", l.token.toChars());
    }
    while (l.nextToken() != TOKeof);
}
======================
Prints:
token: void
token: blah
token: (
token: )
token: {
token: } 
    
    
More information about the Digitalmars-d-announce
mailing list