Boost C++ Libraries Home Libraries People FAQ More


Attributes of Primitive Components

Parsers in Spirit are fully attributed. spirit_x3 parsers always expose an attribute specific to their type. This is called synthesized attribute as it is returned from a successful match representing the matched input sequence. For instance, numeric parsers, such as int_ or double_, return the int or double value converted from the matched input sequence. Other primitive parser components have other intuitive attribute types, such as for instance int_ which has int, or ascii::char_ which has char. Primitive parsers apply the normal C++ convertibility rules: you can use any C++ type to receive the parsed value as long as the attribute type of the parser is convertible to the type provided. The following example shows how a synthesized parser attribute (the int value) is extracted by calling the API function x3::parse:

int value = 0;
std::string str("123");
std::string::iterator strbegin = str.begin();
x3::parse(strbegin, str.end(), int_, value);   // value == 123

For a full list of available parser primitives and their attribute types please see the sections X3 Parsers.