![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Sequence Parser (a >> b)Boost , Spirit 2.5.2 , Parser Operators
|
Выражение |
Семантика |
---|---|
|
См. Сложная нотация атрибутов.
Выражение |
Атрибут |
---|---|
| a: A, b: B --> (a >> b): tuple<A, B> a: A, b: Unused --> (a >> b): A a: Unused, b: B --> (a >> b): B a: Unused, b: Unused --> (a >> b): Unused a: A, b: A --> (a >> b): vector<A> a: vector<A>, b: A --> (a >> b): vector<A> a: A, b: vector<A> --> (a >> b): vector<A> a: vector<A>, b: vector<A> --> (a >> b): vector<A> a: A, b: B --> (a >> b): tuple<A, B> a: A, b: Unused --> (a >> b): A a: Unused, b: B --> (a >> b): B a: Unused, b: Unused --> (a >> b): Unused a: A, b: A --> (a >> b): vector<A> a: vector<A>, b: A --> (a >> b): vector<A> a: A, b: vector<A> --> (a >> b): vector<A> a: vector<A>, b: vector<A> --> (a >> b): vector<A> [ORIG_END] --> |
Общая сложность парсера последовательности определяется суммой сложностей его элементов. Сложность самой последовательности — O(N), где N — число элементов в последовательности.
Некоторые используют декларации:
using boost::spirit::ascii::char_; using boost::spirit::qi::_1; using boost::spirit::qi::_2; namespace bf = boost::fusion;
![]() | Note |
---|---|
Испытательный ремень для примера (примеров) ниже представлен в разделе Основные примеры. |
Простое использование:
test_parser("xy", char_ >> char_);
Извлечение кортежа атрибута (с использованием Boost.Fusion):
bf::vector<char, char> attr; test_parser_attr("xy", char_ >> char_, attr); std::cout << bf::at_c<0>(attr) << ',' << bf::at_c<1>(attr) << std::endl;
Извлечение вектора атрибутов (с использованием STL):
std::vector<char> vec; test_parser_attr("xy", char_ >> char_, vec); std::cout << vec[0] << ',' << vec[1] << std::endl;
Извлечение атрибутов с помощью семантических действий (с использованием Phoenix):
test_parser("xy", (char_ >> char_)[std::cout << _1 << ',' << _2 << std::endl]);
Статья Sequence Parser (a >> b) раздела Spirit 2.5.2 Parser Operators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Parser Operators ::
реклама |