![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Generator Directives Controlling Case Sensitivity (upper[], lower[])Boost , Spirit 2.5.2 , Generator Directives
|
Имя |
---|
< |
< |
В приведенной выше таблице<ns
>представленоПространство имен символов.
Модель<
lower[]
>и<upper[]
>является моделью его предметного генератора.
Notation
a
Объект генератора
A
Тип атрибута генератора<a
>
ns
Директивы<lower[]
>и<upper[]
>не имеют специальной генераторной семантики. Это чистые директивы модификаторов. Они косвенно влияют на работу всех генераторов. Они добавляют информацию<tag::upper
>или<tag::lower
>к<Modifier
>параметру шаблона, используемому при преобразовании<proto::expr
>в соответствующее выражение генератора. Это достигается следующими специализациями:
namespace boost { namespace spirit { template <typename CharEncoding> struct is_modifier_directive< karma::domain , tag::char_code<tag::lower, CharEncoding> > : mpl::true_ {}; template <typename CharEncoding> struct is_modifier_directive< karma::domain , tag::char_code<tag::upper, CharEncoding> > : mpl::true_ }}
(более подробно см. раздел, описывающий процесс компиляции выраженияBoost.Protoв соответствующие выражения генератора).
выражение |
Семантика |
---|---|
< | Создайте< |
< | Создайте< |
![]() | Note |
---|---|
Если обе директивы являются «активными» по отношению к генератору, то внутренняя часть этих директив имеет приоритет. Например: generate(sink, ascii::lower['A' << ascii::upper['b']]) (< Кроме того, директивы не будут влиять на генераторы, излучающие символы, не имеющие верхнего или нижнего регистрового эквивалента в наборе символов, определенном< |
См.Составные обозначения атрибутов.
выражение |
атрибут |
---|---|
< | <a:A-->ns:lower[a]:A a:Unused-->ns:lower[a]:Unused> |
< | <a:A-->ns:upper[a]:A a:Unused-->ns:upper[a]:Unused> |
Общая сложность директив генератора<
ns::lower[]
>и<ns::upper[]
>определяется сложностью его встроенных генераторов. Сами директивы составляют только директивы времени, не оказывая влияния на производительность во время выполнения.
![]() | Note |
---|---|
Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые включают:
#include <boost/spirit/include/karma.hpp> #include <iostream> #include <string>
Некоторые используют декларации:
using boost::spirit::karma::double_; using boost::spirit::ascii::upper; using boost::spirit::ascii::lower;
Основные положения директив генераторов<upper
>и<lower
>:
test_generator_attr("abc:2.0e-06", lower["ABC:" << double_], 2e-6); test_generator_attr("ABC:2.0E-06", upper["abc:" << double_], 2e-6);
Статья Generator Directives Controlling Case Sensitivity (upper[], lower[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Generator Directives ::
реклама |