Let's stop parser Hell

Roman D. Boiko rb at d-coding.com
Sun Jul 8 14:22:38 PDT 2012


On Sunday, 8 July 2012 at 21:03:41 UTC, Jonathan M Davis wrote:
> It's been too long since I was actively working on parsers to 
> give any details, but it is my understanding that because a 
> hand-written parser is optimized for a specific grammar, it's 
> going to be faster.

My aim is to find out any potential bottlenecks and ensure that 
those are possible to get rid of. So, let's try.

I believe it would not hurt generality or quality of a parser 
generator if it contained sews for inserting custom (optimized) 
code where necessary, including those needed to take advantage of 
some particular aspects of D grammar. Thus I claim that 
optimization for D grammar is possible.

> Also, look at dmd and dmc vs other compilers. They use 
> hand-written parsers and are generally much faster than their 
> competitors.

Due to which particular design or implementation decisions? Would 
it be possible to name a few which are relevant in this context?

> One thing to remember about hand-written parsers vs generative 
> ones though is that they usually are completely different in 
> terms of the type of parser that you write (e.g. hand-written 
> parsers are generally recursive-decent parser whereas 
> generative ones usually use bottom-up parsers).

So far discussion goes in favor of LL(*) parser like ANTLR, which 
is top-down recursive-descent. Either Pegged will be optimized 
with LL(*) algorithms, or a new parser generator created.




More information about the Digitalmars-d mailing list