Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Sequence Parser (a >> b)

Boost , Spirit 2.5.2 , Parser Operators

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Description

Оператор последовательности, a >> b, разбирает два или более операндов (a, b, ... и т.д.), в последовательности:

a >> b >> ...
Header
// forwards to <boost/spirit/home/qi/operator/sequence.hpp>
#include <boost/spirit/include/qi_sequence.hpp>

Кроме того, см. Включить структуру .

Model of

Notation

a, b

A Парсер

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в NaryParser.

Выражение

Семантика

a >> b<8

Attributes

См. Сложная нотация атрибутов.

Выражение

Атрибут

a >> b<8

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] -->
Complexity

Общая сложность парсера последовательности определяется суммой сложностей его элементов. Сложность самой последовательности — O(N), где N — число элементов в последовательности.

Example

Некоторые используют декларации:

using boost::spirit::ascii::char_;
using boost::spirit::qi::_1;
using boost::spirit::qi::_2;
namespace bf = boost::fusion;

[Note]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]);


PrevUpHomeNext

Статья Sequence Parser (a >> b) раздела Spirit 2.5.2 Parser Operators может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Parser Operators ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:03:59/0.005587100982666/0