23

我正在寻找一个为 LL(k) 语言提供 EBNF 的解析器生成器,它将给我一个 C# 解析器并生成在 EBNF 中定义的类型的类。

4

7 回答 7

24

ANTLR(没什么好说的)

于 2009-07-28T14:58:04.873 回答
8

就解析器生成器而言, Gold是可以的。

于 2009-07-28T15:02:43.213 回答
5

块上有一个名为LLLPG的新解析器生成器,它支持 LL(k) 语法和零宽度断言。运行时库是可选的(一个基类就足够了)。文档现在已经相当详细了,我已经使用 LLLPG 来解析 C# 的大部分方言,称为增强型 C#(实际上,它是 LLLPG 的主要输入语言)。不过,输入语法不是 EBNF(它是 C# + ANTLR 风格代码的混搭)。

完全披露:我写的。欢迎提问。

编辑: “C# 解析器生成器”的最高 Google 结果是由一个名叫“Tomassetti”的人编写的,他声称我的解析器生成器“不能真正独立使用”——这就像说 PC“不能真正用作独立游戏装备”因为它还可以进行网页浏览和电子表格。诚然,安装 Visual Studio 扩展后,您必须单独转到 NuGet 并获取运行时库 (Loyc.Syntax),但我不认为这就是他的意思,而且我认为他从未真正尝试过使用它。LLLPG 的设计是一个特性,而不是一个错误。我只能说,请试一试,让我知道你的想法。

于 2013-10-12T19:11:44.300 回答
4

您可能想查看MinosseCCJavaCC ,它是C#的一个端口。另一种可能性是Spart

于 2009-07-28T14:57:49.960 回答
4

在http://irony.codeplex.com/中找到 Irony

优点:很简单缺点:-缺乏文件-相当慢

于 2012-02-16T21:50:25.697 回答
2

Grammatica 支持 LL(k)。http://grammatica.percederberg.net/

于 2011-02-10T19:15:44.340 回答
1

Coco/R(来自 SSW - “Johannes Kepler” University Linz)

于 2012-06-13T05:55:14.397 回答