On 2020-10-26 at 10:59 -07, Tom Gillespie <tgb...@gmail.com> wrote... > You can identify headlines, but you can't identify nesting level;
Do you need to? This is valid as an entire Org file, I think: *** foo * bar ***** baz And that can be represented in EBNF. I'm not aware of places where behavior is indent-level specific, except inline tasks, and that edge case can be represented. > There is a similar issue with the indentation level in > order to correctly interpret plain lists. list ::= ('+' string newline)+ sublist? sublist ::= (indent list)+ I think this captures lists? > Another example of something that requires a stack is the greater > blocks, where you have #+begin_{name} and #+end_{name}, and the names > must match. Definitely not able to be represented in EBNF, unless as you say {name} is a limited vocabulary. -k.