Markdown Extra Spec: Parsing Section

Michel Fortin michel.fortin at michelf.com
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 Markdown.pl 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 michelf.com
http://michelf.com/




More information about the Markdown-Discuss mailing list