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

Stream Based Parser API

Boost , Spirit 2.5.2 , Parser API

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

Библиотека предоставляет пару Standard IO Manipulators Позволяет интегрировать Spirit.Qi входные пароходы со стандартными потоками ввода. Эти манипуляторы парсера имеют две формы. Первая форма, match, работает на уровне персонажа. Второй phrase_match работает на уровне фразы и требует прогулочного парсера. Обе версии могут принимать атрибуты путем ссылки, которая будет удерживать парсированные значения на успешном парсе.

Header
// forwards to <boost/spirit/home/qi/stream/match_manip.hpp>
#include <boost/spirit/include/qi_match.hpp>

Для вариатических атрибутов:

// forwards to <boost/spirit/home/qi/stream/match_manip_attr.hpp>
#include <boost/spirit/include/qi_match_attr.hpp>

Версия атрибутов API позволяет передавать один или несколько атрибутов в манипуляторы. Манипуляторы, принимающие два или более атрибутов, могут использоваться, когда выражение парсера является только Sequence. В этом случае каждый из переданных атрибутов должен соответствовать соответствующей части последовательности.

Для API функции вывода правильного (сопоставимого) типа парсера из заданного типа атрибута:

// forwards to <boost/spirit/home/qi/match_auto.hpp>
#include <boost/spirit/include/qi_match_auto.hpp>

Также см. Include Structure.

Namespace

Имя

boost::spirit::qi::match

boost::spirit::qi::phrase_match

boost::spirit::qi::skip_flag::postskip<320>

boost::spirit::qi::skip_flag::dont_postskip

Synopsis
namespace boost { namespace spirit { namespace qi
{
    template <typename Expr>
    inline <unspecified>
    match(
        Expr const& xpr);
    template <typename Expr
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    match(
        Expr const& xpr
      , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN);
    template <typename Expr, typename Skipper>
    inline <unspecified>
    phrase_match(
        Expr const& expr
      , Skipper const& s
      , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip);
    template <typename Expr, typename Skipper
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    phrase_match(
        Expr const& expr
      , Skipper const& s
      , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN);
    template <typename Expr, typename Skipper
      , typename Attr1, typename Attr2, ..., typename AttrN>
    inline <unspecified>
    phrase_match(
        Expr const& expr
      , Skipper const& s
      , BOOST_SCOPED_ENUM(skip_flag) post_skip
      , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN);
}}}

Spirit.Qi Парсер API функции, основанные на автоматическом создании парсерного типа:

namespace boost { namespace spirit { namespace qi
{
    template <typename Attr>
    inline <unspecified>
    match(
        Attr& attr);
    template <typename Attr, typename Skipper>
    inline <unspecified>
    phrase_match(
        Attr& attr
      , Skipper const& s
      , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip);
}}}

Все вышеперечисленные функции возвращают стандартный экземпляр манипулятора потока IO (см. Manipulators), который при перемещении из потока ввода приведет к выравниванию входного потока с использованием встроенного выражения Spirit.Qi. Любая ошибка (или неудачный парс), возникающая во время вызова Spirit.Qi, будет отражена в флаге состояния потоков (std::ios_base::failbit будет установлен).

Максимальное количество аргументов ограничено препроцессорной константой SPIRIT_ARGUMENTS_LIMIT. Эта константа по умолчанию для значения, определенного препроцессорной константой PHOENIX_LIMIT (что, в свою очередь, не соответствует 10).

[Note] Note

Вариатические манипуляторы с двумя или более атрибутами внутренне объединяют ссылки на все переданные атрибуты в fusion::vector и передают это в качестве объединенного атрибута соответствующему манипулятору, принимающему один атрибут.

The phrase_match manipulators not taking an explicit skip_flag as one of their arguments call the passedper after a successful match of the parser expression. Это может быть ингибировано с помощью других версий этого манипулятора во время прохождения skip_flag::dont_postskip в соответствующий аргумент.

Template parameters

Параметр

Описание

Expr

Выражение, которое может быть преобразовано в Qi-парсер.

Потрошитель

Парсер пропускал белые пространства.

Attr

Тип атрибута, используемый для создания соответствующего типа парсера.

Attr1, Attr2, ..., AttrN

Один или несколько атрибутов.


PrevUpHomeNext

Статья Stream Based Parser API раздела Spirit 2.5.2 Parser API может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:05:42/0.028754949569702/1