diff options
Diffstat (limited to 'src/boost/libs/metaparse/example/getting_started/9.hpp')
-rw-r--r-- | src/boost/libs/metaparse/example/getting_started/9.hpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/boost/libs/metaparse/example/getting_started/9.hpp b/src/boost/libs/metaparse/example/getting_started/9.hpp new file mode 100644 index 00000000..47366b91 --- /dev/null +++ b/src/boost/libs/metaparse/example/getting_started/9.hpp @@ -0,0 +1,42 @@ +#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 + |