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

Generator Directives Controlling Case Sensitivity (upper[], lower[])

Boost , Spirit 2.5.2 , Generator Directives

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

Директивы генератора<ns::lower[]>и<ns::upper[]>заставляют их встроенные генераторы излучать только символы нижнего или верхнего регистра на основе интерпретации генерируемых символов в наборе символов, определенном<ns>(см.Пространство имен кодирования символов).

Header
// forwards to <boost/spirit/home/karma/directive/upper_lower_case.hpp>
#include <boost/spirit/include/karma_upper_lower_case.hpp>

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

Namespace

Имя

<ns::lower>

<ns::upper>

В приведенной выше таблице<ns>представленоПространство имен символов.

Model of

Модель<lower[]>и<upper[]>является моделью его предметного генератора.

Notation

a

Объект генератора

A

Тип атрибута генератора<a>

ns

Кодирование пространства имен.

Expression Semantics

Директивы<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в соответствующие выражения генератора).

выражение

Семантика

<ns::lower[a]>

Создайте<a>как нижний регистр, интерпретируемый в наборе символов, определенном<ns>. Директива работает до тех пор, пока встроенный генератор работает (если основной выходной поток не сообщает об ошибке).

<ns::upper[a]>

Создайте<a>в качестве верхнего регистра, интерпретируемого в наборе символов, определенном<ns>. Директива работает до тех пор, пока встроенный генератор работает (если основной выходной поток не сообщает об ошибке).

[Note]Note

Если обе директивы являются «активными» по отношению к генератору, то внутренняя часть этих директив имеет приоритет. Например:

generate(sink, ascii::lower['A' << ascii::upper['b']])

(<"aB">) без каких-либо ограничений.

Кроме того, директивы не будут влиять на генераторы, излучающие символы, не имеющие верхнего или нижнего регистрового эквивалента в наборе символов, определенном<ns>.

Attributes

См.Составные обозначения атрибутов.

выражение

атрибут

<ns:lower[a]>

<
a:A-->ns:lower[a]:A
a:Unused-->ns:lower[a]:Unused
>

<ns:upper[a]>

<
a:A-->ns:upper[a]:A
a:Unused-->ns:upper[a]:Unused
>

Complexity

Общая сложность директив генератора<ns::lower[]>и<ns::upper[]>определяется сложностью его встроенных генераторов. Сами директивы составляют только директивы времени, не оказывая влияния на производительность во время выполнения.

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


PrevUpHomeNext

Статья Generator Directives Controlling Case Sensitivity (upper[], lower[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Generator Directives ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:11:39/0.006397008895874/1