如何在没有Visual Studio的情况下重建C#ANTLR解析器?

时间:2014-08-14 11:42:15

标签: c# parsing antlr

我试图在Boo编译器中稍微探讨一下。不幸的是,解析器是由ANTLR生成的。我已经编辑了生成解析器的语法文件,但我无法弄清楚如何执行下一步:实际生成解析器。

显然,使用ANTLR生成解析器的首选方法是使用ANTLRWorks IDE ...除非您使用C#输出目标,因为它的特殊。无论如何我试了一下,但它没有做任何事情,只是给我错误说"这个命令在传统模式下无效。"显然,自编写Boo编译器以来,有一个新版本的ANTLR,并且存在一些向后兼容性问题......或者某些东西。不确定。

所以我抬头看了C#目标。这要在Visual Studio中作为插件安装。唯一的问题是,我有SharpDevelop,它不能与VS插件一起使用,而且我不打算花几百美元购买非Express版的Visual Studio,所以我可以使用open用于构建开源解析器的源工具!

必须有一种简单的方法来做到这一点;我只是没有看到它。如何在没有Visual Studio的情况下使用ANTLR生成C#解析器?

1 个答案:

答案 0 :(得分:1)

Visual Studio的ANTLR插件仅提供编辑器功能和简化的向项目添加新语法的功能。它本身不执行任何代码生成。

ANTLR 3和ANTLR 4的C#目标与MSBuild无缝集成。根据设计,目标不支持命令行生成解析器,因为它们不符合我对可靠软件构建的要求。但是,我愿意支持非MSBuild支持,前提是生成始终作为构建的一部分发生,而不是作为一个独立的步骤。在构建项目时,即使未安装Visual Studio,所有正确配置的C#目标安装也会在修改后自动重新生成解析器。

对于ANTLR 4,请按instructions here生成代码,但跳过涉及可选Visual Studio扩展的部分。如果您遇到任何特定部分的问题,请创建一个新问题并描述您尝试的步骤以及您正在使用的系统配置。

对于ANTLR 3,在将项目迁移到GitHub之前创建了指令,因此它们是in Word format here。可以在ANTLR 3 C# Target project on GitHub上创建与此文档相关的问题。 重要提示(编辑):在创建Antlr3 NuGet包之前,还编写了文档。使用NuGet包管理器安装此NuGet包将自动配置项目文件,无需文档中的步骤1.1.2,1.3和1.4。