如何使用 C# 的 ANTLR 获取 Lexer 和 Parser?
How can I get Lexer and Parser with ANTLR for C#?
好像 ANTLR 支持 C# 语言,但我不知道如何生成相关的 class。
我搜索并看到存在 Visual Studio 的扩展,但我不支持 2015
那么如何使用 ANTLR 手动为 C# 生成 Lexer 和 Parser?
无需与 visual studio 集成。
在此处下载 jar 文件:http://www.antlr.org/download/antlr-runtime-4.5.1.jar
保存到C:\Test
将 jar 添加到类路径中:
使用系统属性对话框 > 环境变量 > 创建或附加到 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
VS 扩展主要用于语法高亮和编辑器细节。它非常有用,但你仍然可以没有它(IIRC VS2015 中的一个更改阻止了兼容版本)。
您应该做的是使用 Antlr4 NuGet package,它将自动生成解析器。它会在编译时 运行 ANTLR。
如果您有 VS 扩展(例如在 VS2013 中),只需将新的 ANTLR 语法文件添加到您的项目即可。
但如果您没有扩展程序,则必须手动设置项目。以下是使其工作的步骤:
- 安装 NuGet 包:
- 向项目添加一个新的文本文件,用
.g4
扩展名命名它
- 保存,然后从解决方案资源管理器的项目上下文菜单中卸载项目:
- 重新加载:
- Select 您的
.g4
文件在解决方案资源管理器中,转到 属性 window,然后设置 构建 Action 到 Antlr4:
编辑您的文件,例如:
grammar MyLanguage;
compileUnit: 'Hello' EOF;
转到文件 -> 高级保存选项并选择不带签名的 UTF8 或 ISO-8859-1编码(ANTLR 只是不处理带有 BOM 的 UTF8):
构建您的项目,您的新 类 将可用
您现在可以编写一些代码了:
var lexer = new MyLanguageLexer(new AntlrInputStream("Hello"));
好像 ANTLR 支持 C# 语言,但我不知道如何生成相关的 class。
我搜索并看到存在 Visual Studio 的扩展,但我不支持 2015
那么如何使用 ANTLR 手动为 C# 生成 Lexer 和 Parser?
无需与 visual studio 集成。
在此处下载 jar 文件:http://www.antlr.org/download/antlr-runtime-4.5.1.jar
保存到C:\Test
将 jar 添加到类路径中:
使用系统属性对话框 > 环境变量 > 创建或附加到 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
VS 扩展主要用于语法高亮和编辑器细节。它非常有用,但你仍然可以没有它(IIRC VS2015 中的一个更改阻止了兼容版本)。
您应该做的是使用 Antlr4 NuGet package,它将自动生成解析器。它会在编译时 运行 ANTLR。
如果您有 VS 扩展(例如在 VS2013 中),只需将新的 ANTLR 语法文件添加到您的项目即可。
但如果您没有扩展程序,则必须手动设置项目。以下是使其工作的步骤:
- 安装 NuGet 包:
- 向项目添加一个新的文本文件,用
.g4
扩展名命名它
- 保存,然后从解决方案资源管理器的项目上下文菜单中卸载项目:
- 重新加载:
- Select 您的
.g4
文件在解决方案资源管理器中,转到 属性 window,然后设置 构建 Action 到 Antlr4:
编辑您的文件,例如:
grammar MyLanguage; compileUnit: 'Hello' EOF;
转到文件 -> 高级保存选项并选择不带签名的 UTF8 或 ISO-8859-1编码(ANTLR 只是不处理带有 BOM 的 UTF8):
构建您的项目,您的新 类 将可用
您现在可以编写一些代码了:
var lexer = new MyLanguageLexer(new AntlrInputStream("Hello"));