antlr相关的东西
与antlr开发相关的东西,有几种:
- 核心库(antlr-x.x-complete.jar):开发的时候才需要
- 包含了:
- antlr:antlr核心库本身
- stringtemplate:用于生成代码的?
- runtime:运行时,相当于antlr-runtime-x.x.jar
- 所以才叫做complete,即啥都包含了。
- 比如最新的antlr-4.0-complete.jar
- 包含了:
- 运行时(antlr-runtime-x.x.jar):运行的时候才需要
- 比如最新的antlr-runtime-4.0.jar
- 源码包(antlr-x.x.tar.gz或antlr-x.x.zip):antlr的源码本身,用于在需要时,自己去编译,生成自己需要的核心库
- 比如最新的antlr-4.0.tar.gz
另外还有个antlrworks:
- antlrworks:专门用于开发antlr的ide
- (不同版本的antlrworks)其内部集成了某个版本的antlr
- 换句话说,你即使下载了antlr-x.x-complete.jar,将其添加到了CLASSPATH中,其也和antlrworks内部的antlr,没有半毛钱关系。即antlrworks用的是自己内部集成的某个版本的antlr。
- 额外带有很多对于开发者来说,非常好用的功能,比如调试功能,语法高亮等等。
- (不同版本的antlrworks)其内部集成了某个版本的antlr
antlr-x.x-complete.jar和antlr-runtime-x.x.jar 之间的关系
antlr-x.x-complete.jar相当于Java的JDK,不仅包含了开发的东西,还包含了runtime的JRE
即:
- JAVA:JDK= JRE + 开发工具(javac等)
- antlr:antlr-x.x-complete.jar = antlr-runtime-x.x.jar + antlr相关的开发工具(TestRig等)
antlr开发方式
主要是两种:
命令行模式
使用antlr-x.x-complete.jar,将其路径添加到CLASSPATH中,然后使用命令行(Windows下是cmd),去运行对应的java命令(v4是java org.antlr.v4.Tool),去开发
- 缺点:缺少图形化的调试功能
- 优点:可以自己定义使用哪个版本的antlr-x.x-complete.jar
IDE模式
直接使用antlrworks,去开发,包括:
- 有代码编辑器,去写.g源代码
- 用图形化的调试功能去调试
- 利用其他功能,去生成相关代码或解释器等等
- 缺点:无法指定使用特定版本的antlr-x.x-complete.jar
- 优点:带图形化的调试功能
官网推荐用ANTLRWorks。
antlr的版本
antlr的主版本,有两个, v3和v4
- antlr v3:
- 相关下载地址:http://www.antlr3.org/download/
- 旧的语法,即antlr v3的语法,所用源代码是 xxx.g文件
- antlr-x.x-complete.jar
- antlr-3.3-complete.jar
- antlr-3.4-complete.jar
- antlr-3.5-complete.jar
- antlr-x.x.jar
- antlr-3.0.1.jar
- antlr-3.0.jar
- antlr-3.1.jar
- antlr-3.1.1.jar
- antlr-3.1.2.jar
- antlr-3.1.3.jar
- antlr-3.2.jar
- antlrworks 1.x(内部集成了某个版本的antlr)
- antlrworks-1.2.2.jar
- antlrworks-1.3.jar
- antlrworks-1.4.jar
- antlrworks-1.4.2.jar
- antlrworks-1.4.3.jar
- antlrworks-1.5.jar
- antlrworks-1.5rc2.jar
- antlr v4:
- 相关下载地址:http://www.antlr.org/download/
- 新的语法,即antlr v4的语法,所用源代码是 xxx.g4 文件
- antlr-x.x-complete.jar
- antlr-4.0-complete.jar
- antlrworks 2.x(内部集成了某个版本的antlr)
- 2013-01-16-antlrworks-2.0-b1.zip
antlrworks的版本
单独对于antlrworks,需要额外说明一下:
其:
内部集成了某个版本的antlr
Java是检测出来的,当前系统所安装的版本的Java
详细信息为:
antlrworks 1.x
相关版本截图和详细解释可参考:
【已解决】ANTLRWorks 1.5编译代码出错:Compiler failed with result code 1
下面是antlrworks内部集成的对应的antlr的版本:
- antlrworks-1.2.2.jar
- ANTLRWorks: 1.2.2
- ANTLR: 3.1.1
- StringTemplate: 3.2
- XJLibrary: 2.0
- antlrworks-1.3.jar
- ANTLRWorks: 1.2
- ANTLR: 3.2 Sep 23,2009 12:02:23
- StringTemplate: 3.2.1
- antlrworks-1.4.jar
- ANTLRWorks: 1.4
- ANTLR: 3.2 Sep 23,2009 12:02:23
- StringTemplate: 3.2.1
- antlrworks-1.4.2.jar
- ANTLRWorks: 1.4.2
- ANTLR: 3.3 Nov 30,2010 12:45:30
- StringTemplate: 3.2.1
- antlrworks-1.4.3.jar
- ANTLRWorks: 1.4.3
- ANTLR: 3.4
- StringTemplate: 3.2.1
- antlrworks-1.5.jar
- ANTLRWorks: 1.5
- ANTLR: 3.5
- StringTemplate v3: 3.2.1
- StringTemplate v4: 4.0.7-SNAPSHOT
- antlrworks-1.5rc2.jar
- ANTLRWorks: 1.5
- ANTLR: 3.5-rc-2
- StringTemplate v3: 3.2.1
- StringTemplate v4: 4.0.7-rc-2
antlrworks 2.x
针对antlr v4的antlrworks,是2.x版本的,是基于NetBeans的
比如:
- 2013-01-16-antlrworks-2.0-b1.zip
其相关版本信息为:
Product Version: ANTLRWorks2 20130112-0412fbb77e2b Java: 1.7.0_11; Java HotSpot(TM) 64-Bit Server VM 23.6-b04 Runtime: Java(TM) SE Runtime Environment 1.7.0_11-b21 System: Windows 7 version 6.1 running on amd64; GBK; en_US (antlrworks2) User directory: C:\Users\CLi\AppData\Roaming\.antlrworks2\dev Cache directory: C:\Users\CLi\AppData\Roaming\.antlrworks2\dev\var\cache |
ANTLR相关问题总结
antlrworks的版本兼容性问题
antlrworks 2.x的兼容性问题
参考:
使用根据官网的示例代码,结果也还是会出错:
并且,也没找到debug功能。所以后来果断换用antlrworks 1.x版本的。
antlrworks 1.x的兼容性问题
目前需要注意的是,至少我此处的环境是:
OS: win7 x64
JDK: v7 x64
对于antlrworks-1.5.jar会出现各种问题:
【已解决】ANTLRWorks 1.5编译代码出错:Compiler failed with result code 1
【已解决】ANTLRWorks调试出错:Cannot launch the debuggerTab. Time-out waiting to connect to the remote parser
只有换用旧版本的,即1.4或更低版本的,才可以正常使用。
【后记 2013-03-05】
后来也可以使用最新的,antlrworks-1.5rc2.jar去正常的调试antlr。
转载请注明:在路上 » 【总结】使用ANTLR和ANTLRWorks的开发心得和注意事项