В моем проекте мне нужно извлечь ссылки из HTML-документа. Для этого я подготовил Ragel HTML грамматики, прежде всего, на основе этой работы: https://github.com/brianpane/jitify-core/blob/master/src/core/jitify_html_lexer.rl (упоминается здесь: http://ragel-users.complang.narkive.com/qhjr33zj/ragel-grammars-for-html-css-and-javascript)Проблемы с разбором HTML с ragel
Почти все работает хорошо (спасибо за отличный инструмент!), За исключением одного вопроса я могу» т преодолеть на сегодняшний день:
Если я указываю этот текст в качестве вклада:
bbbb <a href="first_link.aspx"> cccc<a href="/second_link.aspx">
мой анализатор может корректно извлечь первую ссылку, но не второй. Разница между ними заключается в том, что между 'bbbb'
и '<a'
существует пробел, но нет пробелов между 'cccc'
и '<a'
.
В общем случае, если какой-либо текст, кроме пробелов, существует до отметки '<a'
, он анализирует его как содержимое, а парсер не распознает открытие тега.
В этом репо: https://github.com/amdei/ragel_html_sample умышленно упрощенный образец с грамматикой, предназначенный для работы как программа C (ngx_url_html_portion.rl). Существует также входной файл input-nbsp.html, который, как ожидается, будет содержать вход для приложения.
Для того, чтобы играть с ним, сделать .c-файл из грамматики:
ragel ngx_url_html_portion.rl
затем компилировать в результате .c-файл и запустить программку.
Входной файл должен находиться в одном каталоге.
Будем искренне благодарны за любую подсказку.