Точка настройки transform_attribute теперь должна реализовать третью функцию: voidfail(Expos&), которая обычно ничего не сделает. Эта функция будет называться всякий раз, когда правая сторона правила (или встроенный парсер attr_cast) терпит неудачу. Это изменение затрагивает только Qi. Подробнее см. описание traits::transform_attribute.
Добавлена поддержка последовательностей атрибутов, созданных с помощью BOOST_FUSION_ADAPT_CLASS и BOOST_FUSION_ADAPT_CLASS_NAMED. Эта поддержка требует включения нового файла заголовка: #include<boost/spirit/>//support_adapt_class_attributes.hpp>.
Добавлено карма::поток_итератор как аналог qi::istream_iterator (см. новый файл заголовка:#>поддержка>>><>>>>.
Добавлено qi::hold, что позволяет убедиться, что встроенный парсер не касается переданного атрибута в случае, если он потерпит неудачу.
Добавлено qi::no_skip директива, которая эквивалентна qi::>lexeme, за исключением того, что она не является предварительной скипкой.
Добавлено карма::no_delimit директива, которая эквивалентна karma::verbatim, за исключением того, что она не выполняет постограниченный шаг.
Добавлена новая политика ввода_iterator для multi_pass Iterator framework (названная buffering_input_iterator), позволяющая обертывать входные итераторы, которые не хранят последний символ, читаемый из входного документа (например, std::istream_iterator). Теперь это используется в качестве политики ввода по умолчанию.
Последовательности (в Qi и Karma) теперь могут иметь компонент, не имеющий атрибута, даже как их последний элемент.
Последовательности (в Qi и Karma) теперь могут взять одну последовательность атрибутов элемента в качестве их атрибута.
Конструкции, такие как karma::buffer[karma::buffer[.]] больше не приводят к двойной буферизации. То же самое верно, если альтернатива обернута в директиву karma::buffer[] (например: buffer[a]|b).
Spirit.Karma выходной итератор (который используется внутри, но также подвергается воздействию при использовании потокового API) теперь правильно копируется (благодаря Jonas Persson за отчетность по этому вопросу).
По умолчанию multi_pass итератор теперь используется с входными итераторами, которые не хранят последний символ, читаемый из ввода (например, std::istream_iterator). Спасибо Ларри Эвансу и Питеру Шуллеру за независимое сообщение об этой проблеме.
Директива karma::omit[] теперь не принимает произвольный тип атрибутов больше.
Spirit.Karma предикаты (предназначенные и непредназначенные) и директива karma::omit[] теперь полностью отключить выход вместо перехвата в буфер, который был отброшен как раньше.
Исправлено карма::правило, чтобы правильно обрабатывать необязательные атрибуты.
Библиотека больше не минимизирует сгенерированные таблицы лексера для динамических лексеров по умолчанию. Сгенерированные таблицы теперь будут сведены к минимуму только для статических лексеров.
Функция lexer<>::init_dfa() в настоящее время занимает один боолеиновый параметр (который не соответствует false), позволяющий заставить минимизацию сгенерированных таблиц lexer.
Статья Spirit V2.3 раздела Spirit 2.5.2 What's New может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.