evolving the spec (was: forking Markdown.pl?)
29mtuz102 at sneakemail.com
Sun Mar 2 01:22:05 EST 2008
On 1 Mar 2008, at 19:19, David Parsons wrote:
>> I agree that Markdown needs to be defined unambiguously, but I don't
>> think that's feasible with plain English [...]
> I'm not so sure about this. I managed to write a markdown
> implementation without using anything other than the daring
> syntax document and MarkdownTest_1.0. And I am by no means a
> Perl programmer.
And no offense, but there must be hundreds of edge-cases where your
implementation disagrees with Markdown.pl.
Have a look e.g. at http://six.pairlist.net/pipermail/markdown-discuss/2006-August/000151.html
for some edge cases related to nesting block elements, where the
outcome is ambiguous, and I am quite sure there are no tests, as
Markdown.pl generates bad HTML for most of them.
A formal grammar defines _exactly_ how things should be, as I argue
where I also show how Markdown.pl presently has unintuitive
precedence which is definitely not defined in the syntax document and
something I doubt is in the tests (as the behavior to me is
unattractive, but stems from how Markdown.pl is implemented, and thus
most of the ports as well).
The problem so far has been that the formal syntax normally used to
define grammars does not support Markdown’s notion of embedding, but
as mentioned here http://six.pairlist.net/pipermail/markdown-discuss/2008-February/001002.html
I have had some success with a rule-based implementation that uses a
stack for aggregating rules that needs to be applied to the current
line before it is handed to the regular parser -- this allows a
specification without code and which is unambiguous to edge-cases
since the rules are exhaustive, unlike a document written in English.
Though without changing a lot of edge-case behavior, I find it hard to
see Markdown using such rule-based implementation, so personally I am
favoring a new Markdown-inspired language.
More information about the Markdown-Discuss