Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

one_char

Synopsis

struct one_char;

This is a parser.

Description

one_char accepts one character. The result of parsing is the accepted character. It fails for empty input.

Header

#include <boost/metaparse/one_char.hpp>

Expression semantics

For any s non-empty compile-time string and pos source position the following are equivalent

get_result<one_char::apply<s, pos>>

boost::mpl::front<s>

get_remaining<one_char::apply<s, pos>>

boost::mpl::pop_front<s>

The value of get_position<one_char::apply<s, pos>> depends on the first character of the sequence and the value of the one parsed before that (which is stored in the source position). one_char updates the source position's col and line values based on the new line characters. It detects Linux (\n), Windows (\r\n) and Mac (\r) line endings.

one_char::apply<BOOST_METAPARSE_STRING(""), pos> returns an error for every pos source position.

Example

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

#include <type_traits>

using namespace boost::metaparse;

static_assert(
  get_result<
    one_char::apply<BOOST_METAPARSE_STRING("foo"), start>
  >::type::value == 'f',
  "the result of parsing should be the first character of the input"
);

static_assert(
  std::is_same<
    BOOST_METAPARSE_STRING("oo"),
    get_remaining<one_char::apply<BOOST_METAPARSE_STRING("foo"), start>>::type
  >::type::value,
  "one_char should consume the first character of the input"
);

static_assert(
  is_error<one_char::apply<BOOST_METAPARSE_STRING(""), start>>::type::value,
  "it should return an error for empty input"
);

PrevUpHomeNext