我(也)经常面临必须解析文本数据文件的任务——在“每个人”使用 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
成 C++ 数据结构?(这只是此类文件的一部分可能看起来如何的任意示例。对于这种格式,我可以(并且可能应该)购买一个库来解析它,因为它已经足够广泛了——我并非所有格式都是这样遇到。)
--或者我应该只考虑Boost.Spirit 的复杂性?