我正在尝试在 Visual Studio 16.9.2 的 .NET 5 项目中安装 ANTLR 4 支持,但我不知道应该使用无数 ANTLR NuGet 包中的哪一个。我想要一个根本不需要 Java(不仅仅是在运行时)并且不需要扩展的工具。
我最初使用 Antlr4 和 Antlr4.Runtime 包,它们似乎可以一起工作,但后来我发现它们缺少 CharStreams 类,据我所知,这是获取 ICharStream 对象的预期方法。
然后我尝试使用 Antlr4.Runtime.Standard 而不是 Antlr4.Runtime,但这似乎与 Antlr4 包不兼容。 (这给了我很多编译错误。)然后我尝试将 Antlr4 换成其他软件包,但找不到与 Antlr4.Runtime.Standard 一起使用的软件包。
有人可以告诉我生成器+运行时的有效组合吗?官方的包太多了,没必要不断地试错。我查看了几个在线教程,但它们往往适用于仍然使用 VSIX 的早期 VS 版本。
以下是您可以使用的软件包的概述:
您还应该了解我(多年来)编写的用于生成 Antlr 程序的其他几个工具:
dotnet new antlr; dotnet run
安装、生成和运行新的 Antlr C# 程序。它不是很灵活,但很简单,并且可以创建一个简单的算术示例,然后您可以根据自己的需要进行调整。无需下载和安装 Java 或 Antlr4 JAR——这一切都是通过“构建”以无形的方式为您完成的,因为它使用了我的 Antlr4BuildTasks 包。我有一个用于 Antlr 的 VS2019 扩展,但如果您需要实际查看语法的文本着色以便编辑该死的语法,我建议您将 VSCode 与我的扩展或 Mike 的扩展一起使用。请注意,VS2019仅支持旧版本的LSP,并且不支持语义突出显示。我向MS投诉,但是他们更新VS2019的速度非常慢。我必须编写一个 LSP 类型库才能超越 MS 编写的有限包。
编辑:nuget 包 Antlr4.CodeGenerator 是实际为 Harwell 的 Antlr4 v4.6.6 端口编码解析器生成器(又名“工具”)的包。它对 msbuild 的构建规则进行编码。 “官方”Antlr4 工具的等效项是 Antrl4BuildTasks。