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

  • 相关阅读:
    Laravel 服务容器、服务提供器、契约实例讲解
    通过event记录sql
    laravel log改为时间格式
    array_column函数
    linux 安装ssh以及ssh用法与免密登录
    scp复制文件到远程服务器上
    nginx配置ssl证书后无法访问https
    Mac 在terminal 上用命令打开sublime
    Mac上通过iterm 上传文件到服务器
    基于visual Studio2013解决算法导论之044最短路径
  • 原文地址:https://www.cnblogs.com/lost0/p/16127833.html
Copyright © 2020-2023  润新知