#include #include #include #include #include #include using namespace boost::spirit; int main(int, char**) { const std::string text("want to parse. this"); typedef position_iterator piterator_t; piterator_t pbeg(text.c_str(), text.c_str()+text.size()); piterator_t pend; #define MULTIPASSDBG //#undef MULTIPASSDBG #ifdef MULTIPASSDBG typedef multi_pass iterator_t; iterator_t ibeg(make_multi_pass(pbeg)); iterator_t iend(make_multi_pass(pend)); tree_parse_info info = pt_parse(ibeg, iend, chset_p("a-z"), space_p); #else tree_parse_info info = pt_parse(pbeg, pend, chset_p("a-z"), space_p); #endif if( !info.full ) std::cerr << "error at position " << info.stop.get_position().line << std::endl; return 0; }