![]() |
![]() ![]() ![]() ![]() |
![]() |
Expectation 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>
|
Общая сложность парсера ожиданий определяется суммой сложностей его элементов. Сложность самого оператора ожидания — O(N), где N — число элементов в последовательности.
![]() | Note |
|---|---|
Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые используют декларации:
using boost::spirit::ascii::char_; using boost::spirit::qi::expectation_failure;
Код ниже использует оператор ожидания, чтобы бросить<expectation_failure>с преднамеренной ошибкой разбора, когда<"o">ожидается и<"i">то, что находится во входе. Блок<catch>печатает информацию, связанную с ошибкой. Примечание: Это низкоуровневый код, который демонстрируетголый металл.. Как правило, вы используете контроллер ошибок для устранения ошибки.
try { test_parser("xi", char_('x') > char_('o')); // should throw an exception } catch (expectation_failure<char const*> const& x) { std::cout << "expected: "; print_info(x.what_); std::cout << "got: \"" << std::string(x.first, x.last) << '"' << std::endl; }
Приведенный выше код будет печатать:
expected: tag: literal-char, value: o got: "i"
Статья Expectation Parser (a > b) раздела Spirit 2.5.2 Parser Operators может быть полезна для разработчиков на c++ и boost.
:: Главная :: Parser Operators ::
реклама |