![]() |
![]() ![]() ![]() ![]() |
![]() |
Generator RuleBoost , Spirit 2.5.2 , Nonterminal Generators
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Имя |
|---|
< |
template <typename OutputIterator, typename A1, typename A2, typename A3> struct rule;
|
Параметр |
Описание |
по умолчанию |
|---|---|---|
< | Основной тип выходного итератора, над которым, как ожидается, будет работать правило. | Нет |
< | Или< | См. таблицу ниже. |
Вот более подробная информация о параметрах шаблона:
|
Параметр |
Описание |
по умолчанию |
|---|---|---|
< | Указывает потребленные (стоимость к выходу) и унаследованные (аргументы) атрибуты правила. Подробнее об этом здесь:< | < |
< | Указывает генератор разграничителя правила. Укажите это, если вы хотите, чтобы правило разграничивало генерируемый выход. | < |
< | Указывает локальные переменные правила. См.< | < |
Notation
r,
r2Правила
gВыражение генератора
OutputIteratorТип базового выходного итератора, над которым, как ожидается, будет работать правило.
A1, A2, A3<Signature>,<Delimiter>или<Locals>в любом порядке.
Семантика выражения определяется только там, где она отличается от или не определена в<Nonterminal>.
|
выражение |
Описание |
|---|---|
<rule<OutputIterator,A1,A2,A3> r(name);> | Декларация правил.< |
rule<OutputIterator, A1, A2, A3> r(r2);
| Копировать конструкцию правила< |
< | Назначить правило< |
< | Возвращение псевдонима< |
< | Получить копию< |
< | Определение правил |
< | Определение автоматического управления. Атрибут< |
< | Восстановите текущее название объекта правил. |
< | Установите текущее название объекта правила< |
Атрибут генератора правила<
RT>: Потребляемый атрибут правила.<Attribute>
Сложность определяется сложностью генератора RHS<
g>.
![]() | Note |
|---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::karma::rule; using boost::spirit::karma::int_; using boost::spirit::ascii::space; using boost::spirit::ascii::space_type;
Основное правило:
rule<output_iterator_type> r; r = int_(123); test_generator("123", r);
Правило с потребляемым атрибутом:
rule<output_iterator_type, int()> ra; ra = int_; test_generator_attr("123", ra, 123);
Правило с делимитером и потребляемым атрибутом:
rule<output_iterator_type, std::vector<int>(), space_type> rs; rs = *int_; std::vector<int> v; v.push_back(123); v.push_back(456); v.push_back(789); test_generator_attr_delim("123 456 789", rs, space, v);
Статья Generator Rule раздела Spirit 2.5.2 Nonterminal Generators может быть полезна для разработчиков на c++ и boost.
:: Главная :: Nonterminal Generators ::
реклама |