12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- [#build_parser]
- [section build_parser]
- [h1 Synopsis]
- template <class P>
- struct build_parser;
- This is a [link metafunction template metafunction].
- [table Arguments
- [[Name] [Type]]
- [[`P`] [[link parser parser]]]
- ]
- [h1 Description]
- It generates a simple interface for parser. It returns a metafunction class that
- takes an input string, parses it with `P` and returns the result of parsing. It
- generates a compilation error when parsing fails.
- [h1 Return value]
- It returns a [link metafunction_class template metafunction class]:
- struct
- {
- template <class S>
- struct apply;
- };
- [table Arguments
- [[Name] [Type]]
- [[`S`] [[link string string]]]
- ]
- [h1 Header]
- #include <boost/metaparse/build_parser.hpp>
- [h1 Expression semantics]
- For any `p` parser and `s` compile-time string
- build_parser<p>::type::apply<s>
- is equivalent to
- get_result<p::apply<s>>
- [h1 Example]
- #include <boost/metaparse/build_parser.hpp>
- #include <boost/metaparse/int_.hpp>
- #include <boost/metaparse/string.hpp>
-
- using namespace boost::metaparse;
-
- using string_to_int = build_parser<int_>::type;
-
- static_assert(
- string_to_int::apply<BOOST_METAPARSE_STRING("1113")>::type::value == 1113,
- "string_to_int should be a metafunction turning a string into an int"
- );
- [endsect]
|