哪些 ANTLR Nuget 软件包是哪些?

问题描述 投票:0回答:1

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

visual-studio-2019 antlr .net-5
1个回答
12
投票

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

  • Antlr4.Runtime——这是 Harwell 移植的 Antlr4 v4.6.6。该包包含一个工具、运行时和构建规则,可提供完整的 NET 体验。但是,这个工具集已有很多年历史并且没有得到维护。它不能以任何方式与“官方”Antlr 工具集和运行时一起使用。 grammars-v4 中的一些语法针对此工具链,但我一直在重写其中的大部分语法以针对“官方”版本,而不是 Harwell 的代码。没有垫片可以将针对此旧运行时的语法与较新的/“官方”运行时进行互操作,但我正在编写一个。该软件包可与许多旧式目标框架配合使用。
  • Antlr4.Runtime.Standard。这是 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 模板,您可以通过
    dotnet new antlr; dotnet run
    安装、生成和运行新的 Antlr C# 程序。它不是很灵活,但很简单,并且可以创建一个简单的算术示例,然后您可以根据自己的需要进行调整。无需下载和安装 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。

© www.soinside.com 2019 - 2024. All rights reserved.