Iros
Loading...
Searching...
No Matches
match_one_or_more.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/interface/prelude.h
"
4
#include "
di/container/meta/prelude.h
"
5
#include "
di/meta/relation.h
"
6
#include "
di/parser/basic/match_zero_or_more.h
"
7
#include "
di/parser/combinator/and_then.h
"
8
#include "
di/parser/concepts/parser_context.h
"
9
#include "
di/parser/create_parser.h
"
10
#include "
di/parser/meta/parser_context_result.h
"
11
#include "
di/parser/parser_base.h
"
12
#include "
di/vocab/expected/prelude.h
"
13
14
namespace
di::parser
{
15
namespace
detail
{
16
struct
MatchOneOrMoreFunction
{
17
template
<concepts::Predicate<c32> Pred>
18
requires
(
concepts::DecayConstructible<Pred>
)
19
constexpr
auto
operator
()(Pred&& predicate)
const
{
20
return
match_zero_or_more
(util::forward<Pred>(predicate))
21
<< []<
concepts::ParserContext
Context,
typename
View
>(
22
Context& context,
View
view) ->
meta::ParserContextResult<View, Context>
{
23
if
(
container::empty
(view)) {
24
return
Unexpected
(context.make_error());
25
}
26
return
view;
27
};
28
}
29
};
30
}
31
32
constexpr
inline
auto
match_one_or_more
=
detail::MatchOneOrMoreFunction
{};
33
}
and_then.h
di::container::View
Definition
view.h:35
di::vocab::Unexpected
Definition
unexpected.h:14
di::concepts::DecayConstructible
Definition
util.h:65
di::concepts::ParserContext
Definition
parser_context.h:12
create_parser.h
prelude.h
prelude.h
prelude.h
match_zero_or_more.h
di::container::empty
constexpr auto empty
Definition
empty.h:45
di::meta::ParserContextResult
vocab::Expected< T, meta::ParserContextError< Context > > ParserContextResult
Definition
parser_context_result.h:8
di::parser::detail
Definition
zstring_parser.h:10
di::parser
Definition
zstring_parser.h:9
di::parser::match_one_or_more
constexpr auto match_one_or_more
Definition
match_one_or_more.h:32
di::parser::match_zero_or_more
constexpr auto match_zero_or_more
Definition
match_zero_or_more.h:48
parser_base.h
parser_context.h
parser_context_result.h
relation.h
di::parser::detail::MatchOneOrMoreFunction
Definition
match_one_or_more.h:16
libs
di
include
di
parser
basic
match_one_or_more.h
Generated by
1.13.0