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

The design of the library

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 22. Boost.Metaparse

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

Цель библиотеки - предоставить инструменты для создания шаблонных метапрограмм, способных интерпретировать содержимое строки буквально и генерировать код, отображать сообщения об ошибках и т. Д. На основе содержимого строки буквально. Такие метапрограммы называютсяпарсером.с. Метапарс основан напарсерных комбинаторах.

Ключевые компоненты библиотеки:

  • Представление строки в режиме компиляции. Это инструменты для представления содержимого строки в буквальном смысле, что позволяет шаблонным метапрограммам работать над ними. Для этого библиотека предоставляет класс шаблонов<string>, который является заменой Boost.]<BOOST_METAPARSE_STRING>Макро.
  • Парсеры. Это классы метафункций шаблонов, которые анализируют префикс строки буквально. Это простыепарсер, обеспечивающие основные строительные блоки для более сложных, выполняющих некоторую полезную работу.
  • Парсерные комбинаторы. Этошаблонная метафункция, которая принимаетпарсерв качестве аргумента и/или возвращаетпарсерв качестве их результата. Их можно использовать для построения все более сложныхпарсеровиз простых.
  • Почему шаблонное метапрограммирование?

Альтернативой является использование<constexpr>функций вместо шаблонных метапрограмм. Есть определенные вещи, которые трудно (если возможно) использовать<constexpr>функции: построение контейнеров (на время компиляции), длина которых зависит от разборного текста (например, разбор списка JSON), генерирование и проверка типов (например,<printf>).

  • Почему так много складных парсеров?

Скорость компиляции и потребление памяти являются важной частью библиотек на основе метапрограммирования шаблонов. Пользователи библиотечных интерфейсов, созданных с помощью Metaparse, должны будут платить за это каждый раз, когда они компилируют свой код. Поэтому важно предоставить авторам парсера возможность использовать парсерные комбинаторы с минимальными накладными расходами, в то время как также важно предоставить удобные комбинаторы для начинающих и для случаев, когда это лучший вариант в любом случае.

<repeated>в сочетании с<sequence>,<accept_when>и<transform>могут заменить любой из складывающихся парсеров, однако по стоимости строительства промежуточных контейнеров, которые (обычно) обрабатываются последовательно после этого.


PrevUpHomeNext

Статья The design of the library раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 22. Boost.Metaparse может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 22. Boost.Metaparse ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:40:58/0.0084719657897949/1