Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Spirit V2.4.2

Boost , Spirit 2.5.2 , What's New

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
What's changed in Spirit.Qi and Spirit.Karma from V2.4.1 (Boost V1.45.0) to V2.4.2 (Boost V1.46.0)
New Features in Qi or Karma
  • Добавлены индексы ключевых слов для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(...)>.
Bug Fixes in Qi or Karma
  • Исправлена проблема с обработкой атрибутов контейнера для последовательностейSpirit.Qi, из-за чего правильно разобранные атрибуты первых элементов были перезаписаны более поздними элементами последовательности.
  • ИсправленоДух.Кармагенератор<string(s)>. Он преуспел, даже если<s>соответствовал только приставке его атрибута.
What's changed in Spirit.Lex from V2.4.1 (Boost V1.45.0) to V2.4.2 (Boost V1.46.0)
New Features in Lex
  • Добавлен<qi::tokenid()>примитивный парсер, позволяющий сопоставлять произвольные токены лексера на основе данного идентификатора токена. Разница с<qi::token()>заключается в том, что он раскрывает в качестве своего атрибута идентификатор токена совпадающего токена (вместо диапазона итератора совпадающего ввода, как<qi::token()>).
  • Добавлен дополнительный параметр шаблона к определению по умолчанию<lexertl::token<>>: тип идентификатора токена. Этот тип по умолчанию<std::size_t>. Любой тип, используемый в качестве типа идентификатора, должен быть (явно) конвертируемым из<std::size_t>.
  • Теперь можно прикрепить семантические действия лексера к определениям токенов на основе<lex::char()>и<lex::string()>.
  • Теперь можно указать состояние лексера, на которое лексер должен автоматически переключаться после сопоставления определенных токенов. По этой причине синтаксис определения токена был расширен:<
    template<typenameLexer>
    structlexer:lex::lexer<Lexer>
    {
       lexer()
       {
           int_="[1-9][0-9]*";
           this->self("INITIAL","TARGETSTATE")=int_;
       }
       lex::token_def<int>int_;
    };
    
    >Этот пример лексера будет соответствовать токену<int_>и затем переключит лексера в состояние<"TARGETSTATE">. Если второй аргумент не указан, лексер остается в прежнем состоянии (как и раньше).
  • Примитивы парсера<qi::token>и<qi::tokenid>теперь могут использоваться без каких-либо аргументов. В этом случае они будут соответствовать любому токену.
  • <lex::lit()>была удалена.
Bug Fixes in Lex
  • Исправлена проблема в Лексере, дающем проблемы, одновременно назначая токены для всех состояний лексера. Теперь это возможно, просто используя «*» в качестве названия государства. Например, это добавит токен int_ ко всем состояниям лексера:<
    template<typenameLexer>
    structlexer:lex::lexer<Lexer>
    {
       lexer()
       {
           int_="[1-9][0-9]*";
           this->self("*")=int_;
       }
       lex::token_def<int>int_;
    };
    
    >Примечание:<self("*") =...>должно быть выполнено после того, как все состояния лексера были введены в объект лексера.
  • Зафиксированный взгляд Лексера. Операция Lookahead теперь оценивается с использованием состояния лексера, с которым связан экземпляр<token_def>.
  • Исправлена проблема в итераторе<multi_pass>, в результате чего неправильные токены возвращаются пользователю. Это может произойти в сочетании с лексером, который выполнял изменения состояния лексера и использовал<pass_fail>в семантических действиях, чтобы сделать совпадение токенов неудачным.
Known Problems
  • Spirit.Qiцелые буквальные числа (например,<int_(10)>) потребляют вход на отказ, что может привести к проблемам с альтернативным оператором.

PrevUpHomeNext

Статья Spirit V2.4.2 раздела Spirit 2.5.2 What's New может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: What's New ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:47:16/0.0076711177825928/0