解析c#中的特定数据

本文关键字:数据 解析 | 更新日期: 2023-09-27 17:51:22

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

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#编写解析器并不简单(有很多regexp和硬代码)。

我从微软听说了一些关于Oslo'MGrammar的事情。这个工具为我的特定数据生成c#解析器代码吗?

输出i只需要解析器的c#代码,而不需要参考其他库。

解析c#中的特定数据

您可以看看GOLD Parser Builder和bsn GoldParser引擎(它可以在使用GOLD构建的语法解析数据时创建类型化数据结构)。

还有一篇CodeProject文章展示了如何使用这个引擎

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

为了将文本转换为令牌,您需要编写一个词法分析器,它可以包含一个或三个正则表达式。

如果语言足够简单,您可能会发现从头编写解析器比学习如何使用解析器生成器要省事得多。

阅读M的最新状态,我认为它不会很快进入市场。

我建议使用ANTLR,它:

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