]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [#fail] |
2 | [section fail] | |
3 | ||
4 | [h1 Synopsis] | |
5 | ||
6 | template <class Msg> | |
7 | struct fail; | |
8 | ||
9 | This is a [link parser parser]. | |
10 | ||
11 | [table Arguments | |
12 | [[Name] [Type]] | |
13 | [[`Msg`] [[link parsing_error_message parsing error message]]] | |
14 | ] | |
15 | ||
16 | [h1 Description] | |
17 | ||
18 | Parser rejecting every input. | |
19 | ||
20 | [h1 Header] | |
21 | ||
22 | #include <boost/metaparse/fail.hpp> | |
23 | ||
24 | [h1 Expression semantics] | |
25 | ||
26 | For any `msg` parsing error message, `s` compile-time string and `pos` source | |
27 | position | |
28 | ||
29 | fail<msg>::apply<s, pos>::type | |
30 | ||
31 | returns an error with `msg` as the error message. | |
32 | ||
33 | [h1 Example] | |
34 | ||
35 | #include <boost/metaparse/fail.hpp> | |
36 | #include <boost/metaparse/string.hpp> | |
37 | #include <boost/metaparse/start.hpp> | |
38 | #include <boost/metaparse/is_error.hpp> | |
39 | #include <boost/metaparse/get_message.hpp> | |
40 | #include <boost/metaparse/define_error.hpp> | |
41 | ||
42 | using namespace boost::metaparse; | |
43 | ||
44 | BOOST_METAPARSE_DEFINE_ERROR(sample_error, "This is an example parsing error"); | |
45 | ||
46 | using fail_p = fail<sample_error>; | |
47 | ||
48 | static_assert( | |
49 | is_error<fail_p::apply<BOOST_METAPARSE_STRING("foo"), start>>::type::value, | |
50 | "it should reject every input" | |
51 | ); | |
52 | ||
53 | static_assert( | |
54 | std::is_same< | |
55 | get_message<fail_p::apply<BOOST_METAPARSE_STRING("foo"), start>>::type, | |
56 | sample_error | |
57 | >::type::value, | |
58 | "the error message should be the type specified" | |
59 | ); | |
60 | ||
61 | [endsect] | |
62 |