Listing 5: The Kleene star class implementation
// Copyright (c) 2001, Joel de Guzman and Dan Nuffer
// Permission is granted to use this code without restriction as
// long as this copyright notice appears in all source files.
template <typename S>
struct kleene_star
: public unary<S>
, public parser<kleene_star<S> >
{
kleene_star(S const& a)
: unary<S>(a) {}
template <typename IteratorT>
match parse(IteratorT& first, IteratorT const& last) const
{
match hit(0);
while (match next = this->subject().parse(first, last))
hit += next;
return hit;
}
};