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。
额外带有很多对于开发者来说,非常好用的功能,比如调试功能,语法高亮等等。
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和v4antlr v3:旧的语法,即antlr v3的语法,所用源代码是 xxx.g文件
antlr-x.x-complete.jarantlr-3.3-complete.jar
antlr-3.4-complete.jar
antlr-3.5-complete.jar
antlr-x.x.jarantlr-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:新的语法,即antlr v4的语法,所用源代码是 xxx.g4文件
antlr-x.x-complete.jarantlr-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内部集成的对应的antlr的版本:antlrworks-1.2.2.jarANTLRWorks: 1.2.2
ANTLR: 3.1.1
StringTemplate: 3.2
XJLibrary: 2.0
antlrworks-1.3.jarANTLRWorks: 1.2
ANTLR: 3.2 Sep 23,2009 12:02:23
StringTemplate: 3.2.1
antlrworks-1.4.jarANTLRWorks: 1.4
ANTLR: 3.2 Sep 23,2009 12:02:23
StringTemplate: 3.2.1
antlrworks-1.4.2.jarANTLRWorks: 1.4.2
ANTLR: 3.3 Nov 30,2010 12:45:30
StringTemplate: 3.2.1
antlrworks-1.4.3.jarANTLRWorks: 1.4.3
ANTLR: 3.4
StringTemplate: 3.2.1
antlrworks-1.5.jarANTLRWorks: 1.5
ANTLR: 3.5
StringTemplate v3: 3.2.1
StringTemplate v4: 4.0.7-SNAPSHOT
antlrworks-1.5rc2.jarANTLRWorks: 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会出现各种问题:
只有换用旧版本的,即1.4或更低版本的,才可以正常使用。
【后记 2013-03-05】
后来也可以使用最新的,antlrworks-1.5rc2.jar去正常的调试antlr。