`

ANTLR学习笔记二:学习使用ANTLRWorks

 
阅读更多

一、什么是ANTLRWorks

ANTLRWorks属于ANTLR的一部分,不过它需要单独下载。

see

http://www.antlr.org/works/index.html

它包含了ANTLR的jar包内容。

另外,它提供编辑功能,可以独立于诸如Eclipse的IDE工具。

也就是说,如果java代码和语法全写在同一个.g文件内,

就不需要开一个编辑器或者IDE了。(除非需要修改输入文件的内容)

虽然ANTLRWorks是图形界面,

但它充分体现程序员对快速开发和测试驱动的渴求。

毕竟大多数程序员还是比较希望早点看到代码效果的。

 

二、ANTLRWorks的使用、好处和限制

1. 启动

关于它的使用和特性可以参考官方网站的介绍:

http://www.antlr.org/works/index.html

在Windows下,我习惯用批处理启动

@set path=%path%;D:\java\jdk1.6.0_20\bin

@start java -jar antlrworks-1.4.2.jar

作用是把JDK加入PATH,用于编译和调试(JRE无法编译java程序)。

2. 输入文本或文件测试

(1)用菜单打开或新建一个.g文件,然后按子窗口工具栏上的绿色虫子按钮。

ANTLRWorks就会在output子目录生成相关的.java文件并且编译成.class文件。

如果成功,会弹出Input Text对话框,询问测试的输入内容。

按OK后,切换到主窗口的Debugger标签页,

(2)按标签页中工具栏上的"Go To End"(符号有点像录音机的快进)

在Parse Tree窗口就会出现一棵树(根在上,叶在下)

一般这棵树很宽,需要调整下面的Zoom缩放,

或者干脆按右下角的"Display as List"切换成

根在左叶在右的树列表。

如果解析的输入文本的叶很多,建议使用根在左叶在右的树进行检查。

(3)如果要修改.g文件,按Debugger标签页左上角的Stop按钮,

中间的.g文件编辑器就会重新变回可编辑了。

3. .g语法文件的错误检查

(1)ANTLRWorks会在调试前检查.g是否有错误。

(2)如果在Input Text对话框弹出时选择错误的Start Rule(开始符),

Java编译器可能会报错。

(3)在上面提到的输入文本测试中,按"Go To End"可能会造成一个问题:

左面输入只显示全部输入的一部分,

那是因为默认Break on会勾选Consume。

如果出现Consume,输入就会停止,说明.g的语法有问题。

(4)按"Go To End"还可能造成另一个问题:Java程序抛异常。

这种情况需要切换到Output(在Debugger标签页下方)

(5)如果在Input Text对话框弹出时选择File,需要注意代码页问题。

ANTLRWorks不同于ANTLR的代码生成,它多生成了一个叫__Test__.java文件。

这个文件最开始会创建一个文件流,例如这样:

new ANTLRFileStream("XXX\\XXX.txt", "UTF8");

所以,如果输入文件不是UTF8(不带BOM),而且带中文的话,

用Go To End测试的结果会有问题(ANTLR3希望把一个中文字视为一个字符)。

4. ANTLRWorks的问题和限制

(1)ANTLRWorks生成的文件无法直接用于应用程序,

因为生成代码中加入了与socket通信相关的代码,只能用于调试。

(2)个人认为,它对Java以外的编程语言支持不够好。

Java版ANTLR支持的特性应该是最多的。

所以在开发前期最好用Java写嵌入动作。

(3)默认只支持UTF8(不带BOM)的输入文件

(4)Input Text对话框弹出比较烦人,

如果需要测试很多输入文件,这种方式也很累人。

(5)有时会出现一些莫名奇妙的运行错误,

需要删除output目录下的文件后重新调试。

(6)个人觉得它只适合单一.g文件的编写和调试。

 

三、结论

ANTLRWorks是使用antlr的短兵器,逆向推导语法的利器。


分享到:
评论

相关推荐

    antlr-2.7.7.jar.zip

    implementation 'antlr:antlr:2.7.7' ``` 3. **如果没有使用构建工具**,你可以将jar文件放入项目的`lib`目录下,并在运行时通过`java -cp`命令指定classpath包含这个jar。 ANTLR 2.7.7虽然已经是一个较老的版本...

    antlr-2.7.7.jar

    antlr-2.7.7

    Antlr4 C++ 计算器

    总之,"Antlr4 C++ 计算器"是一个学习ANTLR4和语言解析技术的好起点,它展示了如何使用ANTLR4生成的解析器和词法分析器在C++环境中解析和执行数学表达式。通过深入理解和实践这个项目,你可以提升对编译原理和语言...

    antlrworks-2.1

    7. **跨平台支持**:ANTLRWorks支持Windows、Mac OS X和Linux操作系统,这意味着无论在哪种环境下,开发者都能使用它来开发ANTLR解析器。 8. **文档和社区支持**:ANTLRWorks有着丰富的在线文档和活跃的社区,用户...

    编译器的编译器antlr的教程

    4. 下载ANTLR:获取ANTLR的jar包,例如版本v3.3,这是编写ANTLR语法文件所需的库。 5. 安装Eclipse插件:安装ANTLRWorks和ANTLRv3IDE,这两个插件将提供图形化的语法编辑和调试环境。 6. 验证安装:通过创建简单的...

    antlr4-runtime-4.2-API文档-中文版.zip

    Maven坐标:org.antlr:antlr4-runtime:4.2; 标签:antlr、antlr4、runtime、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    The+Definitive+ANTLR+4+Reference 学习笔记word

    这本书的学习笔记将帮助读者深入理解ANTLR4的工作原理和实践应用。 ANTLR4的核心功能包括: 1. **语法定义**:ANTLR4允许用户使用EBNF(扩展巴科斯范式)来定义语法规则,这是一种形式化的语法描述语言。这些规则...

    The Definitive ANTLR4Reference 学习笔记

    ANTLR(Another Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛应用于编程语言、协议、表达式、脚本和其他语言的定义。ANTLR 4是ANTLR系列...

    ANTLR 4 权威指南 C++ 计算器

    ANTLR 4 是一款强大的解析器生成器,广泛用于构建语言、工具和框架。它能够读取、处理、执行或翻译结构化文本或二进制文件。...对于想要学习 ANTLR 4 或者编译原理的人来说,这是一个很好的实践案例。

    antlrworks-1.5.2-complete.jar

    ANTLRWorks: The ANTLR GUI Development Environment website: http://www.antlr3.org/works/ 双击可运行

    antlr4-runtime-4.7-API文档-中文版.zip

    Maven坐标:org.antlr:antlr4-runtime:4.7; 标签:antlr、runtime、antlr4、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    ANTLR V3 语法解析工具

    - 教育和研究:ANTLRWORKS的图形化界面和调试功能对教学语言处理概念非常有帮助,同时也适用于语法和编译原理的研究。 总的来说,ANTLR V3和ANTLRWORKS是强大的语言开发工具,它们简化了语言解析器和词法分析器的...

    antlr4-calculator:ANTLR4计算器示例和说明

    该项目使用Java 11,但是如果需要可以在pom.xml进行更改使用Maven安装软件包(请参阅pom.xml ) 这会通过ANTLR4自动生成所需的类要基于语法手动更新/重新生成所需的类,可以让Maven执行antlr4:antlr4命令如何开始...

    antlr4-solidity:优化的antlr4

    具有优化功能的antlr4解析器 antrl4优化 ANTLR 4的优化前叉由Tunnel Vision Laboratories,LLC的Sam Harwell维护。 ANTLR 4的这种“漏洞”实现包含许多功能和性能优化,这些功能和性能优化未包含在参考版本中。 通常...

    antlr4-runtime-4.7-API文档-中英对照版.zip

    Maven坐标:org.antlr:antlr4-runtime:4.7; 标签:antlr、runtime、antlr4、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...

    antlr-3.5-API文档-中文版.zip

    Maven坐标:org.antlr:antlr:3.5; 标签:antlr、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...

    antlr4-tool:具有完整TypeScript支持的有用的Antlr4工具

    antlr4-工具总览该项目的目的和意图是为 JavaScript目标创建并生成Typescript声明文件。 允许生成的具有完整ES5浏览器支持的Antlr解析器和词法分析器。 如果需要,此工具还允许纯JavaScript实现。要求Java Runtime ...

    Antlr2.7&3.3&ANTLRWorks

    由于antlr最新3.3版本只支持C, Objective-C, Ruby, C#, ActionScript, JavaScript, and Java ... 而不能支持c++所以将支持c++的2.7.7版本及最新版本打包在一起(包括代码与程序)并加上最新的ANTLRWorks,以方便使用

    antlrworks-1.5.1.jar

    使用antlr需要我们提前定义好识别字符流的词法规则和用于解释Token流的语法分析规则。然后,antlr会根据我们提供的语法文件自动生成相应的词法/语法分析器。hive借助Antlr定义SQL的词法规则和语法规则,完成SQL词法...

Global site tag (gtag.js) - Google Analytics