Lexer and parser generators using CTFE
Christopher Bergqvist
spambox0 at digitalpoetry.se
Tue Feb 28 17:16:12 PST 2012
On Tuesday, 28 February 2012 at 08:36:13 UTC, CTFE-4-the-win
wrote:
> On Tuesday, 28 February 2012 at 07:59:16 UTC, Andrei
> Alexandrescu
> wrote:
>> I'm starting a new thread on this because I think the matter
>> is of strategic importance.
>>
>> We all felt for a long time that there's a lot of potential in
>> CTFE, and potential applications have been discussed more than
>> a few times, ranging from formatting strings parsed to DSLs
>> and parser generators.
>>
>> Such feats are now approaching fruition because a number of
>> factors converge:
>>
>> * Dmitry Olshansky's regex library (now in Phobos) generates
>> efficient D code straight from regexen.
>>
>> * The scope and quality of CTFE has improved enormously,
>> making more advanced uses possible and even relatively easy
>> (thanks Don!)
>>
>> * Hisayuki Mima implemented a parser generator in only 3000
>> lines of code (sadly, no comments or documentation yet :o))
>>
>> * With the occasion of that announcement we also find out
>> Philippe Sigaud has already a competing design and
>> implementation of a parser generator.
>>
>> This is the kind of stuff I've had an eye on for the longest
>> time. I'm saying it's of strategic importance because CTFE
>> technology, though not new and already available with some
>> languages, has unique powers when combined with other features
>> of D. With CTFE we get to do things that are quite literally
>> impossible to do in other languages.
>>
>> We need to have a easy-to-use, complete, seamless, and
>> efficient lexer-parser generator combo in Phobos, pronto. The
>> lexer itself could use a character-level PEG or a classic
>> automaton, and emit tokens for consumption by a parser
>> generator. The two should work in perfect tandem (no need for
>> glue code). At the end of the day, defining a complete
>> lexer+parser combo for a language should be just a few lines
>> longer than the textual representation of the grammar itself.
>>
>> What do you all think? Let's get this project off the ground!
>>
>>
>> Thanks,
>>
>> Andrei
>
> Definitely, I applaud this initiative! I've long been of the
> opinion that CTFE parsing is D's killer-feature, which would
> allow me to "sneak" D into a "nameless above average size
> company". ;)
I agree that the current direction of D in this area is
impressive. However, I fail to see a killer-feature in
generating a lexer-parser generator at compile-time instead of
run-time.
A run-time generator would benefit from not having to execute
within the limited CTFE environment and would always be on-par in
that respect. A compile time generator would internalize the
generation and compilation of the result (with possible
glue-code), simplifying the build process somewhat.
What am I failing to pick up on?
More information about the Digitalmars-d
mailing list