使用Boost Spirit的流解析器和自定义语法

时间:2012-04-27 20:46:58

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

概要

我想利用Boost Spirit的stream parser API逐步解析std::istream。但是,我找不到一个如何将它与基于迭代器的语法一起使用的好例子。从概念上讲,我的目标是解析T类型的无限对象流。

详细

Qi中具有T类型属性和“{1}}”属性的语法通常具有以下形式:

S

如何在基于流的API中使用这样的语法?具体来说,我的流API的心智模型是我可以做的事情:

template <typename Iterator>
struct grammar : qi::grammar<Iterator, T(), S>;

我正在努力将需要迭代器的传统语法汇集在一起​​。这与流API如何契合?

1 个答案:

答案 0 :(得分:3)

你错过了Spirit multi-pass iterator。但请注意,解析流将以递增方式完成,除非您不遗余力地确保您的语法具有最小的回溯。