当前位置: 首页 > 工具软件 > Antlrworks > 使用案例 >

antlr 可以用java写吗_【总结】使用ANTLR和ANTLRWorks的开发心得和注意事项

左丘阳晖
2023-12-01

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。

 类似资料: