Header lexy/dsl/times.hpp
The times and twice rules.
Rule lexy::dsl::times
lexy/dsl/times.hppnamespace lexy::dsl
{
template <std::size_t N>
constexpr rule auto times(rule auto rule);
template <std::size_t N>
constexpr rule auto times(rule auto rule, separator auto sep);
}times is a rule that parses rule exactly N times in sequence, with an optional separator in between.
- Parsing
Parses
ruleexactlyNtimes insequence. If aseparatorhas been specified, parses it in between. After the last rule, handles a trailing separator as necessary.- Errors
All errors raised by parsing
ruleorsep. The rule then fails.lexy::unexpected_trailing_separator: if a trailing separator can be matched after the last item and that is not allowed; at the position of the separator. It then recovers by simply consuming the separator.
- Values
All values produced by each
ruleinvocation in order.
Example 1. Parse and sum three integers separated by comma
Note | See lexy::dsl::repeat if the number of repetitions should be determined by the input. |
Rule lexy::dsl::twice
lexy/dsl/times.hppnamespace lexy::dsl
{
constexpr rule auto twice(rule auto rule)
{
return times<2>(rule);
}
constexpr rule auto twice(rule auto rule, separator auto sep)
{
return times<2>(rule, sep);
}
}twice is a rule that is an alias for times where N == 2.