哪些 ANTLR Nuget 软件包是哪些?

Emd*_*dot 7 antlr visual-studio-2019 .net-5

我正在尝试在 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。

kab*_*y76 9

以下是您可以使用的软件包的概述:

  • Antlr4.Runtime——这是 Harwell 移植的 Antlr4 v4.6.6。该包包含一个工具、运行时和构建规则,可提供完整的 NET 体验。但是,这个工具集已有很多年历史并且没有得到维护。它不能以任何方式与“官方”Antlr 工具集和运行时一起使用。Grammars-v4中的一些语法针对此工具链,但我一直在重写其中的大部分语法以针对“官方”版本,而不是 Harwell 的代码。没有垫片可以将针对此旧运行时的语法与较新的/“官方”运行时进行互操作,但我正在编写一个。该软件包可与许多旧式目标框架配合使用。
  • Antlr4.运行时.标准。这是 Antlr4 的“官方”受支持版本。这是一个 netstandard2.0 库,它只包含运行时。要使用它,Antlr4 JAR 工具必须生成解析器。它不包括工具,也不包括构建规则。
  • Antlr4BuildTasks。这是一组使用 Antlr4.Runtime.Standard 的构建规则。这是我用哈韦尔的工具制作的叉子,多年来我一直在打磨它。它为 Antlr4 程序提供无缝构建,无需手动下载和运行 Antlr4 Jar 工具:它为您下载 jar 并包含一个独立的 Java 环境来调用 JAR。它使用 Java,但您不需要安装 Java,甚至不会知道它被调用,除非您打开构建的诊断输出。它没有集成到 VS2019 中,因此它可以与 MSBUILD、dotnet、VS2019、VSCode、Ryder 等一起使用。此代码可以在任何地方使用:Windows、Linux、OSX。

您还应该了解我(多年来)编写的用于生成 Antlr 程序的其他几个工具:

  • Antlr4BuildTasks.模板。这是一个简单的 Dotnet 模板,您可以通过安装、生成和运行新的 Antlr C# 程序dotnet new antlr; dotnet run。它不是很灵活,但是很简单,并且可以创建一个简单的算术示例,然后您可以根据自己的需要进行调整。无需下载和安装 Java 或 Antlr4 JAR——这一切都是通过“构建”以无形的方式为您完成的,因为它使用了我的 Antlr4BuildTasks 包。
  • dotnet-antlr。该程序是一个 StringTemplate 程序,可为多种目标语言生成 Antlr4 程序。我目前让它适用于 C#、Java、JavaScript、Dart、Go、Python3,并将在某个时候添加其他目标。我还为 Harwell 的 Antlr4cs/Antlr4.Runtime 库生成代码。它生成 makefile 以提供基本、一致的界面来构建和运行 Antlr 程序,但人们可以插入任何一组模板来生成您想要的任何内容。要使用 makefile,请使用 Msys2。它还生成一个 .csproj 文件,因此您可以在不进行任何 Make 的情况下使用该文件。该程序用于在 Grammars-v4 版本中进行 CI 测试。我目前正在开发这个程序,并计划将其转移到用于编辑/转换语法的工具链中。

我有一个针对 Antlr 的 VS2019 扩展,但如果您需要实际查看语法的文本着色以便编辑该死的语法,我建议您将 VSCode 与我的扩展或 Mike 的扩展一起使用。请注意,VS2019仅支持旧版本的LSP,并且不支持语义突出显示。我向MS投诉,但是他们更新VS2019的速度非常慢。我必须编写一个LSP 类型库才能超越 MS 编写的有限包。

编辑: nuget 包 Antlr4.CodeGenerator 是实际为 Harwell 的 Antlr4 v4.6.6 端口编码解析器生成器(又名“工具”)的包。它对 msbuild 的构建规则进行编码。“官方”Antlr4 工具的等效项是 Antrl4BuildTasks。

  • 你在这里做上帝的工作@kaby76 - 干得好! (3认同)