Getting Help with Spirit

For Spirit support, there are several options available. You can direct your questions to Spirit’s mailing list, the Spirit IRC channel, the Boost IRC channel, or even secure consulting and development services.

Mailing List

You can subscribe to the Spirit-general mailing list here. You can also read, post, and search mailing list messages through an NNTP news portal, courtesy of, via either gmane or nabble.


You can get Spirit support via the ##spirit or #boost IRC channels at freenode, where you will often find knowledgeable people willing to help with your Spirit questions.


Should you need consulting and development services you can contact Ciere Consulting. Ciere Consulting offers modern C++ development, including Spirit development and Boost/C++ training. “We love solving problems.”

How to Ask for Help

Those answering support questions are volunteers. Many are developers or contributors to Spirit’s code or documentation. In order to make providing you with technical support as easy as possible on the volunteers who might answer your questions, please provide a minimal test case that exhibits your problem.

Your test case should be in the form of a single source file complete with a main() that triggers the parsing or generation function that illustrates the problem. The input should be contained in the same source file. Ideally, you should include logic to report whether the result is what’s expected. For example, if your parsing should produce certain values, then test for those values and report whether they were found.

The following code exemplifies what is meant by minimal code:

#include <cstring>
#include <iostream>
#include <string>
#include <boost/spirit/include/qi.hpp>

int main(void)
    using namespace boost::spirit;
    using namespace boost::spirit::qi;
    char const * first = "...";
    char const * last  = first + std::strlen(first);
    rule<char const *, char ()> dot;
    dot %= char_('.');
    std::string h;
    if (parse(first, last, +dot, h))
        std::cout << "success: '" << h << '\'';
        std::cout << "parse error";
    std::cout << std::endl;

That code is stripped down to the most essential functionality, while still providing enough information to point out the problem. Notice that the input to boost::spirit::qi::parse() is given in main().

Comments are closed.

preload preload preload