Why can't a parser be written? Is there a halting problem or a grammar conflict? Or is "can't" short-hand for "too much trouble"?
Because the existing parser is written in truly emacs style: no formal grammar, just a lisp code with a regexp at each turn. Theoretically speaking it doesn't forbid you from writing a parser, but in practice there are no full-blown parsers of org-mode except the reference one.
So, yes, “too much trouble”, much of it nontechnical.