【发布时间】:2014-06-10 15:35:15
【问题描述】:
我正在为 if 函数实现生产规则:
qi::rule<Iterator, ascii::space_type, double(void)> f_if;
f_if = qi::ascii::string("if")
>> qi::char_('(')
>> (comparator >> ',' >> expression >> ',' >> expression) [qi::_val = boost::phoenix::bind(&Grammar<Iterator>::function_if, this, qi::_1, qi::_2, qi::_3)]
>> qi::char_(')')
;
表达式和比较器声明为
qi::rule<Iterator, ascii::space_type, double(void)> expression;
qi::rule<Iterator, ascii::space_type, bool(void)> comparator;
并且绑定函数有原型
double function_if(bool comparator, double left, double right);
有什么办法可以根据比较器的值只计算一个表达式?
【问题讨论】:
标签: boost-spirit boost-spirit-qi