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

Generator Rule

Boost , Spirit 2.5.2 , Nonterminal Generators

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
Description

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

Header
// forwards to <boost/spirit/home/karma/nonterminal/rule.hpp>
#include <boost/spirit/include/karma_rule.hpp>

См. такжеВключите структуру.

Namespace

Имя

<boost::spirit::karma::rule>

Synopsis
template <typename OutputIterator, typename A1, typename A2, typename A3>
struct rule;
Template parameters

Параметр

Описание

по умолчанию

<OutputIterator>

Основной тип выходного итератора, над которым, как ожидается, будет работать правило.

Нет

<A1>,<A2>,<A3>

Или<Signature>,<Delimiter>или<Locals>в любом порядке. См. таблицу ниже.

См. таблицу ниже.

Вот более подробная информация о параметрах шаблона:

Параметр

Описание

по умолчанию

<Signature>

Указывает потребленные (стоимость к выходу) и унаследованные (аргументы) атрибуты правила. Подробнее об этом здесь:<Nonterminal>

<unused_type>. Когда<Signature>не соответствует<unused_type>, эффект такой же, как указание подписи<void()>, которая также эквивалентна<unused_type()>

.

<Delimiter>

Указывает генератор разграничителя правила. Укажите это, если вы хотите, чтобы правило разграничивало генерируемый выход.

<unused_type>

<Locals>

Указывает локальные переменные правила. См.<Nonterminal>

<unused_type>

Model of

Notation

r, r2

Правила

g

Выражение генератора

OutputIterator

Тип базового выходного итератора, над которым, как ожидается, будет работать правило.

A1, A2, A3

<Signature>,<Delimiter>или<Locals>в любом порядке.

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в<Nonterminal>.

выражение

Описание

<
rule<OutputIterator,A1,A2,A3>
   r(name);
>

Декларация правил.<OutputIterator>Требуется.<A1,A2,A3>являются необязательными и могут быть указаны в любом порядке.<name>— необязательная строка, дающая правилу его название, полезная для отладки.

rule<OutputIterator, A1, A2, A3>
    r(r2);

Копировать конструкцию правила<r>из правила<r2>

.

<r= r2;>

Назначить правило<r2><r>

.

<r.alias()>

Возвращение псевдонима<r>. Фамилия является генератором, который содержит ссылку на<r>. Справочная семантика.

<r.copy()>

Получить копию<r>

<r= g;>

Определение правил

<r%= g;>

Определение автоматического управления. Атрибут<g>должен быть совместим с потребляемым атрибутом<r>

.

<r.name()>

Восстановите текущее название объекта правил.

<r.name(name)>

Установите текущее название объекта правила<name>

.
Attributes

Атрибут генератора правила<RT>: Потребляемый атрибут правила.<Attribute>

Complexity

Сложность определяется сложностью генератора RHS<g>.

Example
[Note]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);


PrevUpHomeNext

Статья Generator Rule раздела Spirit 2.5.2 Nonterminal Generators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Nonterminal Generators ::


реклама


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

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