Добавлены индексы ключевых слов дляSpirit.QiиSpirit. кармак документам.
Введен новый пункт настройки<traits::assign_to_container_from_value>, который используется для атрибутов контейнера, когда к этому контейнеру необходимо добавить значение атрибута.
Заменить<proto::lit>(который был использован для реализации<spirit::lit>) отдельной версией, позволяющей отличать «lit(foo)» от «foo». Это не должно изменять семантику и не должно нарушать выходной код.
Добавлена директиваSpirit.Qi<as<T>[]>(и ее струнные специализации<as_string[]>и<as_wstring[]>), позволяющая назначать типы атрибутов контейнера в целом.
причастие. Кармадиректива<as<T>[]>(и ее струнные специализации<as_string[]>и<as_wstring[]>), позволяющие обрабатывать типы атрибутов контейнера во время генерации продукции в целом.
ВSpirit.Qi<lit()>теперь можно использовать и для числовых букв.
Парсерный компонент<symbols<>>теперь имеет явное имя, используемое для обработки ошибок и отладки, которое может быть установлено с использованием новых функций члена<sym.name(...)>. Спасибо Тиджею за то, что внёс свой вклад.
Компонент генератора<symbols<Attrib,T>>теперь имеет явное имя, используемое для обработки ошибок и отладки, которое может быть установлено с использованием новых функций члена<sym.name(...)>.
Исправлена проблема с обработкой атрибутов контейнера для последовательностейSpirit.Qi, из-за чего правильно разобранные атрибуты первых элементов были перезаписаны более поздними элементами последовательности.
ИсправленоДух.Кармагенератор<string(s)>. Он преуспел, даже если<s>соответствовал только приставке его атрибута.
Добавлен<qi::tokenid()>примитивный парсер, позволяющий сопоставлять произвольные токены лексера на основе данного идентификатора токена. Разница с<qi::token()>заключается в том, что он раскрывает в качестве своего атрибута идентификатор токена совпадающего токена (вместо диапазона итератора совпадающего ввода, как<qi::token()>).
Добавлен дополнительный параметр шаблона к определению по умолчанию<lexertl::token<>>: тип идентификатора токена. Этот тип по умолчанию<std::size_t>. Любой тип, используемый в качестве типа идентификатора, должен быть (явно) конвертируемым из<std::size_t>.
Теперь можно прикрепить семантические действия лексера к определениям токенов на основе<lex::char()>и<lex::string()>.
Теперь можно указать состояние лексера, на которое лексер должен автоматически переключаться после сопоставления определенных токенов. По этой причине синтаксис определения токена был расширен:<
>Этот пример лексера будет соответствовать токену<int_>и затем переключит лексера в состояние<"TARGETSTATE">. Если второй аргумент не указан, лексер остается в прежнем состоянии (как и раньше).
Примитивы парсера<qi::token>и<qi::tokenid>теперь могут использоваться без каких-либо аргументов. В этом случае они будут соответствовать любому токену.
Исправлена проблема в Лексере, дающем проблемы, одновременно назначая токены для всех состояний лексера. Теперь это возможно, просто используя «*» в качестве названия государства. Например, это добавит токен int_ ко всем состояниям лексера:<
>Примечание:<self("*")=...>должно быть выполнено после того, как все состояния лексера были введены в объект лексера.
Зафиксированный взгляд Лексера. Операция Lookahead теперь оценивается с использованием состояния лексера, с которым связан экземпляр<token_def>.
Исправлена проблема в итераторе<multi_pass>, в результате чего неправильные токены возвращаются пользователю. Это может произойти в сочетании с лексером, который выполнял изменения состояния лексера и использовал<pass_fail>в семантических действиях, чтобы сделать совпадение токенов неудачным.
Spirit.Qiцелые буквальные числа (например,<int_(10)>) потребляют вход на отказ, что может привести к проблемам с альтернативным оператором.
Статья Spirit V2.4.2 раздела Spirit 2.5.2 What's New может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.