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

Compound Attribute Rules

Boost , Spirit 2.5.2 , Quick Reference

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
Notation

Нотация, которую мы будем использовать, будет иметь форму:

a: A, b: B, ... --> composite-expression: composite-attribute

<a>,<b>и т.д. — операнды.<A>,<B>и т.д. являются атрибутами операнда.<composite-expression>является выражением, включающим операнды, и<composite-attribute>является результирующим типом атрибута составного выражения.

Например:

a: A, b: B --> (a >> b): tuple<A, B>

<a>и<b>являются парсерами, и<A>является типом атрибута<a>, и<B>является типом атрибута<b>, тогда тип атрибута<a >>b>будет<tuple<A,B>>.

[Important] Important

В таблицах атрибутов мы будем использовать<vector<A>>и<tuple<A,B...>>только в качестве заполнителей. Нотация<vector<A>>означаетлюбойSTLконтейнер, удерживающий элементы типа<A>, а нотация<tuple<A,B...>>означаетлюбойBoost.Fusionпоследовательность, удерживающий<A>,<B>и т.д. элементы.<Unused>означает<unused_type>.

Compound Parser Attribute Types

выражение

атрибут

Последовательность<a>> b>

<
a:A,b:B-->(a>>b):tuple<A,B>
a:A,b:Unused-->(a>>b):A
a:Unused,b:B-->(a>>b):B
a:Unused,b:Unused-->(a>>b):Unused
a:A,b:A-->(a>>b):vector<A>
a:vector<A>,b:A-->(a>>b):vector<A>
a:A,b:vector<A>-->(a>>b):vector<A>
a:vector<A>,b:vector<A>-->(a>>b):vector<A>
>

Ожидайте<a> b>

<
a:A,b:B-->(a>b):tuple<A,B>
a:A,b:Unused-->(a>b):A
a:Unused,b:B-->(a>b):B
a:Unused,b:Unused-->(a>b):Unused
a:A,b:A-->(a>b):vector<A>
a:vector<A>,b:A-->(a>b):vector<A>
a:A,b:vector<A>-->(a>b):vector<A>
a:vector<A>,b:vector<A>-->(a>b):vector<A>
>

Альтернатива<a| b>

<
a:A,b:B-->(a|b):variant<A,B>
a:A,b:Unused-->(a|b):optional<A>
a:A,b:B,c:Unused-->(a|b|c):optional<variant<A,B>>
a:Unused,b:B-->(a|b):optional<B>
a:Unused,b:Unused-->(a|b):Unused
a:A,b:A-->(a|b):A
>

Разница<a- b>

<
a:A,b:B-->(a-b):A
a:Unused,b:B-->(a-b):Unused
>

Клин<*a>

<
a:A-->*a:vector<A>
a:Unused-->*a:Unused
>

Плюс<+a>

<
a:A-->+a:vector<A>
a:Unused-->+a:Unused
>

Список<a% b>

<
a:A,b:B-->(a%b):vector<A>
a:Unused,b:B-->(a%b):Unused
>

<repeat(...,...)[a]>

<
a:A-->repeat(...,...)[a]:vector<A>
a:Unused-->repeat(...,...)[a]:Unused
>

Последовательность или<a||b>

<
a:A,b:B-->(a||b):tuple<optional<A>,optional<B>>
a:A,b:Unused-->(a||b):optional<A>
a:Unused,b:B-->(a||b):optional<B>
a:Unused,b:Unused-->(a||b):Unused
a:A,b:A-->(a||b):vector<optional<A>>
>

Необязательно<-a>

<
a:A-->-a:optional<A>
a:Unused-->-a:Unused
>

<&a>

<a: A--> &a:Unused>

<!b>

<a: A--> !a:Unused>

Преобразование<a^ b>

<
a:A,b:B-->(a^b):tuple<optional<A>,optional<B>>
a:A,b:Unused-->(a^b):optional<A>
a:Unused,b:B-->(a^b):optional<B>
a:Unused,b:Unused-->(a^b):Unused
>


PrevUpHomeNext

Статья Compound Attribute Rules раздела Spirit 2.5.2 Quick Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Quick Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:53:32/0.0077140331268311/0