]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [#int_] |
2 | [section int_] | |
3 | ||
4 | [h1 Synopsis] | |
5 | ||
6 | struct int_; | |
7 | ||
8 | This is a [link parser parser]. | |
9 | ||
10 | [h1 Description] | |
11 | ||
12 | It accepts a non-empty sequence of characters in the range `0-9`. The result of | |
13 | the parser is the decimal value represented by the accepted character sequence. | |
14 | ||
15 | [h1 Header] | |
16 | ||
17 | #include <boost/metaparse/int_.hpp> | |
18 | ||
19 | [h1 Expression semantics] | |
20 | ||
21 | The following are equivalent: | |
22 | ||
23 | int_ | |
24 | ||
25 | foldl1< | |
26 | digit_val, | |
27 | boost::mpl::int_<0>, | |
28 | boost::mpl::lambda< | |
29 | boost::mpl::plus< | |
30 | boost::mpl::times<boost::mpl::_2, boost::mpl::int_<10>>, | |
31 | boost::mpl::_1 | |
32 | > | |
33 | >::type | |
34 | > | |
35 | ||
36 | [h1 Example] | |
37 | ||
38 | #include <boost/metaparse/int_.hpp> | |
39 | #include <boost/metaparse/string.hpp> | |
40 | #include <boost/metaparse/start.hpp> | |
41 | #include <boost/metaparse/is_error.hpp> | |
42 | #include <boost/metaparse/get_result.hpp> | |
43 | ||
44 | using namespace boost::metaparse; | |
45 | ||
46 | static_assert( | |
47 | get_result< | |
48 | int_::apply<BOOST_METAPARSE_STRING("13"), start> | |
49 | >::type::value == 13, | |
50 | "It should parse an integer value" | |
51 | ); | |
52 | ||
53 | static_assert( | |
54 | is_error<int_::apply<BOOST_METAPARSE_STRING("six"), start>>::type::value, | |
55 | "It should reject the input if it is not a number" | |
56 | ); | |
57 | ||
58 | [endsect] | |
59 |