3

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

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# 编写解析器并不简单(非常多的正则表达式和硬代码)。

我从 Microsoft 听说过一些有关 Oslo\Mgrammar 的信息。此工具是否为我的特定数据生成 C# 解析器代码?

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

4

3 回答 3

1

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

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

于 2011-04-19T11:37:28.110 回答
0

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

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

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

于 2011-04-19T13:21:23.980 回答
0

阅读有关's status 的更新M,我认为它不会很快上市。

我建议使用ANTLR,其中:

  • 能够在 C# 等中生成非常强大的解析器。
  • 是一个非常成熟的产品 - 拥有自己的带调试器的 IDE
  • 使用标准的 EBNF 语法,所以你不会把时间花在那些很快就会消失的东西上
于 2011-04-19T13:39:44.950 回答