使用Boost.Spirit X3在单独的翻译单元中定义队长

时间:2014-09-11 08:55:30

标签: c++ boost-spirit-qi boost-spirit-x3

如何在单独的翻译单元中定义队长语法? 应该是什么类型的输出属性?或者我可以简单地将boost::spirit::x3::unused_type指定为Attribute模板参数到boost::spirit::x3::rule模板类以获取跳过者语法吗?我认为skipper语法应该只在内部向前移动输入迭代器而不是空格,换行符,注释等。在性能和内存分配/释放方面更好。如何定义这种语法的上下文类型,我应该提供给BOOST_SPIRIT_INSTANTIATE宏?

1 个答案:

答案 0 :(得分:3)

最后我找到了解决方案。

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

BOOST_SPIRIT_INSTANTIATE(skipper_parser, iterator_type, x3::unused_type)是船长的parse_rule模板功能的实例化,有些是在单独的翻译单元中。