解析C#中的特定数据

时间:2011-04-19 11:23:37

标签: c# parsing mgrammar

我有以特定文本格式存储的数据:

FIDS_A1=CF_LAST:1|line_NETCHNG:2|QoS:3; FIDS_A2=[High and Low]:[{High} – {Low}]:1|CF_LAST:2; FIDS_A3=YR_RANGE:3|VOL:3; FIDS_A4=GR_AskBid; FIDS_C3=line_BID:3|line_ASK:3;

我需要解析它并从中获取C#类型的数据结构。

在C#中编写解析器并不简单(非常多的Regexps和硬编码)。

我听说过微软的Oslo \ MGrammar。此工具是否为我的特定数据生成C#解析器代码?

输出我只需要解析器的C#代码而不需要引用其他库。

3 个答案:

答案 0 :(得分:1)

您可以查看GOLD Parser Builderbsn GoldParser engine(使用使用GOLD构建的语法解析数据时可以创建类型化数据结构)。

还有一个CodeProject article,其中显示了如何使用此引擎。

答案 1 :(得分:0)

Parser生成器无法帮助您避免正则表达式。实际上,至少对于我使用的生成器,解析器生成器是第二解析阶段。它接受一个令牌流,并输出一个抽象语法树。

为了将文本转换为标记,你可以写一个词法分析器,它可以包含一个正则表达式或三个。

如果语言足够简单,你可能会发现从头开始编写解析器的工作要少于学习如何使用解析器生成器。

答案 2 :(得分:0)

M的{​​{1}}状态下阅读此update我不会很快看到它进入市场。

我建议使用ANTLR,其中:

  • 能够在C#中生成非常强大的解析器。
  • 是一个非常成熟的产品 - 拥有自己的带调试器的IDE
  • 使用标准的EBNF语法,所以你不会把时间花在很快就会消亡的事情上