我有以特定文本格式存储的数据:
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#代码而不需要引用其他库。
答案 0 :(得分:1)
您可以查看GOLD Parser Builder和bsn GoldParser engine(使用使用GOLD构建的语法解析数据时可以创建类型化数据结构)。
还有一个CodeProject article,其中显示了如何使用此引擎。
答案 1 :(得分:0)
Parser生成器无法帮助您避免正则表达式。实际上,至少对于我使用的生成器,解析器生成器是第二解析阶段。它接受一个令牌流,并输出一个抽象语法树。
为了将文本转换为标记,你可以写一个词法分析器,它可以包含一个正则表达式或三个。
如果语言足够简单,你可能会发现从头开始编写解析器的工作要少于学习如何使用解析器生成器。
答案 2 :(得分:0)