#ifndef CHILON_PARSER_SEQUENCE_HPP
#define CHILON_PARSER_SEQUENCE_HPP
#include <chilon/parser/detail/sequence.hpp>
#include <chilon/parser/empty_string.hpp>
namespace chilon { namespace parser {
/**
* Sequence in language (optional whitespace allowed between elements).
*/
template <class... T>
struct sequence {
template <class Stream>
inline static bool skip(Stream& stream) {
return parse<sequence>::skip(stream);
}
};
template <class T>
struct sequence<T> : T {};
/**
* Sequence uses internal parse_sequence function, parsing true as the first
* argument to it to indicate whitespace is to be skipped.
*/
template <class... T>
struct parse< sequence<T...> > : detail::parse_sequence<true, T...> {};
template <class T>
struct parse< sequence<T> > : parse<T> {};
template <>
struct parse< sequence<> > : empty_string {};
} }
#endif