如何使用ANTLR获取Lexer和Parser for C#?
似乎ANTLR支持C#语言,但我不知道如何生成相关的类。
我搜索并看到存在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
如果此变量已存在值,则插入a ;
在您的新条目之前
将语法文件复制到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包 ,它将自动生成解析器。 它将在编译时运行ANTLR。
如果你有VS扩展(例如在VS2013中),只需在项目中添加一个新的ANTLR语法文件就可以了。
但是,如果您没有扩展程序,则必须手动设置项目。 以下是使其工作的步骤:
- 安装NuGet包:
- 将新文本文件添加到项目中,使用
.g4
扩展名命名
- 保存,然后从解决方案资源管理器中项目的上下文菜单中卸载项目:
- 重新加载:
- 在解决方案资源管理器中选择
.g4
文件,转到“ 属性”窗口,然后将“ 构建操作”设置为“ Antlr4” :
-
编辑您的文件,例如:
grammar MyLanguage; compileUnit: 'Hello' EOF;
-
转到文件 – > 高级保存选项,然后选择不带签名的UTF8或ISO-8859-1编码(ANTLR不处理带BOM的UTF8):
-
构建您的项目,您的新课程将可用
-
您现在可以编写一些代码:
var lexer = new MyLanguageLexer(new AntlrInputStream("Hello"));