![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Character Classification Generators (alnum, digit, etc.)Boost , Spirit 2.5.2 , Char Generators
|
Имя |
---|
< |
ns::alpha |
ns::blank |
< |
< |
< |
ns::lower |
ns::print |
ns::punct |
ns::space |
ns::upper |
ns::xdigit |
В приведенной выше таблице<ns
>представляет собойпространство имен символов, используемое соответствующим генератором класса символов. Все перечисленные генераторы имеют обязательный атрибут<Ch
>и не будут компилироваться, если атрибут не связан.
Notation
Семантика выражения определяется только там, где она отличается от или не определена в<PrimitiveGenerator
>.
выражение |
Семантика |
---|---|
< | Если обязательный атрибут удовлетворяет понятию< |
ns::alpha | Если обязательный атрибут удовлетворяет понятию< |
ns::blank | |
< | |
< | Если обязательный атрибут удовлетворяет понятию< |
< | Если обязательный атрибут удовлетворяет понятию< |
ns::print | Если обязательный атрибут удовлетворяет понятию< |
ns::punct | Если обязательный атрибут удовлетворяет понятию< |
ns::xdigit | |
ns::lower | |
ns::upper | Если обязательный атрибут удовлетворяет понятию< |
ns::space | Если факультативный атрибут удовлетворяет понятию< |
Возможные значения для<ns
>описаны в разделеПространство имен для кодирования символов.
![]() | Note |
---|---|
Генераторы< std::string s; std::back_insert_iterator<std::string> out(s); generate(out, lower[alpha], 'a'); // succeeds emitting 'a' generate(out, lower[alpha], 'A'); // fails Директива генератора< |
Все перечисленные генераторы классов символов могут принимать любой атрибут<
Ch
>. Все генераторы классов символов (за исключением<space
>) требуют атрибута и не могут компилировать иное.
![]() | Note |
---|---|
В дополнение к их обычному атрибуту типа< |
O(1)
Сложность постоянна, так как генераторы излучают не более одного символа на вызов.
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые включают:
#include <boost/spirit/include/karma.hpp> #include <boost/spirit/include/support_utree.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <iostream> #include <string>
Некоторые используют декларации:
using boost::spirit::karma::alpha; using boost::spirit::karma::upper;
Использование генератора<alpha
>:
test_generator_attr("a", alpha, 'a'); test_generator_attr("A", alpha, 'A'); test_generator_attr("", alpha, '1'); // fails (as isalpha('1') is false) test_generator_attr("A", upper[alpha], 'A'); test_generator_attr("", upper[alpha], 'a'); // fails (as isupper('a') is false)
Статья Character Classification Generators (alnum, digit, etc.) раздела Spirit 2.5.2 Char Generators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Char Generators ::
реклама |