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

时间:2015-10-22 04:28:55

标签: c# antlr

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

如果您有VS扩展(例如在VS2013中),只需在项目中添加一个新的ANTLR语法文件即可。

但如果您没有扩展程序,则必须手动设置项目。以下是使其有效的步骤:

  • 安装NuGet包:

NuGet installation

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

New text file

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

Context menu

  • 重新加载:

enter image description here

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

Build action

  • 编辑您的文件,例如:

    grammar MyLanguage;
    
    compileUnit: 'Hello' EOF;
    
  • 转到文件 - > 高级保存选项并选择不带签名的UTF8或ISO-8859-1编码(ANTLR不处理带BOM的UTF8):

Encoding

  • 构建您的项目,您的新课程将可用

  • 您现在可以编写一些代码:

    var lexer = new MyLanguageLexer(new AntlrInputStream("Hello"));
    

答案 1 :(得分:2)

无需与visual studio集成。

在此处下载jar文件:http://www.antlr.org/download/antlr-runtime-4.5.1.jar

将其保存到C:\Test

将jar添加到类路径中:

使用“系统属性”对话框&gt; <环境变量>创建或附加到CLASSPATH变量

在变量中,添加C:\Test\antlr-runtime-4.5.1.jar如果此变量的值已存在,请在新条目之前插入;

将语法文件复制到C:\ Test

转到命令行,导航到C:\ Test

创建'outputdirectory'文件夹,然后运行它(记得替换{outputdirectory}和{input}:

java org.antlr.v4.Tool -o -visitor -no-listener -Werror -o {outputdirectory} -Dlanguage=CSharp {input}.g4