用于F#的BNF或EBNF解析器生成器中的C#语法

时间:2011-09-12 19:34:12

标签: c#-4.0 f# grammar bnf ebnf

我正在寻找C#v4的BNF语法,我可以提供给fsyacc,或者我找不到可以输出F#的基于EBNF的解析器生成器。

修改 我不打算为C#编写一个解析器,而是一个非常相似的语法的实验解析器,因为两个语法之间存在巨大的字面重叠,我发现更容易从C#语法开始,只需更改偏离的位。然而,我发现的C#v4的唯一语法是EBNF

另一个答案是从EBNF到BNF的转换器

3 个答案:

答案 0 :(得分:1)

根据Wikipedia,Coco / R是基于EBNF的解析器生成器。根据他们的homepage,有一个Foco / R的F#端口(最后更新2007-07-23,但是我希望有一些突破性的变化)。如果你最终检查出来,我会对你的经历感兴趣。

我确实找到了C#v2的BNF语法:http://www.devincook.com/GOLDParser/grammars/index.htm

答案 1 :(得分:1)

扩展我之前的评论 - 我认为C#的任何可靠语法都不能直接使用。有一些例子,但它们可能不会涵盖所有新功能(如LINQ)或者不会经过很好的测试。

我能想到的最佳选择是使用Mono中C#编译器的解析器。这是用C#编写的,开源的,包括所有最近的功能(并且也相当可靠)。有关更多信息,请参阅Mono C# compiler。您应该能够编译并使用F#中的内容(或将其修改为更友好的F#)。

答案 2 :(得分:1)

我找到了一些语法here;它们似乎包括C#4.0。