LINUX.ORG.RU

boost::spirit ухудшает производительность труда программиста, ибо со страшной силой увеличивает время компиляции. Сколько-нибудь нетривиальная грамматика обрабатывается компилятором минуты и десятки минут на типичной машине.

Есть более человеческие генераторы парсеров - Ragel (ну, правде, это скорее навороченный лексер, чем настоящий parser generator, в том смысле, что он парсеры он строит для регулярных языков, а не для контекстно-свободных - но для SQL-like должно хватить, кажется), ANTLR.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, посмотрю на Ragel - вроде что-то не очень сложное, и развивается, в отличие от spiritа.

krum
() автор топика

Парсер на хаскеле пишется за полчаса с использованием Text.ParserCombinators.Parsec. Именно парсер, а не разборщик по регэкспам. Юзаю - вполне нравится.

Zmacs
()
Ответ на: комментарий от Zmacs

Хаскелл - это, конечно хорошо, но биндингов библиотек как-то немного. Потом, http://www.linux.org.ru/view-message.jsp?msgid=1776434 , пока мне не покажут, как на нём сделать ГАРАНТИРОВАННО хвостовую рекурсию, даже смотреть не буду. К тому же использовать хаскелл только ради того, что можно сделать на regexpах тоже не очень рационально.

krum
() автор топика
Ответ на: комментарий от aton

> Precompiled headers наше все, без этого boost'ом вообще невозможно пользоваться.

Довольно очевидно, что в процессе разработки грамматики оно нифига не помогает...

anonymous
()
Ответ на: комментарий от anonymous

Не совсем то, ph надо делать из бустовых хедеров, сам так делаю, скорость компиляуции возрастает на порядок.

aton
()

А как у Spirit'а со скоростью? Я не эксперт по парсингу, но меня смущает тот факт, что все генераторы парсеров (например bison, antlr) делают нетривиальные вещи для того чтобы генерить более быстрый код (bison например DFA делает и его оптимизирует) , а Spirit как я понимаю просто система макросов/templates? Такой "наивный" парсер получается?

> Или проще на bison + yacc?

это одно и то же вроде, bison - gnu реализация yacc?

> Парсить надо SQL-Like конструкции.

Если именно SQL, то я б выбрал bison так как и Postgres и MySQL используют его. Можно грамматикой поживиться :)

gods-little-toy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.