我使用的是boost(1.77(灵气和lexer。错误处理程序需要一个字符流,但我向它传递了一个令牌流,导致错误消息混乱。
我相信下面的线索指向了一个解决方案:
BoostSpirit:Lex+Qi错误报告
在那里的评论中,@hkaiser写道:
只是一个更新:该示例已在SVN中重命名为magic2。
我刚刚看了一眼魔术2。为了理解这个程序的作用,我打开main.cpp并阅读评论,我发现的只是:
不再是计算器了,对吧?:-(
这意味着什么?
我试图编译程序,但它失败了:
"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"
我做错了什么?
修复方法是将其放在lexer_def.hpp:的顶部
#include <boost/phoenix/operator.hpp>
这应该定义阻止lexer语义操作编译的缺少的表达式模板运算符。