如何使用ANTLR获取Lexer和Parser for C#?

Ham*_*thi 4 c# antlr

似乎ANTLR支持C#语言,但我不知道如何生成相关的类.

我搜索并看到存在Visual Studio的扩展,但我不支持2015

那么如何使用ANTLR手动为C#生成Lexer和Parser?

Luc*_*ski 5

VS扩展主要用于语法高亮和编辑细节.它非常有用,但你可以在没有它的情况下生活(IIRC,VS2015中的更改阻止了兼容版本).

你应该做的是使用Antlr4 NuGet包,它将自动生成解析器.它将在编译时运行ANTLR.

如果你有VS扩展(例如在VS2013中),只需在项目中添加一个新的ANTLR语法文件就可以了.

但是如果您没有扩展名,则必须手动设置项目.以下是使其工作的步骤:

  • 安装NuGet包:

NuGet安装

  • 将新文本文件添加到项目中,使用.g4扩展名命名

新文本文件

  • 保存,然后从解决方案资源管理器中的项目上下文菜单中卸载项目:

上下文菜单

  • 重新加载:

在此输入图像描述

  • .g4在解决方案资源管理器中选择您的文件,转到" 属性"窗口,然后将" 构建操作"设置为Antlr4:

建立行动

  • 编辑您的文件,例如:

    grammar MyLanguage;
    
    compileUnit: 'Hello' EOF;
    
    Run Code Online (Sandbox Code Playgroud)
  • 转到文件 - > 高级保存选项,然后选择不带签名的UTF8或ISO-8859-1编码(ANTLR只是不处理带BOM的UTF8):

编码