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