1. 配置java环境

安装jdk1.7以上版本,我装的是“jdk-8u181-windows-x64.exe”。

设置 “C:\Program Files\Java\jdk1.8.0_181\bin" 到path环境变量。

设置 "C:\Program Files\Java\jdk1.8.0_181" 到 JAVA_HOME 环境变量。

设置  "%JAVA_HOME%\lib"和"."到  CLASSPATH 环境变量。

2. 配置ANTLR4环境

从   “https://www.antlr.org/download/”  下载最新的4.9版本的ANTLR4 jar包 “antlr-4.9-complete.jar”。

将“antlr-4.9-complete.jar”的本地文件路径加入到CLASSPATH 环境变量。

3. 测试

1)使用上下文无关文法(巴克斯范式)来写一个最简单的定义整形变量的文法,保存为test1.g4,扩展名g4,应该是ANTLR4的规范

使用options可以设置生成代码的语言类型,如果不设置,默认为java

grammar test1;
//options {language=Cpp;}
//options {language=CSharp;}
//options {language=Java;}
//options {language=Python3;}
int_variable  : 'int' ID '=' INTEGER ';' ;
ID : [a-z]+ ;
INTEGER: [0-9]+ ;
WS : [ \t\r\n]+ -> skip ;

2)  生成语法解析器源码

 java org.antlr.v4.Tool test1.g4

3)编译语法解析器源码

javac test1*.java

4)启动语法解析器

java org.antlr.v4.gui.TestRig test1 int_variable -gui

5)输入一个定义整形变量的语句,输入完毕后,回车,ctrl + z,回车

int abc = 123;

6)语法解析树显示

4. 总结

1)我们只需要使用巴克斯范式来对语言进行形式化的描述,并按ANTLR规范来编写g4文件,ANTLR即可帮我们生成多种语言源码的语法解析器,并且将语法解析树以图形化的方式显示出来,非常直观,比bison要好用,而且适合对我们自己编写的巴克斯范式进行调试排错。

2)但是不知道如何用其生成java代码和我自己的程序结合,如果按照bison的方式,我们可以自己编写属性文法,即语义分析代码加入到bison帮我们创建的语法解析树中。因为属性文法本身就是基于上下文无关文法的,这样我就可以借助语法树来作我自己的语义分析,毕竟我们自己发明的语言的语义只有自己知道嘛。但是目前不知道ANTLR如何加入我们自己的语义代码。不过我觉得如果ANTLR应该不只是帮我分析我发明的文法的正确性,后续需要继续研究官方文档。

ANTLR 4(一)Getting Started相关推荐

  1. antlr.collections.AST.getLine()I问题的起因及解决

    在我们的java web 项目中引入hibernate和struts,当我们使用HQL语句进行查询时会报 antlr.collections.AST.getLine()I的错误,导致程序无法继续运行, ...

  2. 《ANTLR 4权威指南》——2.1节从ANTLR元语言开始

    本节书摘来自华章社区<ANTLR 4权威指南>一书中的第2章,第2.1节从ANTLR元语言开始,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区" ...

  3. ANTLR 4的C#实例

    网上大多ANTLR的资源都是Java的,很少C#的示例,此文的目的就是以一个C#实现的表达式计算实例来说明如何在Visual Studio中编写ANTLR程序.大家可以把它看成一个简单的Hello W ...

  4. 一个简单的语言的语法(二):ANTLR的重写规则

    们使用ANTLR来描述了Jerry语言的基本语法,并通过ANTLRWorks来实验该语法对样本代码生成的解析树.但如同上一篇最后所述,这样得到的解析树中有太多对后续处理来说无用的冗余信息.我们需要消除 ...

  5. java.lang.NoSuchMethodError: antlr.collections.AST.g(truts2与hibernate jar包(antlr-2.7.2.jar)冲突)

    报错代码如下: java.lang.reflect.InvocationTargetExceptionsun.reflect.NativeMethodAccessorImpl.invoke0(Nati ...

  6. [转载] ANTLR——编译原理基础知识

    来源:ANTLR中文网站:http://www.antlr.org.cn 编译是将计算机高级语言如C++.Java.C#编写的源程序翻译成可以在计算机上执行的机器语言的翻译过程.编译过程中分:词法分析 ...

  7. 在 .NET 应用中使用 ANTLR

    什么是 ANTLR ? ANTLR 是功能强大的解析器生成器,用于读取,处理,执行或翻译结构化文本或二进制文件.它被广泛用于构建语言,工具和框架.ANTLR从语法中生成一个解析器,该解析器可以构建和遍 ...

  8. antlr 4.7.1_新ANTLR 4.6的重要更改

    antlr 4.7.1 自上一个主要版本发布以来,已经过去了将近一年的时间,推出了新的ANTLR版本: 4.6 . 有很多新闻:新的目标,更好的性能,更好的错误处理以及ANTLR本身开发中的一些改进. ...

  9. antlr idea 入门_ANTLR入门:构建简单的表达语言

    antlr idea 入门 这是该系列的第一篇文章. 本系列的目的是描述如何创建有用的语言和所有支持工具. 在本文中,我们将开始研究一种非常简单的表达语言. 我们将在语言沙箱中构建它,因此我们将其称为 ...

  10. antlr 语言 库_关于ANTLR的通用库的需求:使用反射来构建元模型

    antlr 语言 库 我是一名语言工程师:我使用多种工具来定义和处理语言. 在其他工具中,我使用ANTLR:它简单,灵活,可以围绕它进行构建. 但是我发现自己围绕ANTLR为不同的项目重建了类似的工具 ...

最新文章

  1. linux_vim编辑文件无法高亮显示解决方法
  2. python turtle库有什么用_Python中turtle库的使用
  3. 致不可重新来过一次的青春(上)
  4. 一篇文章带你了解APP PUSH推送机制
  5. linux模式匹配,sed的模式匹配用法探讨
  6. 安装git之后,桌面出现蓝色问号的解决方法
  7. 凸优化第五章对偶 5.3 几何解释
  8. 农行总行携手趣链科技上线区块链涉农电商融资产品
  9. 计算机删除文件的原理,三个简单步骤,马上恢复被永久删除的文件
  10. 李开复:AI巨头是有史以来最难以打破的垄断 | 谷歌和腾讯参投中国AI企业深圳晶泰科技
  11. linux u盘 写保护,高手分享U盘被写保护的解决方案
  12. The Thirty-eighth Of Word-Day
  13. 更新linux yum源,CentOS 更新yum源
  14. 网络和http协议理论
  15. LinkedList一定比ArrayList的插入和删除效率高吗
  16. 通过ext排查MySQL服务器间歇性卡顿问题
  17. 【智能优化算法】基于寄生捕食优化算法求解单目标优化问题(Parasitism Predation algorithm,PPA)含Matlab源码
  18. unity3D 新建android apk
  19. LaTeX—如何把论文模板的关键词从Index Terms 改为Keywords
  20. DNS Reply Flood防御原理

热门文章

  1. 18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
  2. oracle虑重语句,db基本语句(oracle)
  3. java 组合对象_Java 中组合模型之对象结构模式的详解
  4. vue自定义组件,插槽,自定义事件
  5. 蓝桥杯java提交格式_2019第十届蓝桥杯JAVA省赛B组
  6. 单例模式的八种写法比较
  7. SQL Server2012如何导出sql脚本并且还原数据库
  8. [deviceone开发]-do_RichLabel的简单示例
  9. MyISAM表加字段的特殊方法
  10. Java学习二:Javac Java的学习(原创)