Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.
PrevUpHomeNext
Kleene (*a)
Description

The kleene operator, *a, is a unary operator that matches its operand zero or more times.

Header
// forwards to <boost/spirit/home/qi/operator/kleene.hpp>
#include <boost/spirit/include/qi_kleene.hpp>

Also, see Include Structure.

Model of

UnaryParser

Notation

a

A Parser

Expression Semantics

Semantics of an expression is defined only where it differs from, or is not defined in UnaryParser.

Expression

Semantics

*a

Match a zero or more times.

Attributes

See Compound Attribute Notation.

Expression

Attribute

*a

a: A --> *a: vector<A>
a: Unused --> *a: Unused

Complexity

The overall complexity of the Kleene star is defined by the complexity of its subject, a, multiplied by the number of repetitions. The complexity of the Kleene star itself is O(N), where N is the number successful repetitions.

Example
[Note] Note

The test harness for the example(s) below is presented in the Basics Examples section.

Some using declarations:

using boost::spirit::qi::int_;

Parse a comma separated list of numbers and put them in a vector:

std::vector<int> attr;
test_phrase_parser_attr(
    "111, 222, 333, 444, 555", int_ >> *(',' >> int_), attr);
std::cout 
    << attr[0] << ',' << attr[1] << ',' << attr[2] << ',' 
    << attr[3] << ',' << attr[4] 
    << std::endl;


PrevUpHomeNext