|  | Home | Libraries | People | FAQ | More | 
            The library provides a couple of free functions to make parsing a snap.
            These parser functions have two forms. The first form parse
            works on the character level. The second phrase_parse
            works on the phrase level and requires skip parser. Both versions can
            take in attributes by reference that will hold the parsed values on a
            successful parse.
          
// forwards to <boost/spirit/home/qi/parse.hpp> #include <boost/spirit/include/qi_parse.hpp>
For variadic attributes:
// forwards to <boost/spirit/home/qi/parse_attr.hpp> #include <boost/spirit/include/qi_parse_attr.hpp>
The variadic attributes version of the API allows one or more attributes to be passed into the parse functions. The functions taking two or more are usable when the parser expression is a Sequence only. In this case each of the attributes passed have to match the corresponding part of the sequence.
For the API functions deducing the correct (matching) parser type from the supplied attribute type:
// forwards to <boost/spirit/home/qi/detail/parse_auto.hpp> #include <boost/spirit/include/qi_parse_auto.hpp>
Also, see Include Structure.
| Name | 
|---|
| 
                       | 
| 
                       | 
| 
                       | 
| 
                       | 
namespace boost { namespace spirit { namespace qi { template <typename Iterator, typename Expr> inline bool parse( Iterator& first , Iterator last , Expr const& expr); template <typename Iterator, typename Expr , typename Attr1, typename Attr2, ..., typename AttrN> inline bool parse( Iterator& first , Iterator last , Expr const& expr , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN); template <typename Iterator, typename Expr, typename Skipper> inline bool phrase_parse( Iterator& first , Iterator last , Expr const& expr , Skipper const& skipper , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip); template <typename Iterator, typename Expr, typename Skipper , typename Attr1, typename Attr2, ..., typename AttrN> inline bool phrase_parse( Iterator& first , Iterator last , Expr const& expr , Skipper const& skipper , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN); template <typename Iterator, typename Expr, typename Skipper , typename Attr1, typename Attr2, ..., typename AttrN> inline bool phrase_parse( Iterator& first , Iterator last , Expr const& expr , Skipper const& skipper , BOOST_SCOPED_ENUM(skip_flag) post_skip , Attr1& attr1, Attr2& attr2, ..., AttrN& attrN); }}}
| ![[Note]](../../../../images/note.png) | Note | 
|---|---|
| 
              Starting with Spirit V2.5
              (distributed with Boost V1.47) the placeholder  | 
Spirit.Qi parser API functions based on the automatic creation of the matching parser type:
namespace boost { namespace spirit { namespace qi { template <typename Iterator, typename Attr> inline bool parse( Iterator& first , Iterator last , Attr& attr); template <typename Iterator, typename Attr, typename Skipper> inline bool phrase_parse( Iterator& first , Iterator last , Attr& attr , Skipper const& skipper , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip); }}}
            All functions above return true
            if none of the involved parser components failed, and false
            otherwise.
          
            The maximum number of supported arguments is limited by the preprocessor
            constant SPIRIT_ARGUMENTS_LIMIT.
            This constant defaults to the value defined by the preprocessor constant
            PHOENIX_LIMIT (which
            in turn defaults to 10).
          
| ![[Note]](../../../../images/note.png) | Note | 
|---|---|
| 
              The variadic functions with two or more attributes internally combine
              references to all passed attributes into a  | 
            The phrase_parse functions
            not taking an explicit skip_flag
            as one of their arguments invoke the passed skipper after a successful
            match of the parser expression. This can be inhibited by using the other
            versions of that function while passing skip_flag::dont_postskip
            to the corresponding argument.
          
| Parameter | Description | 
|---|---|
| 
                       | 
                       | 
| 
                       | An expression that can be converted to a Qi parser. | 
| 
                       | Parser used to skip white spaces. | 
| 
                       | An attribute type utilized to create the corresponding parser type from. | 
| 
                       | One or more attributes. |