![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Repetition Generator Directive (repeat[])Boost , Spirit 2.5.2 , Generator Directives
|
Имя |
---|
< |
< |
Notation
Семантика выражения определяется только там, где она отличается от или не определена в<UnaryGenerator
>.
выражение |
Семантика |
---|---|
< | Повторить генератор< |
< | Повторите генератор< |
< | Повторите генератор< |
< | Повторите генератор< |
![]() | Note |
---|---|
Все неисправные итерации встроенного генератора будут потреблять один элемент из поставляемого атрибута. Общий< |
См.Составные обозначения атрибутов.
выражение |
атрибут |
---|---|
< | <a:A-->repeat[a]:vector<A> a:Unused-->repeat[a]:Unused> |
< |
a: A --> repeat(num)[a]: vector<A> a: Unused --> repeat(num)[a]: Unused
|
< |
a: A --> repeat(num1, num2)[a]: vector<A> a: Unused --> repeat(num1, num2)[a]: Unused
|
< |
a: A --> repeat(num, inf)[a]: vector<A> a: Unused --> repeat(num, inf)[a]: Unused
|
![]() | Important |
---|---|
В таблице выше используется< < |
Важно отметить, что директива<repeat[]
>не выполняет буферизации вывода, генерируемого встроенными элементами. Это означает, что любой неисправный генератор элементов может уже генерировать некоторый выход, которыйнеоткатился назад.
![]() | Tip |
---|---|
Самый простой способ заставить директиву< buffer[repeat[a]] негенерирует выход в случае выхода из строя генератора< repeat[buffer[a]] Он не будет генерировать частичный выход из генератора< |
Общая сложность генератора повторения определяется сложностью его встроенного генератора. Сложность самого повтора - O(N), где N - число повторений для выполнения.
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые включают:
#include <boost/spirit/include/karma.hpp> #include <boost/spirit/include/support_utree.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <iostream> #include <string>
Некоторые используют декларации:
using boost::spirit::karma::double_; using boost::spirit::karma::repeat;
Основное использование директивы генератора<repeat
>:
std::vector<double> v; v.push_back(1.0); v.push_back(2.0); v.push_back(3.0); test_generator_attr("[1.0][2.0][3.0]", repeat['[' << double_ << ']'], v); test_generator_attr("[1.0][2.0]", repeat(2)['[' << double_ << ']'], v); // fails because of insufficient number of items test_generator_attr("", repeat(4)['[' << double_ << ']'], v);
Статья Repetition Generator Directive (repeat[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Generator Directives ::
реклама |