Lexer and parser generators using CTFE

Philippe Sigaud philippe.sigaud at gmail.com
Tue May 29 10:09:36 PDT 2012


On Mon, May 28, 2012 at 11:42 PM, John Belmonte <john at neggie.net> wrote:
> Fair enough.  I did notice the following in the markdown PEG though which
> could benefit from first class patterns:
>
>
> # Parsers for different kinds of block-level HTML content.
> # This is repetitive due to constraints of PEG grammar.
>
> HtmlBlockOpenAddress <- '<' Spnl ("address" / "ADDRESS") Spnl HtmlAttribute*
> '>'
> HtmlBlockCloseAddress <- '<' Spnl '/' ("address" / "ADDRESS") Spnl '>'
> HtmlBlockAddress <- HtmlBlockOpenAddress (HtmlBlockAddress /
>   !HtmlBlockCloseAddress .)* HtmlBlockCloseAddress
>
> HtmlBlockOpenBlockquote <- '<' Spnl ("blockquote" / "BLOCKQUOTE") Spnl
>   HtmlAttribute* '>'
> HtmlBlockCloseBlockquote <- '<' Spnl '/' ("blockquote" / "BLOCKQUOTE") Spnl
> '>'
> HtmlBlockBlockquote <- HtmlBlockOpenBlockquote (HtmlBlockBlockquote /
>   !HtmlBlockCloseBlockquote .)* HtmlBlockCloseBlockquote
>

You're exactly right! Nice catch.

I took this PEG from another github project (I hope I put the
attribution somewhere?) and that was before Pegged accepted
parameterized rules. I could indeed drastically factor the previous
code.


More information about the Digitalmars-d mailing list