我正在寻找C#v4的BNF语法,我可以提供给fsyacc,或者我找不到可以输出F#的基于EBNF的解析器生成器。
修改 我不打算为C#编写一个解析器,而是一个非常相似的语法的实验解析器,因为两个语法之间存在巨大的字面重叠,我发现更容易从C#语法开始,只需更改偏离的位。然而,我发现的C#v4的唯一语法是EBNF
另一个答案是从EBNF到BNF的转换器
答案 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。