似乎ANTLR支持C#语言,但我不知道如何生成相关的类。
我搜索并发现Visual Studio有一个扩展,但它不支持2015。
那么,我该如何手动使用ANTLR为C#生成Lexer和Parser?
我搜索并发现Visual Studio有一个扩展,但它不支持2015。
那么,我该如何手动使用ANTLR为C#生成Lexer和Parser?
该VS扩展主要用于语法高亮和编辑器美化。它非常有用,但您仍然可以在没有它的情况下使用(如果我没记错的话,VS2015中的更改会阻止兼容版本的发布)。
您应该使用Antlr4 NuGet包,它将自动化解析器的生成。它将在编译时运行ANTLR。
如果您确实拥有VS扩展(例如在VS2013中),只需将新的ANTLR语法文件添加到项目中即可。
但是,如果您没有该扩展,您将不得不手动设置项目。以下是使其工作的步骤:
.g4
扩展名命名。.g4
文件,进入属性窗口,将生成操作设置为Antlr4:Edit your file, for instance:
grammar MyLanguage;
compileUnit: 'Hello' EOF;
Go to File -> Advanced Save Options and choose UTF8 without signature or the ISO-8859-1 encoding (ANTLR just doesn't handle UTF8 with BOM):
Build your project, your new classes will be available
You can now write some code:
var lexer = new MyLanguageLexer(new AntlrInputStream("Hello"));
不需要与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