Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

range

Synopsis

template <class From, class To>
struct range;

This is a parser.

Table 70. Arguments

Name

Type

From

boxed character value

To

boxed character value


Description

range accepts one character in the range [From..To]. The result of the parser is the accepted character.

Header

#include <boost/metaparse/range.hpp>

Expression semantics

For any A, B wrapped characters the following are equivalent:

range<A, B>

accept_when<one_char, util::in_range<A, B>, errors::unexpected_character>

Example

#include <boost/metaparse/range.hpp>
#include <boost/metaparse/start.hpp>
#include <boost/metaparse/string.hpp>
#include <boost/metaparse/is_error.hpp>
#include <boost/metaparse/get_result.hpp>

#include <type_traits>

using namespace boost::metaparse;

using one_digit =
  range<std::integral_constant<char, '0'>, std::integral_constant<char, '9'>>;

static_assert(
  !is_error<one_digit::apply<BOOST_METAPARSE_STRING("0"), start>>::type::value,
  "one_digit should accept a digit"
);

static_assert(
  is_error<one_digit::apply<BOOST_METAPARSE_STRING("x"), start>>::type::value,
  "one_digit should reject a value outside of ['0'..'9']"
);

static_assert(
  get_result<
    one_digit::apply<BOOST_METAPARSE_STRING("0"), start>
  >::type::value == '0',
  "the result of parsing should be the character value"
);

PrevUpHomeNext