Я заинтересован в выборочном анализе разметки XML MediaWiki для генерации настраиваемой HTML-страницы, которая представляет собой некоторый поднабор HTML, созданный реальным механизмом рендеринга PHP Mediawiki.
Я хочу его для BzReader, автономного Mediawiki сжатого дампа, написанного на C #. Таким образом, синтаксический анализатор C # был бы идеальным, но любой хороший код помог бы.
Конечно, если никто этого не делал раньше, я думаю, пришло время начать проект, поддерживающий свободный и отдельный парсер средств Mediawiki, основанный на собственном парсере Mediawiki, но менее тесно интегрированный с самой Mediawiki.
Итак, кто-нибудь знает о какой-либо базе, с которой я мог бы начать, что было бы лучше, чем взломать из PHP-кода 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 #:
Класс, которым вы заняты, это Core.Formatter, у которого много регулярных выражений, чтобы выполнить свою работу:
public static class Formatter { }
Это не самый красивый код, «но он работает».
У меня было несколько слов, чтобы сказать о шаблонах Mediawiki. Интересно, что теперь есть список альтернативных парсеров, мне придется это расследовать.