The status of each property under the two named profiles. The playground
shows the same for any profile.
| Property | djot | markdown-like |
|---|
| A later line never changes a block already parsed. | proved | proved |
| Each byte of a paragraph is read once. | proved | proved |
| After an edit, reparsing can stop once the parser is back in the state it had before the edit. | proved | proved |
| Replacing one block leaves the parse of every other block unchanged. | proved | proved |
| Recording source positions does not change the parse. | proved | proved |
| Parsing takes linear time. | conjectured | conjectured |
| Text inside a block quote parses as it would at top level. | proved | proved |
| Text inside an item of a bullet or ordered list parses as it would at top level, when indented the way the formatter writes it. | proved | proved |
| The same, for the items of a definition list. | proved | proved |
| Text inside a fenced div parses as it would at top level, unless it contains the div's own closing fence. | proved | proved |
| Lines indented under a footnote belong to it, cannot affect anything outside it, and parse as they would at top level. | conditionalNot when the footnote's first line starts a list: the indentation of the following items is measured from the footnote marker. | conditionalNot when the footnote's first line starts a list: the indentation of the following items is measured from the footnote marker. |
| A text line that continues a paragraph may leave out the prefixes of the quotes, list items and footnotes around it, and parses as it would with them written. | proved | conditionalNot for a line that underlines the paragraph: it makes a setext heading. |
| A list is loose exactly where a blank line separates two of its items, or two blocks inside one item. | conditionalA blank line inside a code block does not count. | conditionalA blank line inside a code block does not count. |
| Indenting every line of a document by the same amount does not change its parse. | proved | proved |
| Whether [foo][bar] is a link does not depend on whether bar is defined. | proved | proved |
| Adding, removing or changing a reference definition changes only link and image attributes in the HTML. | proved | proved |
| A line inside a paragraph never starts a new block. | proved | brokenA line that begins with a list marker starts a list. |
| A heading continues on the following lines until a blank line. | proved | brokenA heading is one line. |
| Which blocks a document has, and how they nest, is decided without reading inline syntax. | conditionalExcept a table caption, which disappears when its inline content is empty. | conditionalExcept a table caption, which disappears when its inline content is empty. |
| When delimiters overlap, the first opener that gets closed wins, and a closer takes the closest open opener. Exactly one reading follows these rules, and the parser gives it. | proved | conditionalFor a paragraph without a character an extension claims: `[[` with wikilinks, `$` with dollar math, `:` with tags, `%` with holes, a hyphen when the delete delimiter is wider than one, or a parenthesis used as a delimiter. |
| The same rules, written as a grammar over a paragraph's delimiters, give every paragraph exactly one parse, and it is the reading the rules allow. | proved | proved |