Markdown

:= [Heading({ level : Level, content : List(Inline) }), Paragraph(List(Inline)), Blockquote(List(Markdown)), ListBlock({ kind : ListKind, loose : Bool, items : List({ task : TaskState, blocks : List(Markdown) }) }), Code({ info : Str, pre : Str }), ThematicBreak, Table({ header : List(List(Inline)), align : List(Alignment), rows : List(List(List(Inline))) }), HtmlBlock(Str), Frontmatter({ raw : Str }), TODO(Str)]

Inline

:= [Text(Str), Strong(List(Inline)), Emphasis(List(Inline)), Strikethrough(List(Inline)), InlineCode(Str), Link({ label : List(Inline), target : LinkTarget }), Image({ alt : List(Inline), target : LinkTarget }), HardBreak, HtmlInline(Str)]