I have the following grammar:
#include <boost/spirit.hpp>
struct point_grammar
: public boost::spirit::grammar<point_grammar>
{
template <typename Scanner>
struct definition
{
boost::spirit::rule<Scanner> E, S, V;
definition(const point_grammar &self)
{
using namespace boost::spirit;
E = S >> V;
S = '@' >> +(~ch_p('@') - V);
V = str_p(".PV@") | str_p(".CV@");
}
const boost::spirit::rule<Scanner> &start()
{
return E;
}
};
};
When I compile, the compiler show me the following warning:
/usr/include/boost/spirit.hpp:18:4: warning: "This header is deprecated. Please use: boost/spirit/include/classic.hpp"
But when change the #include for boost/spirit/include/classic.hpp, I have the following error:
(expected template-name before ‘<’ token) in the line where is: : public boost::spirit::grammar.
What I can do it?