1. ANTLRWorks2的简单介绍
① ANTLR官网对ANTLRWorks2的介绍
ANTLRWorks 2.此IDE是ANTLR v3 / v4语法以及StringTemplate模板的复杂编辑器。
它可以运行ANTLR工具来生成识别器,并可以运行TestRig(在命令行上运行)来测试语法。
要将ANTLR生成的识别器集成到您的应用程序中,您至少还需要运行时库。
② ANTLRWorks 2官网对自己的介绍
- ANTLRWorks 2是Tunnel Vision Labs使用几种新技术开发的,可以对之前的语法工具进行完全重写。我们用于NetBeans®开发的核心框架最初是为该项目创建的,但很容易扩展到其他语言,并且是我们所有基于NetBeans的应用程序的起点。
- 对ANTLR的支持——源代码图。编辑ANTLR语法文件时,“语法图”窗口显示当前规则的直观表示。此功能提供语法元素的自然表示,并且是提供自定义功能以增强特定语言的特征的示例。另外,双击源代码图中的元素将立即跳转到相关的源代码。ANTLR的语法图如图所示:
- ANTLRWorks 2的编辑提示功能:ANTLRWorks 2提供编辑器提示,以警告开发人员语法编译器当前未检测到的语法中的潜在错误或性能问题。由于此类静态分析对每种语言都是唯一的,因此我们与语言创建者和用户合作,提供最有可能在开发周期早期检测到有问题代码的分析功能。ANTLRWorks中语法的当前分析功能包括以下内容:
(1)ANTLR 4工具报告的错误和警告在编辑器中“实时”显示
(2)识别解析器中的隐式标记定义(可能的错误)
(3)因子标签超出集合(性能提示)
(4)组集元素(性能提示)
- antlrworks:专门用于开发antlr的ide,(不同版本的antlrworks)其内部集成了某个版本的antlr。 换句话说,你即使下载了antlr-x.x-complete.jar,将其添加到了CLASSPATH中,其也和antlrworks内部的antlr,没有半毛钱关系。即antlrworks用的是自己内部集成的某个版本的antlr。
参考链接:
ANTLR Development Tools(ANTLR官网)
ANTLRWorks 2
2. ANTLRWorks2的下载
- 进入ANTLRWorks2的官网,在右上角点击下载ANTLRWorks2 V2.1。
- 该版本是2013年8月28日发行的,内部集成的是
ANTLR 4.1
。
- 解压下载的安装包
2013-07-21-antlrworks-2.1.zip
,进入解压目录下的bin目录,我的是C:\Users\lucy\Downloads\antlrworks2\bin
,点击antlrworks2.exe
,即可运行antlrworks2。
3. ANTLRWorks2的简单使用
① 新建*.g4文件
- 点击左上角的
新建
按钮,弹出“New File”窗口:
- 默认为
ANLTR 4 Combined Grammar
就好,点击Next
按钮,进入如下页面,输入自己的文件名、保存路径:
- 点击“Finish”,完成文件创建:
② ANTLRWorks2的语法图功能
- 定义数字,由0-9组成(即词法分析器——Lexer),可以重复一次或多次:
grammar Cpp;
NUM:[0-9]+;
鼠标放到NUM:[0-9]+;
行,显示对应的语法图:
- 定义操作符(即词法分析器——Lexer),包括加减乘除,只允许出现一次:
grammar Cpp;
NUM:[0-9]+;
OPERATOR: '-'|'*'|'/';
鼠标放到 OPRATOR:'+'|'-'|'*'|'/';
行,显示对应的语法图:
- 定义表达式(即语法分析器,Parser):
grammar Cpp;
PROG: exp;
exp: NUM OPERATOR NUM;
NUM:[0-9]+;
OPERATOR: '-'|'*'|'/';
鼠标放到 exp: NUM OPERATOR NUM;
行,显示对应的语法图:
- 文法定义的可视化:
PS: 本人探索发现:不知道是不是版本的问题,V2.1中使用ANLTR 4 Combined Grammar
生成的文件,跟某些参考博客中不一样,V2.1中只显示Parser Rules
。如果使用ANLTR 4 Lexer Grammar
或ANLTR 4 Parser Grammar
生成文件,Parser Rules
和Lexer Rules
都会显示。但是,在ANLTR 4 Lexer Grammar
中定义parser规则会有错误提示,在ANLTR 4 Parser Grammar
中定义Lexer规则也会有错误提示。
③ 语法解析
- 点击
Run-->Run in TestRig
,弹出如下窗口。在新窗口中输入要进行解析的文件,里面是待解析的内容;选择用哪个语法解析器进行解析,最后点击Finish
。
- hello.txt中的内容为
101+2689
,解析出来的语法树(以弹窗的形式显示)如下。对应的命令为
grun Cpp r -gui
- TestRig的终端显示的信如下,对应的命令为
grun Cpp r -tree
:
④ 小小的语法总结
- 使用
大写字母
对lexer
进行命名,使用小写字母
对parser
进行命名。 - 使用
*
表示0-N次重复
,使用+
表示1-N次重复
。
参考链接:
YouTube视频——ANTLRWorks(安装及使用教程)
【总结】使用ANTLR和ANTLRWorks的开发心得和注意事项
【记录】尝试使用ANTLRWorks 2.0去进行ANTLR开发
Antlr 4.0和AntlrWorks开发环境配置