问题描述
我有相当复杂的表达式解析器,带有严格的类型检查。所以我的 expression
规则声明返回有效的类型索引。像这样:
qi::rule < Iterator,type_index_t,skipper<Iterator>>
set_expression,expression,single_expression;
现在我按规则链接了多个表达式:
expression = ((single_expression|set_expression) >> -(expression) )[
// following looks redundant
qi::_val = boost::phoenix::if_else(qi::_2,*qi::_2,qi::_1)
]
| qi::lit('(') >> expression >> ')'
;
如果没有使用 if_else
的显式语义操作,我得到了第一个条目而不是最后一个条目类型的错误结果。
所以我的问题是:有没有更好的方法来获得等于序列中最后一项的正确表达式类型?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)