【总结】使用ANTLR和ANTLRWorks的开发心得和注意事项

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,去开发,包括:

  1. 有代码编辑器,去写.g源代码
  2. 用图形化的调试功能去调试
  3. 利用其他功能,去生成相关代码或解释器等等

 

  • 缺点:无法指定使用特定版本的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的兼容性问题

参考:

Getting started with ANTLR v4

使用根据官网的示例代码,结果也还是会出错:

【记录】搭建ANTLR v4开发环境

并且,也没找到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。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量