Вопрос:
Я хочу отобразить синтаксис MediaWiki (и я имею в виду синтаксис MediaWiki, используемый WikiPedia, а не какой-либо другой формат вики из какого-либо другого движка, такого как WikiPlex), а также в C #.
Ввод: строка разметки MediaWiki
Вывод: HTML-строка
Есть несколько альтернативных синтаксических анализаторов mediawiki, но ничего в C #, и, кроме того, определение C / C ++ выглядит мрачно из-за структуры этих библиотек.
В качестве руководства по синтаксису я использую http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet
Моя первая цель - правильно отобразить разметку этой страницы.
Разметку можно увидеть здесь: http://en.wikipedia.org/w/index.php?title=Wikipedia:Cheatsheet&action=edit
Теперь, если я использую Regex, от него мало толку, потому что нельзя точно сказать, какой теги заканчивают начальные, особенно когда некоторые элементы, такие как курсив, становятся атрибутом родительского элемента.
С другой стороны, посимвольный анализ также не является хорошим подходом, потому что например, '' 'означает полужирный,' 'означает курсив, а' '' '' означает полужирный и курсив ...
Я пытался портировать код некоторых других синтаксических анализаторов, но реализации java неясны, а Реализации Python имеют совершенно другой синтаксис регулярных выражений.
На данный момент лучший подход, который я вижу, - это перенос mwlib на IronPython. http://www.mediawiki.org/wiki/Alternative_parsers
Но, честно говоря, я не с нетерпением жду добавления среды выполнения IronPython в качестве зависимости к моему приложению, и даже если бы я захотел, документация в лучшем случае плохая.