Hi All (& Nicolas in particular again), With my recent efforts to write a parser based on <https://orgmode.org/worg/dev/org-syntax.html>, I’ve developed a few thoughts on that document. Hopefully, they can lead to some improvements and clarifications.
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― As a general comment, in many places the Org Syntax document states what characters a component can contain, but not what objects/elements. This feels like a bit of a hole in the current specifications. Sections ════════ Heading ─────── ⁃ Ok, so `TITLE' can have any character but a newline, but what Org components can it contain? I’m going to assume any object? Affiliated Keywords ═══════════════════ Greater Elements ════════════════ Greater blocks ────────────── ⁃ It is not explained what is ment by a “special block” ⁃ Aren’t lines starting with `#+' also quoted by a comma? Drawers and Property Drawers ──────────────────────────── ⁃ “Contents can contain any element but another drawer” • Does “any element” mean “any Element or Greater Element” Dynamic Blocks ────────────── ⁃ It is not specified what `CONTENTS' may be ⁃ Surely `PARAMETERS' cannot contain a newline? Plain Lists and Items ───────────────────── ⁃ It is not completely clear what content an item may have. I assume any Object? Tables ────── ⁃ Surely newlines are not allowed in `FORMULAS' Elements ════════ Clocks ────── Two allowed forms are listed, but are all four of the below allowed or only two? ┌──── │ CLOCK: INACTIVE-TIMESTAMP │ CLOCK: INACTIVE-TIMESTAMP DURATION │ CLOCK: INACTIVE-TIMESTAMP-RANGE │ CLOCK: INACTIVE-TIMESTAMP-RANGE DURATION └──── All the best, Timothy