Can't Build Boost Spirit Example conjure2

Viewed 85

I am using boost (1.77) spirit qi and lexer. The error handler expects a stream of characters but I am passing it a stream of tokens, resulting in garbled error messages.

I believe that the thread below points to a solution:

Boost.Spirit: Lex + Qi error reporting

In the comments there, @hkaiser writes:

Just an update: the example has been renamed in SVN to conjure2.

I just took a look at conjure2. In an attempt to understand what the program does, I open main.cpp and read the comments, all I find is this:

Not a calculator anymore, right? :-)

What is that supposed to mean?

I tried to compile the program and it fails with:

"error C2516: 'boost::phoenix::evaluator::impl<const Expr&, 
boost::phoenix::vector2boost::mpl::true_,
boost::phoenix::is_nullary,boost::proto::envns_::empty_env>::result_type': 
is not a legal base class"

What am I doing wrong?

1 Answers

The fix is to put this at the top of lexer_def.hpp:

#include <boost/phoenix/operator.hpp>

That should define the missing expression template operators that prevent the lexer semantic actions from compiling.

Related