boost::spirit ухудшает производительность труда программиста, ибо со страшной силой увеличивает время компиляции. Сколько-нибудь нетривиальная грамматика обрабатывается компилятором минуты и десятки минут на типичной машине.
Есть более человеческие генераторы парсеров - Ragel (ну, правде, это скорее навороченный лексер, чем настоящий parser generator, в том смысле, что он парсеры он строит для регулярных языков, а не для контекстно-свободных - но для SQL-like должно хватить, кажется), ANTLR.
Парсер на хаскеле пишется за полчаса с использованием Text.ParserCombinators.Parsec. Именно парсер, а не разборщик по регэкспам. Юзаю - вполне нравится.
Хаскелл - это, конечно хорошо, но биндингов библиотек как-то немного. Потом, http://www.linux.org.ru/view-message.jsp?msgid=1776434 , пока мне не покажут, как на нём сделать ГАРАНТИРОВАННО хвостовую рекурсию, даже смотреть не буду. К тому же использовать хаскелл только ради того, что можно сделать на regexpах тоже не очень рационально.
А как у Spirit'а со скоростью? Я не эксперт по парсингу, но меня смущает тот факт, что все генераторы парсеров (например bison, antlr) делают нетривиальные вещи для того чтобы генерить более быстрый код (bison например DFA делает и его оптимизирует) , а Spirit как я понимаю просто система макросов/templates? Такой "наивный" парсер получается?
> Или проще на bison + yacc?
это одно и то же вроде, bison - gnu реализация yacc?
> Парсить надо SQL-Like конструкции.
Если именно SQL, то я б выбрал bison так как и Postgres и MySQL используют его. Можно грамматикой поживиться :)