При парсинге разметки Викимедиа - плохо удовлетворяют основанным на EBNF синтаксическим анализаторам?

второй valgrind... и я добавлю электрический забор .

9
задан Nemo 6 April 2015 в 18:00
поделиться

4 ответа

Третий смотрит относительно корня сайта, поэтому, если вы находитесь на странице:

http://entrian.com/somewhere/page.html

, он заглянет в:

http://entrian.com/images/logo.gif

игнорируя где-то часть адреса страницы.

Чтобы проанализировать его, вам необходимо иметь возможность полностью анализировать HTML и CSS (поскольку они могут быть встроены) и обрабатывать полное создание и расширение шаблона, а также любое добавление парсера, которое могло использовать соответствующее содержимое. Этот экземпляр шаблона эквивалентен препроцессору.

В некотором смысле он похож на синтаксический анализ C ++, за исключением того, что синтаксический анализатор также обрабатывает искаженный ввод и произвольные синтаксические добавления, сделанные расширениями синтаксического анализатора. Фактическая реализация mediawiki очень похожа на Perl 5, исходная реализация была не так уж плоха, потому что все граничные случаи просто выпадают, хотя все связано вместе, но на самом деле заставить любую последующую реализацию сделать то же самое действительно сложно, особенно с учетом того, что поведение часто возникает и не задокументировано, а не задумано.

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

Короче говоря, нет EBNF граммер не очень подходит для анализа разметки mediawiki, но на самом деле ничто не подходит ...

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

Короче говоря, нет EBNF граммер не очень хорошо подходит для анализа разметки mediawiki, но на самом деле ничто не подходит ...

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

Короче говоря, нет EBNF граммер не очень хорошо подходит для анализа разметки mediawiki, но на самом деле ничто не подходит ...

4
ответ дан 4 December 2019 в 22:29
поделиться

Однажды я попытался написать синтаксический анализатор для Boost.Quickbook , который по сути такой же, как вики-текст, используемый в Википедии.

Это было очень утомительно. просто для того, чтобы получить некоторые основы работы, но я думаю, что со временем можно будет написать для него грамматику EBNF. Если вам интересно, мой частичный синтаксический анализатор доступен в Интернете (грамматика встроена в строки документации).

1
ответ дан 4 December 2019 в 22:29
поделиться

Вы правы. Викимедиа не поддается использованию четко определенных грамматиков EBNF.

Вам нужно будет посмотреть на инструменты, которые будут выполнять возврат, чтобы иметь возможность анализировать Wiki

btyacc, который является yacc с возвратом. http://www.siber.com/btyacc/

Вы можете посмотреть на Accent. Лучше чем Yacc http://accent.compilertools.net/

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

Удачи

3
ответ дан 4 December 2019 в 22:29
поделиться

Этот ответ немного необычен, но как насчет рендеринга текста и последующего синтаксического анализа HTML Dom для определения различных компонентов вики.

0
ответ дан 4 December 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: