Где найти хороший анализатор MediaWiki Markup в PHP? - PullRequest
5 голосов
/ 22 июня 2009

Я бы немного попробовал взломать код MediaWiki, но я понял, что было бы ненужным, если бы я мог получить независимый парсер.

Может ли кто-нибудь помочь мне с этим?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 15 декабря 2010

Бен Хьюз прав. Это очень трудно сделать правильно, особенно если вы хотите анализировать реальные статьи из больших вики, таких как сама Википедия, со 100% точностью. Это часто обсуждается в списке рассылки wikitech, и ни один альтернативный парсер не придумал этот товар, несмотря на многочисленные попытки.

Во-первых, на самом деле это не парсер, поскольку у него нет такого понятия, как AST (абстрактное синтаксическое дерево). Это конвертер, который специально конвертирует в HTML.

Во-вторых, не попадайтесь в ловушку мышления вики-текста как языка разметки, который в редких случаях может быть расширен с помощью HTML. Вы должны думать об этом как о расширении HTML. Гораздо проще добавить поддержку викитекста в анализатор HTML, чем добавить поддержку HTML в анализатор викитекста.

Что сводится к тому, что если вам нужен какой-либо другой формат, вам нужно будет преобразовать HTML в этот формат.

По сути, заявлено, что только MediaWiki может анализировать вики-текст. Но да, парсер тесно интегрирован с остальным кодом. Опытные хакеры MediaWiki плохо реагируют на вопросы об изоляции парсера - я пробовал (-:

Но я все равно пошел дальше и изолировал его. Он еще не закончен или не готов поделиться с кем-либо еще. Но в основном вы хотите начать с того, что источник MediaWiki не установлен или не подключен к базе данных или веб-серверу. Создайте программу-заглушку PHP, которая включает в себя парсер и вызовет точку входа. Проверьте ошибку, когда она не запускается, и создайте фальшивую заглушку для класса, функции или глобального объекта, к которому был получен доступ. Повторяйте до тех пор, пока вы не укажете большинство мест, где парсер взаимодействует с остальной частью MediaWiki.

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

Проверьте мой запрос функции: Ошибка 25984 - Изолировать анализатор от зависимостей базы данных

3 голосов
/ 22 июня 2009

Это на самом деле невероятно сложный формат для анализа. Вы можете попытаться отделить компонент парсера от медиа-вики (так как это также php), но это запутанный беспорядок. Я видел несколько частично автономных, которые выполняют почти разумную работу для очень ограниченного подмножества разметки.

Если вам удастся внедрить один или изменить текущую википедию, дайте мне знать, поскольку это может быть весьма полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...