使用C#编写ANTLR
网上的教程都是基于JAVA的,其实C#也是能编写ANTLR的,两者使用的.g4文件都是一样的
使用C#方法如下:
1.新建两个.net framework 控制台应该程序
(1). Antlr0601
(2).Antlr0601Test
2.启动程序包管理器控制台,执行以下命令,目的是添加antlr4.dll等的引用
(1).install-Package Antlr4 -Version 4.6.6 -Project Antlr0601
(2).install-Package Antlr4 -Version 4.6.6 -Project Antlr0601Test
3.参照<Antlr4权威指南>这本书6.1中的例子,在Antlr0601工程中创建CSV.g4,并完成CSV.g4文件
4.关闭工程,重新打开工程
5.选中CSV.g4文件,在属性面板中
"生成操作"选择Antlr4 (如果没有4中重启工程这里无法选择Antlr4)
"自定义工具"写上:MSBuild:Compile,
"自定义工具命名空间"写上:Antlr0601Test (方便Antlr0601Test工程调用,写其它命名空间也可以)
6.编译Antlr0601工程,会在"<工程目录>\obj\Debug\"生成6个 .cs文件
7.把6中生成的6个.cs文件 通过添加linkfile的方式添加到Antlr0601Test
8.在Antlr0601Test工程中添加data.csv文件(参照<Antlr4权威指南>这本书6.1中的例子) , 复制到输出目录选择:始终复制
9.在Antlr0601Test的Program.cs文件 的Main方法中添加以下代码
StreamReader input = new StreamReader("data.csv", Encoding.Default); var stream = new AntlrInputStream(input); var lexer = new CSVLexer(stream); var tokens = new CommonTokenStream(lexer); var parser = new CSVParser(tokens); var tree = parser.file(); var visitor = new CSVBaseVisitor<object>(); var result = visitor.Visit(tree); Console.WriteLine(tree.ToStringTree(parser)); Console.WriteLine(result); Console.ReadKey();
10.运行Antlr0601Tes工程