Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions include/iris/x4/directive/skip.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ namespace iris::x4 {
template<class Encoding, class Tag>
struct char_class_parser;

#ifdef IRIS_X4_UNICODE
template<class Tag>
struct unicode_char_class;
#endif

template<class Subject, class Skipper>
struct skip_directive : proxy_parser<Subject, skip_directive<Subject, Skipper>>
Expand Down Expand Up @@ -220,6 +224,30 @@ struct skip_gen
return skip_gen::operator()(char_class_parser<Encoding, Tag>{});
}

#ifdef IRIS_X4_UNICODE
[[nodiscard]]
static constexpr builtin_skip_gen_impl<builtin_skipper_kind::blank>
operator()(unicode_char_class<char_classes::blank_tag> const&) noexcept
{
return {};
}

[[nodiscard]]
static constexpr builtin_skip_gen_impl<builtin_skipper_kind::space>
operator()(unicode_char_class<char_classes::space_tag> const&) noexcept
{
return {};
}

template<class Tag>
[[nodiscard]] static constexpr auto
operator()(no_builtin_t<unicode_char_class<Tag>> const&)
noexcept(noexcept(skip_gen::operator()(unicode_char_class<Tag>{})))
{
return skip_gen::operator()(unicode_char_class<Tag>{});
}
#endif

template<X4Subject Skipper>
[[nodiscard]]
static constexpr skip_gen_impl<as_parser_t<Skipper>>
Expand Down
2 changes: 1 addition & 1 deletion modules/iris
Loading