Код парсера с открытым исходным кодом для разметки Mediawiki

Я заинтересован в выборочном анализе разметки XML MediaWiki для генерации настраиваемой HTML-страницы, которая представляет собой некоторый поднабор HTML, созданный реальным механизмом рендеринга PHP Mediawiki.

Я хочу его для BzReader, автономного Mediawiki сжатого дампа, написанного на C #. Таким образом, синтаксический анализатор C # был бы идеальным, но любой хороший код помог бы.

Конечно, если никто этого не делал раньше, я думаю, пришло время начать проект, поддерживающий свободный и отдельный парсер средств Mediawiki, основанный на собственном парсере Mediawiki, но менее тесно интегрированный с самой Mediawiki.

Итак, кто-нибудь знает о какой-либо базе, с которой я мог бы начать, что было бы лучше, чем взломать из PHP-кода Mediawiki?

Solutions Collecting From Web of "Код парсера с открытым исходным кодом для разметки Mediawiki"

Существует список парсеров на http://www.mediawiki.org/wiki/Alternative_parsers , но ac # parser там не включен …

Обновить
Наоборот, Screwturn не придерживается синтаксиса Mediawiki, но использует свой собственный вариант, который немного меняется.

Синтаксис Mediawiki не поддается анализу LALR (или даже LL *), поскольку в его определении много неопределенностей, а также позволяет HTML. В этом вопросе обсуждается вопрос : вы, по сути, придерживаетесь написания собственного парсера и токенизатора, а не просто записи BNF-файла для него, а затем использования ANTLR / Gold / Irony.

Roadkill Wiki использует синтаксический анализатор Creole для разбора Mediawiki, но с ограниченной поддержкой.


Screwturn выпускается под лицензией GPL и имеет синтаксический анализатор C #:

  • Лицензия на винт
  • Загрузите источник винтовки (к сожалению, нет веб-svn)

Класс, которым вы заняты, это Core.Formatter, у которого много регулярных выражений, чтобы выполнить свою работу:

public static class Formatter { } 

Это не самый красивый код, «но он работает».

У меня было несколько слов, чтобы сказать о шаблонах Mediawiki. Интересно, что теперь есть список альтернативных парсеров, мне придется это расследовать.