![]() |
![]() ![]() ![]() ![]() |
![]() |
Character Parser (char_, lit)Boost , Spirit 2.5.2 , Character Parsers
|
||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | Note |
|---|---|
Разрозненные битовые векторы Для размещения 16/32 и 64-битных символов char-set статически переключается с реализации< < |
Наконец, при заданной строке (простой строке C,<std::basic_string>и т. Д.), Струна рассматривается как строка определения char-set после синтаксиса, который напоминает наборы символов с регулярным выражением в стиле posix (за исключением того, что двойные цитаты ограничивают элементы набора вместо квадратных скобок и нет специального отрицания ^ символа). Примеры:
char_("a-zA-Z") // alphabetic characters char_("0-9a-fA-F") // hexadecimal characters char_("actgACTG") // DNA identifiers char_("\x7f\x7e") // Hexadecimal 0x7F and 0x7E
<lit>При прохождении одного символа ведет себя как один аргумент<char_>, за исключением того, что<lit>не синтезирует атрибут.<char>или<wchar_t>является эквивалентом<lit>.
![]() | Note |
|---|---|
< |
Примеры:
'x' lit('x') lit(L'x') lit(c) // c is a char
// forwards to <boost/spirit/home/qi/char/char.hpp> #include <boost/spirit/include/qi_char_.hpp>
См. такжеВключить структуру.
|
Имя |
|---|
< |
< |
В приведенной выше таблице<ns>представленоПространство имен символов.
Notation
c, f, lБуквальный шар, например<'x'>,<L'x'>или что-либо, что может быть преобразовано в<char>или<wchar_t>, илиЛенивый аргумент, который оценивает все, что может быть преобразовано в<char>или<wchar_t>.
nscsAStringилиLazy Argument, который оценивает доString, который определяет строку определения шара, следуя синтаксису, который напоминает наборы символов регулярного выражения в стиле posix (кроме квадратных скобок и символа отрицания<^>).
cpЧар-парсер, чар-парсер или чар-сет-парсер.
Семантика выражения определяется только там, где она отличается или не определена в.<PrimitiveParser>.
|
выражение |
Семантика |
|---|---|
< | Создайте из шара парсер< |
< | Создайте парсер из шара< |
< | Создайте парсер, который соответствует любому символу в кодировке< |
< | Создайте парсер с< |
< | Создайте char-range парсер, который соответствует символам от диапазона< |
< | Создать char-set парсер с< |
< | Негат< |
|
выражение |
атрибут |
|---|---|
< | < |
< | < |
< | Тип символаПространство имен символов,< |
< | Тип символаПространство имен символов,< |
< | Тип символаПространство имен символов,< |
< | Тип символаПространство имен символов,< |
< | Атрибут< |
O(N), за исключением наборов шаров с 16-битными (или более) символами (например,<
wchar_t>). Они имеют сложностьO(log N), где N — число различных диапазонов символов в наборе.
![]() | Note |
|---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::qi::lit; using boost::spirit::ascii::char_;
Основные буквы:
test_parser("x", 'x'); // plain literal test_parser("x", lit('x')); // explicit literal test_parser("x", char_('x')); // ascii::char_
Дальность:
char ch; test_parser_attr("5", char_('0','9'), ch); // ascii::char_ range std::cout << ch << std::endl; // prints '5'
Набор персонажей:
test_parser_attr("5", char_("0-9"), ch); // ascii::char_ set std::cout << ch << std::endl; // prints '5'
Lazy char_ using Phoenix
namespace phx = boost::phoenix; test_parser("x", phx::val('x')); // direct test_parser("5", char_(phx::val('0'),phx::val('9'))); // ascii::char_ range
Статья Character Parser (char_, lit) раздела Spirit 2.5.2 Character Parsers может быть полезна для разработчиков на c++ и boost.
:: Главная :: Character Parsers ::
реклама |