2014-09-11 58 views
3

如何在单独的翻译单元中定义船长语法? 什么是输出属性应该是什么类型?或者我可以简单地指定boost::spirit::x3::unused_typeAttribute模板参数为boost::spirit::x3::rule模板类为skipper语法?我认为skipper语法应该只是在内部将输入迭代器移动到空白,换行符,注释等处。从性能和内存分配/释放的角度来看,它更好。如何为这样的语法定义一个上下文类型,我应该提供给BOOST_SPIRIT_INSTANTIATE宏?使用Boost.Spirit定义独立翻译单元中的船长X3

+1

我想这是一个标志,我应该开始看着Spirit X3:/ – sehe 2014-09-11 08:56:03

回答

3

最后我找到了解决方案。

using skipper_parser = x3::rule< class skipper_class, x3::unused_type const >;是船长解析器类型的定义(const-返回类型的重要性)。

BOOST_SPIRIT_INSTANTIATE(skipper_parser, iterator_type, x3::unused_type)parse_rule的模板函数的实例化,有些函数在单独的翻译单元中。