![]() |
![]() ![]() ![]() ![]() |
![]() |
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 ::
реклама |