Markdown Extra Spec: Parsing Section

Michel Fortin michel.fortin at
Thu May 15 23:58:56 EDT 2008

Le 2008-05-13 à 10:02, John MacFarlane a écrit :

> No, PEG can't do this. But there is a different approach that works

> (described in my earlier email).

You're right, and I'm quite familiar with this approach for parsing
nested blocks as it is what and PHP Markdown do. I may
switch back to that solution if problems arise with the current
approach or if it proves to be more useful.

By not choosing a grammar early, I'm less constrained about what I can
do in the spec, and I think that's desirable at this early stage.

> By the way: if I understand it correctly, your description of "Code

> block" would parse the following as two code blocks, not one code

> block

> containing a blank line:


> some code


> more code


> (Note: there is no tab on the middle line.) I don't think that's the

> desired behavior.

Indeed. Fixed, but please read the new thread about the subject.

> Here's the markdown-peg version (and remember, this is "runnable"):


> verbatim <- newRule $

> many1 (doesNotMatch blankline ->> indentedLine) <++>

> (many (many1 (optional indent ->> blankline) <++>

> many1 (doesNotMatch blankline ->> indentedLine)) ## concat)

> <<-

> many blankline ## Verbatim . concat

And I was under the impression that you had given me a nearly complete
cheatsheet of the PEG grammar in that previous email. What does $, -
>>, <++>, and ## mean?

Michel Fortin
michel.fortin at

More information about the Markdown-Discuss mailing list