![]() |
![]() ![]() ![]() ![]() |
![]() |
Stream Based Parser APIBoost , Spirit 2.5.2 , Parser API
|
||||||||||||||||||||||||
|
Имя |
|---|
|
|
|
|
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 |
|---|---|
Вариатические манипуляторы с двумя или более атрибутами внутренне объединяют ссылки на все переданные атрибуты в |
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 в соответствующий аргумент.
|
Параметр |
Описание |
|---|---|
|
Выражение, которое может быть преобразовано в Qi-парсер. |
|
Парсер пропускал белые пространства. |
|
Тип атрибута, используемый для создания соответствующего типа парсера. |
|
Один или несколько атрибутов. |
Статья Stream Based Parser API раздела Spirit 2.5.2 Parser API может быть полезна для разработчиков на c++ и boost.
:: Главная :: Parser API ::
реклама |