Loading

使用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工程

 

posted @ 2022-04-10 22:16  码农加一  阅读(732)  评论(0编辑  收藏  举报