我正在寻找一个为 LL(k) 语言提供 EBNF 的解析器生成器,它将给我一个 C# 解析器并生成在 EBNF 中定义的类型的类。
7 回答
ANTLR(没什么好说的)
就解析器生成器而言, Gold是可以的。
块上有一个名为LLLPG的新解析器生成器,它支持 LL(k) 语法和零宽度断言。运行时库是可选的(一个基类就足够了)。文档现在已经相当详细了,我已经使用 LLLPG 来解析 C# 的大部分方言,称为增强型 C#(实际上,它是 LLLPG 的主要输入语言)。不过,输入语法不是 EBNF(它是 C# + ANTLR 风格代码的混搭)。
完全披露:我写的。欢迎提问。
编辑: “C# 解析器生成器”的最高 Google 结果是由一个名叫“Tomassetti”的人编写的,他声称我的解析器生成器“不能真正独立使用”——这就像说 PC“不能真正用作独立游戏装备”因为它还可以进行网页浏览和电子表格。诚然,安装 Visual Studio 扩展后,您必须单独转到 NuGet 并获取运行时库 (Loyc.Syntax),但我不认为这就是他的意思,而且我认为他从未真正尝试过使用它。LLLPG 的设计是一个特性,而不是一个错误。我只能说,请试一试,让我知道你的想法。
在http://irony.codeplex.com/中找到 Irony
优点:很简单缺点:-缺乏文件-相当慢
Grammatica 支持 LL(k)。http://grammatica.percederberg.net/
Coco/R(来自 SSW - “Johannes Kepler” University Linz)