...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The plus operator, +a
,
is a unary operator that matches its operand one or more times.
// forwards to <boost/spirit/home/qi/operator/plus.hpp> #include <boost/spirit/include/qi_plus.hpp>
Also, see Include Structure.
Notation
a
A Parser
Semantics of an expression is defined only where it differs from, or
is not defined in UnaryParser
.
Expression |
Semantics |
---|---|
|
Match |
See Compound Attribute Notation.
Expression |
Attribute |
---|---|
|
a: A --> +a: vector<A> a: Unused --> +a: Unused
|
The overall complexity of the Plus is defined by the complexity of its subject,
a
, multiplied by the number of repetitions. The complexity of the Plus itself is O(N), where N is the number successful repetitions.
Note | |
---|---|
The test harness for the example(s) below is presented in the Basics Examples section. |
Some using declarations:
using boost::spirit::ascii::alpha; using boost::spirit::qi::lexeme;
Parse one or more strings containing one or more alphabetic characters and put them in a vector:
std::vector<std::string> attr; test_phrase_parser_attr("yaba daba doo", +lexeme[+alpha], attr); std::cout << attr[0] << ',' << attr[1] << ',' << attr[2] << std::endl;