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