The spec is organized into "content blocks", "leaf blocks", and inline content. I should take this as a hint to do the same. So the first task in the parser should be to parse the block structure. - Blocks - Leaf - Thematic break - ATX heading - Setext heading - Indented chunk + Indented code block is a sequence of indented chunks. + Preserve count of blank lines. - Fenced code block - HTML blocks - Link reference definition - Paragraph - Blank lines + These are part of the document, but they are not rendered. - Container - Blockquote - List Item + List is a sequence of list items of the same type. - Inline - Inline code - Strong, emph - Links - Inline - Reference - Images - Auto - HTML - Text