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

Spirit V2.5

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.2 (Boost V1.46.0) to V2.5 (Boost V1.47.0)

Эта версия Spirit теперь поддерживает новую версию Boost.Phoenix (V3), которая была выпущена как часть Boost V1.47. Обратите внимание, что эта поддержка носит чисто предварительный характер и не должна считаться качеством продукции. Причина, по которой мы выпускаем это сейчас, заключается в том, чтобы позволить людям, которые хотят использовать новую версию Boost.Phoenix в своем коде, сделать это без каких-либо конфликтов с существующим кодом, используя Spirit. Вообще нет Спирит код должен быть изменен. Чтобы активировать использование Boost.Phoenix V3 для Spirit, необходимо определить следующую константу препроцессора для ваших сборок (до включения любого из файлов Spirit):

#define BOOST_SPIRIT_USE_PHOENIX_V3 1
New Features in Qi or Karma
  • Добавлено utree, общая, иерархическая и динамическая структура данных, которая может представлять абстрактные синтаксические деревья. Он хорошо интегрирован с Spirit.Qi и Spirit.Karma. Он может быть передан как атрибут, в то время как сводится к почти любой грамматике. В то же время, он может быть использован в качестве атрибута для генерации вывода из.
  • Добавлен новый макрос BOOST_SPIRIT_TERMINAL_NAME, который принимает два параметра (имя терминала и его тип). Раньше был только один параметр (имя терминала), и тип предполагал название терминала с приложением _type. Это привело к появлению неправильных идентификаторов C++ с такими терминалами, как int_, что привело к появлению типа int__type с фиктивным двойным подчеркиванием, которое предназначено для системного использования на C++.
  • Числовые парсеры теперь допускают произвольный радикс от 2..10 и 16
  • Заместитель _val теперь может быть использован в семантических действиях верхнего уровня за пределами любой правой стороны правила. >>>>>>>>>>>>>>>2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> В этом случае _val относится к значению атрибута, которое передается в parse() или phrase_parse() функции. Схожие конструкции теперь возможны в Spirit.Karma, а также:
    int i = 123; BOOST_TEST(test(">>>.
  • Добавлена поддержка для Spirit.Karma неподписанных числовых генераторов с произвольными значениями излучения в (включительно) диапазоне от 2.. 36.
Bug Fixes in Qi or Karma
  • Spirit.Qi целых литералов (например, int_(10)) больше не потребляет ввод на сбои.
  • #5246: mmap_file_iterator Не удается правильно инициализировать.
  • #5246: mmap_file_iterator Не удается правильно инициализировать.
  • Исправлена проблема с правильностью константа в karma::real_policies<>, препятствующая использованию типов конструкций с генератором. Спасибо Йерон Хабракен (a.k.a. VeXocide) за сообщение и за представление патча и теста.
  • Исправлено Spirit.Qi attr(attrib) parser, Spirit.Qi symbols< parser, и Spirit.Karma Они были сломаны в Boost V1.46.1 (благодарит Аарона Грэма и Джорга Бекера за сообщение о проблемах).
  • Исправлен stream parser, чтобы правильно настроить итератор основного потока ввода в случае, когда компонент потокового парсера был успешным. Спасибо Брайану О'Кеннеди, который сообщил о проблеме на Stackoverflow.
  • Исправленные неисправные генераторы цифр Кармы при использовании с адаптированными ADTs (благодаря Колину Рундел за сообщение этой проблемы).
Breaking Changes
  • Spirit.Qi директива repeat ошибочно реализованная семантика фиксации/закаталки для своего атрибута, оставляя ее нетронутой, если директива провалилась. Это поведение было устранено, поскольку оно несовместимо с аналогичными компонентами. Существующий код, опирающийся на эту функциональность, будет ломаться. Пожалуйста, обратитесь к директиве Spirit.Qi hold, чтобы посмотреть, как исправить ваш код.
  • Добавлено предпроцессорное определение BOOST_SPIRIT_NO_PREDEFINED_TERMINALS для предотвращения мгновенных сообщений предопределенных конечных объектов, которые замедляют время компиляции. Когда BOOST_SPIRIT_NO_PREDEFINED_TERMINALS определено, пользователь моментирует терминалы, которые ему нужны. Так, вместо того, чтобы писать , используя qi::uint_ вместо этого пишет: qi::uint_type uint_.
New Features in Lex
  • Добавлена возможность указать токен id при создании токен определения с использованием lex::char_ и lex::string. Оба примитива теперь принимают второй параметр, который будет интерпретирован как запрошенный токен id для любого токена, полученного из этого определения.
  • Добавлен новый токен типа lex::lexertl::position_token<>, который по существу plup-in совместим с существующим lex::lexertl::token<> класс. Тем не менее, он дополнительно сохраняет пару итераторов, указывающих на лежащую в основе последовательность ввода как итератор_диапазон.
Bug Fixes in Lex
  • Исправлена проблема с связыванием токеновых определений со всеми состояниями (используя "*" как название государства), когда к ним прилагались действия.
Making Stuff Work

Статья Spirit V2.5 раздела 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:57:45/0.030473947525024/1