Комментарии 21
Похвальное начинание, но для того чтобы претендовать на практическую полезность, даже без покрытия тестами, нужно произвести и опубликовать сравнение по производительности с другими парсерами/конвертерами
Интересней было бы увидеть аналогичный парсер для Markdown (с использованием FSM). Особенно в свете недавней инициативы по разработке общепринятой спецификации Markdown habrahabr.ru/post/235611/
Но как мне кажется, в случае с markdown без регулярок не обойтись, например для нахождения доп. параметров, так как не представляю какой будет размер матрицы для FSM чтобы учесть всё.
Но как мне кажется, в случае с markdown без регулярок не обойтись, например для нахождения доп. параметров, так как не представляю какой будет размер матрицы для FSM чтобы учесть всё.
Для markdown Carsten из нашей команды недавно написал быстрый гибридный парсер: github.com/cebe/markdown
Пару лет назад обсуждалось на реддите. Может быть вам будет интересно. Там же реализация парсера на конечных автоматах, правда на си и за счет кодогенерации.
Хотелось бы увидеть бенчмарки с регулярками на тестовых данных с большим вложением тегов.
Используйте константы. Через месяц вы уже и сами не вспомните что за магия чисел происходит
Мне больше нравится либа XBBCode от наших узбекистанских друзей. Правда, по-моему сам изначальный разработчик то ли подзабил свой проект, то ли он на гитхабе под другим ником теперь… В общем самая развитая ветка на гитхабе вот эта: github.com/Gemorroj/xBBCode
Сам его слегка правил и улучшал (как ни странно мои правки тоже вошли в его код).
PS: эти парсеры удивительно похожи… Хм.
Сам его слегка правил и улучшал (как ни странно мои правки тоже вошли в его код).
PS: эти парсеры удивительно похожи… Хм.
Я, конечно, не PHP-программист, но мне показалось что это и есть xBB.
Но нет, код совершенно другой.
Есть некие схожие признаки, но да, код другой. Представленный в статье однозначно не xBB
Парсер на регулярках:
— Может некорректно обрабатывать BBCode;
Регулярка — это тот же конечный автомат, только описанный в компактной форме. Он может работать некорректно только в том случае, если вы написали некорректное регулярное выражение, и — при всем уважении — найти ошибку в нем куда легче, чем в матрице из 200 чисел.
Кстати говоря, как вы решаете проблему с некорректным вводом, типа такого:
[b]Test[/i]
Зашел в комментарии, чтобы написать что-то подобное.
Действительно, автор, Вам стоило бы обратить внимание на то, что конечные автоматы и регулярные выражения имеют одинаковую мощность языков (может быть термин уже неправильно называю, но смысл понятен должен быть). Поэтому создавать автомат с помощью жестко закодированной таблицы в наше время как бы не слишком разумно.
Действительно, автор, Вам стоило бы обратить внимание на то, что конечные автоматы и регулярные выражения имеют одинаковую мощность языков (может быть термин уже неправильно называю, но смысл понятен должен быть). Поэтому создавать автомат с помощью жестко закодированной таблицы в наше время как бы не слишком разумно.
На всякий случай оставлю ссылку на PECL: pecl.php.net/package/bbcode
Хорошая работа, но мне больше нравятся peg парсеры чем LL(предсказывающие анализаторы). Код выглядит очень лаконично и без магических цифр.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Парсер BBCode без регулярных выражений