您所在位置: 网站首页 / Antlr简介及中文手册.doc / 文档详情
Antlr简介及中文手册.doc 立即下载
2024-08-13
约1.6万字
约25页
0
626KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Antlr简介及中文手册.doc

Antlr简介及中文手册.doc

预览

免费试读已结束,剩余 20 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Antlr简介
06通讯软件06382027郑毅
本文主要介绍了什么是ANTLR,以及ANTLR的使用,其中ANTLR的使用包括了ANTLR的安装及使用,ANTLR语法文件解析,ANTLR规则(RULE)解析,ANTLR语法实例—SensorSQL,ANTLRStudio及其功能介绍等。

Antlr(ANotherToolforLanguageRecognition)是一个工具,前身是PCCTS,它为我们构造自己的识别器(recognizers)、编译器(compiler)和转换器(translators)提供了一个基础。通过定义自己的语言规则,Antlr可以为我们生成相应的语言解析器,这样便可以省却了自己全手工打造的劳苦。
它是这样的一种工具,它可以接受文法语言描述,并能产生识别这些语言的语句的程序。作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,语言包括Java,C++,C#和不久的Python。
ANTLR知道怎样构建识别程序,这些程序可以对以下三种不同的输入应用文法结构:(i)字符流,(ii)记号流,和(iii)两维的树结构。很自然的它们分别与词法分析程序(lexers,以下简称lexer),语言解析程序和树遍历程序向匹配。这个用于定义这些语法的元语言,在所有情况下几乎一样的。
一旦你对ANTLR和类似工具比较顺手,你会开始以一种新的目光来看编程。许多任务强烈需要语言解决方案,而不是采用传统编程语言的做法。比如,这些过程的注解都是用特伦斯标记语言写的。而ANTLR则能来将文本(内含一些额外的东西和转换)转化为HTML,PDF或者其他那些生成程序的文件格式。
最后,ANTLR只是一件工具,仅仅这些。虽然它能通过将容易理解的乏味部分自动化来帮助你创建软件,但却不能企图让你指定整个编译器。例如,在单个的描述里就不行。那些宣称这类事情非常伟大,可以为发布刊物文章编写惊人的“一揽子解决方案”,却会悲惨失败在实际项目中。
词法分析器(Lexer)
词法分析器又称为Scanner,Lexicalanalyser和Tokenizer。程序设计语言通常由关键字和严格定义的语法结构组成。编译的最终目的是将程序设计语言的高层指令翻译成物力机器或虚拟机可以执行的指令。此法分析器的工作是分析量化那些本来毫无意义的字符流,将他们翻译成离散的字符组(也就是一个一个的Token)括关键字,标识符,符号(symbols)和操作符供语法分析器使用。
语法分析器(Parser)
编译器又称为Syntacticalanalyser。在分析字符流的时候,Lexer不关心所生成的单个Token的语法意义及其与上下文之间的关系,而这就是Parser的工作。语法分析器将收到的Tokens组织起来,并转换成为目标语言语法定义所允许的序列。
无论是Lexer还是Parser都是一种识别器,Lexer是字符序列识别器而Parser是Token序列识别器。他们在本质上是类似的东西,而只是在分工上有所不同而已。
ANTLR
ANTLR将上述两者结合起来,它允许我们定义识别字符流的词法规则和用于解释Token流的词法分析规则。然后,ANTLR将根据用户提供的语法文件自动生成相应的词法/语法分析器。用户可以利用他们将输入的文本进行编译,并转换成其他形式(如AST—AbstractSyntaxTree,抽象的语法树)。




Antlr使用
安装及使用
到HYPERLINK"http://www.antlr.org/"\t"_top"http://www.antlr.org/下载最新版本的ANTLR开发包和源码(例如版本3.01)。将antlr-3.0.1.jar所在目录配置到你的环境变量中,写好语法文件(例如SensorSQL.g),运行命令“javaantlr.ToolSensorSQL.g”就可以获得自动生成语法/词法分析器。

ANTLR语法文件解析

下面我们对图中所描述的ANTLR语法文件做一些详细的分析。为了更好的使用ANTLR,你还可以下载ANTLR的Eclipse插件来帮助你完成工作。
1.header域:所有出现在这里的部分,都会出现在由ANTLR编译之后生成的Java文件的最顶部。在本例中你可以将包名和其他信息放到这一区域中,生成的结果如由面对应代码部分所示。
2.你在这一部分所提供的内容对于文件中的每个语法都是唯一的。这一区域的内容将出现在实际的类定义之前。也就是说,两个import仅属于类CalcParser,而不属于在同一个文件中定义的其他类(如CalcLexer)
3.这里是语法定义部分,你同样可以将它看成是类定义。
4.在O
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Antlr简介及中文手册

文档大小:626KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用