Dear all, Here is a draft of a formal grammar for Org mode [1]. It is still in a rough state, despite quite a bit of work. However, following some changes to improve performance for parsing real (big) Org files, I think it is time to share it with the community so that we can start to gather feedback. There are a number of opportunities that I have found for simplifying the org grammar (sometimes by extending it to make it more regular, and in the process adding useful features) that are much easier to understand with this grammar in hand as a reference. The grammar itself is implemented using Racket's #lang brag (see [2] for an overview of brag's syntax). I had considered trying to break it up into literate sections in an Org file, but for now decided to leave it as a single file to simplify the development workflow. As a result the full implementation is fairly long [3]. Comments and feedback would be greatly appreciated. Best! Tom
1. https://github.com/tgbugs/laundry 2. https://docs.racket-lang.org/brag/#%28part._.The_language%29 3. https://github.com/tgbugs/laundry/blob/master/org-mode/parser.rkt