![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Optional Parser (-a)Boost , Spirit 2.5.2 , Parser Operators
|
выражение |
Семантика |
---|---|
< | Матч< |
См.Составные обозначения атрибутов.
выражение |
атрибут |
---|---|
< |
a: A --> -a: optional<A> a: Unused --> -a: Unused
|
Сложность определяется сложностью операнда<
a
>.
![]() | Note |
---|---|
Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::ascii::char_; using boost::spirit::qi::lexeme; using boost::spirit::qi::int_; using boost::fusion::vector; using boost::fusion::at_c; using boost::optional;
Просмотрите информацию о человеке с именем (в кавычках) факультативный возраст<UnaryParser
>и факультативный пол, разделенный запятой.
vector<std::string, optional<int>, optional<char> > attr; test_phrase_parser_attr( "\"James Bond\", M" , lexeme['"' >> +(char_ - '"') >> '"'] // name >> -(',' >> int_) // optional age >> -(',' >> char_) // optional sex , attr); // Should print: James Bond,M std::cout << at_c<0>(attr); // print name if (at_c<1>(attr)) // print optional age std::cout << ',' << *at_c<1>(attr); if (at_c<2>(attr)) // print optional sex std::cout << ',' << *at_c<2>(attr); std::cout << std::endl;
Статья Optional Parser (-a) раздела Spirit 2.5.2 Parser Operators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Parser Operators ::
реклама |