16 template<
typename... Parsers>
18 :
public ParserBase<AlternationParser<Parsers...>>
21 template<
typename... Ps>
24 template<concepts::ParserContext Context>
26 constexpr auto parse(Context& context)
const {
36 if constexpr (index >=
sizeof...(Parsers)) {
45 if constexpr (should_be_void) {
71template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
73constexpr auto operator|(Left&& left, Right&& right) {
74 return alternation(util::forward<Left>(left), util::forward<Right>(right));
77template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
81constexpr auto operator|(Left&& left, Right&& right) {
83 [&]<
typename... Rs>(Rs&&... rs) {
84 return alternation(util::forward<Left>(left), util::forward<Rs>(rs)...);
86 util::forward<Right>(right).m_parsers);
89template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
93constexpr auto operator|(Left&& left, Right&& right) {
95 [&]<
typename... Ls>(Ls&&...
ls) {
96 return alternation(util::forward<Ls>(
ls)..., util::forward<Right>(right));
98 util::forward<Left>(left).m_parsers);
101template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
105constexpr auto operator|(Left&& left, Right&& right) {
107 [&]<
typename... Ls>(Ls&&...
ls) {
109 [&]<
typename... Rs>(Rs&&... rs) {
110 return alternation(util::forward<Ls>(
ls)..., util::forward<Rs>(rs)...);
112 util::forward<Right>(right).m_parsers);
114 util::forward<Left>(left).m_parsers);
Definition parser_base.h:5
Definition alternation.h:19
Tuple< Parsers... > m_parsers
Definition alternation.h:58
constexpr AlternationParser(InPlace, Ps &&... parsers)
Definition alternation.h:22
constexpr auto parse(Context &context) const
Definition alternation.h:26
Definition tuple_forward_declaration.h:5
Definition unexpected.h:14
Definition variant_forward_declaration.h:6
Definition operations.h:114
constexpr auto ycombinator
Definition ycombinator.h:63
Definition zstring_parser.h:10
Definition zstring_parser.h:9
constexpr auto alternation
Definition alternation.h:69
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto apply(F &&f, Tup &&tuple) -> decltype(detail::apply_impl(meta::MakeIndexSequence< meta::TupleSize< Tup > > {}, util::forward< F >(f), util::forward< Tup >(tuple)))
Definition apply.h:22
Expected< T, Error > Result
Definition result.h:8
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto in_place
Definition in_place.h:8
Definition alternation.h:61
constexpr auto operator()(Parsers &&... parsers) const
Definition alternation.h:63
Definition alternation.h:14