DDMD and such.

Nick Sabalausky a at a.a
Wed Sep 28 14:03:56 PDT 2011


"Jonathan M Davis" <jmdavisProg at gmx.com> wrote in message 
news:mailman.271.1317243599.26225.digitalmars-d at puremagic.com...
> On Wednesday, September 28, 2011 13:43 Nick Sabalausky wrote:
>> "Jonathan M Davis" <jmdavisProg at gmx.com> wrote in message
>> news:mailman.261.1317239287.26225.digitalmars-d at puremagic.com...
>>
>> > I would point out that there is an intention to eventually get a D 
>> > lexer
>> > and
>> > parser into Phobos so that tools can take advantage of them. Those 
>> > could
>> > eventually lead to a frontend in D but would provide benefits far 
>> > beyond
>> > simply
>> > having the compiler in D.
>>
>> Is the interest more in a D-specific lexer/parser or a generalized one? 
>> Or
>> is it more of a split vote? I seem to remember interest both ways, but I
>> don't know whether there's any consensus among the DMD/Phobos crew.
>>
>> A generalized lexer is nothing more than a regex engine that has more 
>> than
>> one distinct accept state (which then gets run over and over until EOF).
>> And the FSM is made simply by doing a combined regex "(regexForToken1 |
>> regexForToken2 | regexForToken3 | ... )", and then each of those parts
>> just get their own accept state. Which makes me wonder...
>>
>> There was a GSoC project to overhaul Phobos's regex engine, wasn't there?
>> Is that done? Is it designed in a way that the stuff above wouldn't be
>> real hard to add?
>>
>> And what about algoritm? Is it a Thompson NFA, ie, it traverses the NFA 
>> as
>> if it were a DFA, effectively "creating" the DFA on-the-fly)? Or does it
>> just traverse the NFA as an NFA? Or does it create an actual DFA and
>> traverse that? An actual DFA would probably be best for a lexer. If a 
>> DFA,
>> is it an optimized DFA? In my (limited) tests, it didn't seem like
>> DFA-optimization would yield a notable benefit on typical
>> programming-langauge tokens. It seems to be more suited to pathological
>> cases.
>
> There is some desire to have a lexer and parser in Phobos which basically 
> have
> the same implementation as dmd (only in D instead of C++). That way, 
> they're
> very close to the actual compiler, and it's easy to port fixes and
> improvements between the two.

The lexer seems like something that would change only on rare occasions. Am 
I wrong?

>
> However, we definitely also want a more general lexer/parser generator 
> which
> takes advantage of D's metaprogramming capabalities. Andrei was pushing 
> more
> for that and doesn't really like the idea of the other, since it would 
> reduce
> the desire to produce the more general solution. So, this _is_ some 
> dissension
> on the matter. But there's definitely room for both. It's just a question 
> of
> time and manpower.
>

I see.




More information about the Digitalmars-d mailing list