I was using cmark for my ~wiki (which is actually an HTTP interface to a CRDT oplog). I was a bit unhappy with that extra dependency. I have a ton of parsers in the codebase, all Ragel based. So I thought, can I create a Ragel parser for CommonMark? Seems like a very basic grammar. As it turned out, it is not that simple. CommonMark basically consists of a ton of ad-hoc rules, plus half a ton of exceptions to those rules.
Then I thought: can I make a rational subset of CommonMark that is simple, clear, non-ambiguous? As long as it is backwards-compatible, I can leverage all the exisiting Markdown codebases. Meanwhile, the new code will only deal with the strict grammar.
Well, this is how far I advanced: StrictMark. Currently I use a Ragel-based parser, as intended. The formal grammar is in the end of the document.
I apreciate your thoughts on the subject!