metaparse/example/getting_started/9.hpp
2015-09-05 16:11:18 +02:00

43 lines
1.1 KiB
C++

#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