123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #ifndef BOOST_METAPARSE_GETTING_STARTED_9_HPP
- #define BOOST_METAPARSE_GETTING_STARTED_9_HPP
- // Automatically generated header file
- // Definitions before section 8.2
- #include "8_2.hpp"
- // Definitions of section 8.2
- template <class S, class Item>
- struct reverse_binary_op :
- eval_binary_op<
- typename boost::mpl::at_c<Item, 0>::type,
- boost::mpl::at_c<Item, 1>::type::value,
- S
- >
- {};
- #include <boost/metaparse/foldr_start_with_parser.hpp>
- using mult_exp3 =
- foldr_start_with_parser<
- sequence<int_token, one_of<times_token, divides_token>>, /* The parser applied repeatedly */
- int_token, /* The parser parsing the last number */
- boost::mpl::quote2<reverse_binary_op> /* The function called for every result */
- /* of applying the above parser */
- >;
- using exp_parser17 =
- build_parser<
- foldl_start_with_parser<
- sequence<one_of<plus_token, minus_token>, mult_exp3>,
- mult_exp3,
- boost::mpl::quote2<binary_op>
- >
- >;
- // query:
- // exp_parser17::apply<BOOST_METAPARSE_STRING("8 / 4 / 2")>::type
- #endif
|