Mar*_* Ba 11 c++ parsing dataformat boost-spirit
我(经常)面临着必须解析文本数据文件的任务 - 在"每个人"使用XML之前使用的文本结构化数据表示 - 这是某种行业标准.(这些太多了.)
无论如何,基本任务总是采用文本文件并填充某种数据结构中的内容,以便我们的C++代码可以对信息做些什么.
现在,我已经手工实现了一些简单的(并且非常多样的)解析器,并且我几乎没有鄙视.:-)
所以 - 我想知道当我想要将结构化文本数据"解析"为内存中表示时的当前技术水平(想想:任意语言的XML数据绑定).
到目前为止我发现的是" 你推荐什么解析器生成器 ",但我不太确定我是在使用解析器生成器(如ANTLR)之后.
明显的候选人似乎是pegtl和Boost.Spirit,但他们似乎都很复杂(但至少他们是语言),上次我尝试过Spirit,编译错误让我疯狂.(并且pegtl需要兼容C++ 11的编译器,这仍然是一个问题(VC++ 2005).)
所以我错过了一个简单的解决方案,只是为了得到类似的东西
/begin COMPU_METHOD
DEC " Decimal value"
RAT_FUNC
"%3.0"
"dec"
COEFFS 0 1.000000 0.000000 0 0.000000 1.000000
/end COMPU_METHOD
Run Code Online (Sandbox Code Playgroud)
进入C++数据结构?(这只是这个文件的一部分可能看起来的任意例子.对于这种格式,我可以(并且可能应该)购买一个库来解析它,因为它足够广泛 - 对于所有格式我都不是这样的情况遭遇.)
- 或者我应该选择 Boost.Spirit 的复杂性?
振奋精神
看
我使用这个非常实用的解析器生成器取得了很好的结果,它支持使用通用语法格式的许多语言/平台。解析速度与 Boost Spirit 相当(尽管使用泛型编程处理解析数据可能会更高效)
编辑为了让事情变得非常清楚,我从来没有用 Coco/R 做不到任何事情。
然而,我真的很沉迷于 Spirit 轻松地为我推断属性类型(转换)。这是主要的节省时间的方法。但这是有成本的:
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |