Lexer and parser generators using CTFE

John Belmonte john at neggie.net
Sun May 27 14:13:43 PDT 2012


On Thursday, 1 March 2012 at 15:10:36 UTC, Philippe Sigaud wrote:
>>> mixin(Grammar!("Doc <- Node*"
>>> "Node <- OpeningTag (Text / Node)* ClosingTag", NodeAction,
>>> "OpeningTag <- '<' Identifier '>'", OpeningAction,
>>> "ClosingTag <-  `</` Identifier '>'", ClosingAction,
>>> "Text <- (!(OpeningTag / ClosingTag) _)+"));
>>
>>
>> That looks about right, but still has a fair amount of noise. 
>> I think the
> approach of putting the entire grammar in one string is best.
>
> Yes, using one string is indeed better. That won't be too 
> difficult to code.

I'm wondering if people have seen LPeg.  It's a Lua library, but 
the design is interesting in that patterns are first class 
objects which can be composed with operator overloading.

http://www.inf.puc-rio.br/~roberto/lpeg/



More information about the Digitalmars-d mailing list