#include <iostream> #include <cassert> using namespace std; //#define SPIRIT_DEBUG #include "boost/spirit/core.hpp" using namespace spirit; ////////////////////////////////////////////////////////////////////////////// // // Grammar tests // /////////////////////////////////////////////////////////////////////////////// struct num_list : public grammar<num_list> { template <typename ScannerT> struct definition { definition(num_list const& self) { num = int_p; r = num >> *(',' >> num); SPIRIT_DEBUG_RULE(num); SPIRIT_DEBUG_RULE(r); } rule<ScannerT> r, num; rule<ScannerT> const& start() const { return r; } }; }; void grammar_tests() { num_list nlist; SPIRIT_DEBUG_GRAMMAR(nlist); parse_info<char const*> pi; pi = parse("123, 456, 789", nlist, space_p); assert(pi.hit); assert(pi.full); } /////////////////////////////////////////////////////////////////////////////// // // Main // /////////////////////////////////////////////////////////////////////////////// int main() { grammar_tests(); cout << "Tests concluded successfully\n"; return 0; }