【发布时间】:2010-08-21 20:55:55
【问题描述】:
我正在使用属性传播来构建玩具语言的语法树。我在 if 语句的定义中遇到了问题,很难从错误消息中分辨出来,但我认为 rhs 属性没有折叠到预期的属性中。我认为它应该折叠为tuple <double,Statement,optional<Statement>>。
错误:C:\Program Files (x86)\CodeBlocks\MinGW\boost_1_43_0\boost\variant\variant.hpp|1293|error: no matching function for call to 'boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::make_initializer_node::apply<boost::mpl::pair<boost::detail::variant::initializer_root, mpl_::int_<0> >, boost::mpl::l_iter<boost::mpl::list3<boost::recursive_wrapper<Lang::CompoundStatement>, boost::recursive_wrapper<Lang::IfStatement>, Lang::VarStatement> > >::initializer_node, mpl_::int_<1> >, boost::mpl::l_iter<boost::mpl::list2<boost::recursive_wrapper<Lang::IfStatemen [error cuts out here]
谢谢。
附: 我无法正确显示代码,这里有一个纯文本版本:http://freetexthost.com/a3smzx0zk5
附言
一些我忘记提及的信息。
如果我删除"else" >> 并将> statement 更改为>> statement,它会起作用,但"else" >> statement 应该折叠为仅声明。将“else”显式创建为 qi::lit 没有帮助。
【问题讨论】:
标签: boost attributes boost-spirit boost-spirit-qi propagation