15 template<
typename... Parsers>
17 :
public ParserBase<SequenceParser<Parsers...>>
20 template<
typename... Ps>
23 template<concepts::ParserContext Context>
25 constexpr auto parse(Context& context)
const {
30 []<
typename T>(T&& value) {
33 []<
typename... Types>(Types&&... values) {
35 util::forward<Types>(values)...);
40 if constexpr (index >=
sizeof...(Parsers)) {
41 return make_result(util::forward<Types>(values)...);
51 return self(
c_<index + 1>, util::forward<Types>(values)..., util::forward<Value>(value));
25 constexpr auto parse(Context& context)
const {
…}
73template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
75constexpr auto operator>>(Left&& left, Right&& right) {
76 return sequence(util::forward<Left>(left), util::forward<Right>(right));
75constexpr auto operator>>(Left&& left, Right&& right) {
…}
79template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
83constexpr auto operator>>(Left&& left, Right&& right) {
85 [&]<
typename... Rs>(Rs&&... rs) {
86 return sequence(util::forward<Left>(left), util::forward<Rs>(rs)...);
88 util::forward<Right>(right).m_parsers);
83constexpr auto operator>>(Left&& left, Right&& right) {
…}
91template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
95constexpr auto operator>>(Left&& left, Right&& right) {
97 [&]<
typename... Ls>(Ls&&...
ls) {
98 return sequence(util::forward<Ls>(
ls)..., util::forward<Right>(right));
100 util::forward<Left>(left).m_parsers);
95constexpr auto operator>>(Left&& left, Right&& right) {
…}
103template<concepts::DecayConstructible Left, concepts::DecayConstructible Right>
107constexpr auto operator>>(Left&& left, Right&& right) {
109 [&]<
typename... Ls>(Ls&&...
ls) {
111 [&]<
typename... Rs>(Rs&&... rs) {
112 return sequence(util::forward<Ls>(
ls)..., util::forward<Rs>(rs)...);
114 util::forward<Right>(right).m_parsers);
116 util::forward<Left>(left).m_parsers);
107constexpr auto operator>>(Left&& left, Right&& right) {
…}
Definition parser_base.h:5
Tuple< Parsers... > m_parsers
Definition sequence.h:60
constexpr auto parse(Context &context) const
Definition sequence.h:25
constexpr SequenceParser(InPlace, Ps &&... parsers)
Definition sequence.h:21
Definition tuple_forward_declaration.h:5
Definition operations.h:114
constexpr auto ycombinator
Definition ycombinator.h:63
constexpr auto overload
Definition overload.h:28
Definition zstring_parser.h:10
Definition zstring_parser.h:9
constexpr auto sequence
Definition sequence.h:71
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
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto in_place
Definition in_place.h:8
constexpr auto operator()(Parsers &&... parsers) const
Definition sequence.h:65