antlr技术及其在hql语言编译中的应用new

antlr技术及其在hql语言编译中的应用new

ID:34452996

大小:385.64 KB

页数:8页

时间:2019-03-06

antlr技术及其在hql语言编译中的应用new_第1页
antlr技术及其在hql语言编译中的应用new_第2页
antlr技术及其在hql语言编译中的应用new_第3页
antlr技术及其在hql语言编译中的应用new_第4页
antlr技术及其在hql语言编译中的应用new_第5页
资源描述:

《antlr技术及其在hql语言编译中的应用new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cnANTLR技术及其在HQL语言编译中的应用徐骁栋河海大学计算机及信息工程学院,南京(210098)E-mail:Jenas@hhu.edu.cn摘要:本文分析了当前比较流行的编译工具ANTLR,并结合编译技术研究了ANTLR的特性和功能,最后给出了ANTLR编译器在开源框架Hibernate中的HQL查询语言中的应用及其原理。关键词:ANTLR、HQL、编译技术、词法分析、语法分析中图分类号:TP3141.引言编译程序的构造一直是编译原理中研究的热点,最初的编译程序大多

2、通过手动编写,程序复杂而冗长,并且效率低下,程序不稳定,难以维护和移植。而随着计算机编译技术的不断发展,现在绝大多数的编译程序都是通过编译器来构造和生成,这极大的提高了工作效率和编译速度,也推动了编译技术的普及。在本文中,我们将介绍一种Java语言编写的开源编译器——ANTLR,全称是ANotherToolforLanguageRecognition,它为包括Java、C++、C#、Python在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(tr

3、anslator)的框架。ANTLR是由美国大学教授TerenceParr和他的同事于1989年开始开发,由于是开源的项目,在经过二十多年更新、升级和修改,已能满足目前市场上的大多数应用。ANTLR能自动生成词法扫描程序对输入的正则表达式进行检测,并能将对应的语法规则自动转换成相应的抽象语法树,从而降低了编译程序的门槛,使得计算机语言的翻译变成一项很普通的任务。2.ANTLR技术介绍目前市场上存在着不少编译器,如比较传统的词法分析器LEX和语法分析器YACC,相对于这些传统的编译器,ANTLR有着许多能体现和支持现

4、代语言设计思想的特性:⑴ANTLR是基于面向对象的思想设计的,处处体现类的思想,所定义的词法和语法分析程序都以类的形式展现。⑵ANTLR整合了词法和语法分析器。⑶ANTLR接受由EBNF范式(扩展的巴斯克范式)构建的语法规则,并能根据规则自动构建抽象语法树。⑷ANTLR使用的是递归下降的语法分析器,因此语法规范和ANTLR输出之间的对应关系比较清楚,比较容易理解。⑹ANTLR能方便的自动和手工进行错误恢复和报错,自动机制能简单有效地分析许多语法情况;手动的机制被称为“语法分析异常处理”,简化了高质量的错误处理。⑺A

5、NTLR允许每个语法规则都有参数和返回值,方便在语法分析中的属性传递。一个规则的参数会被转换成一个函数的参数,ANTLR中可以有多个返回值。⑻ANTLR是用Java语言编写,可方便移植和调式,很容易整合到项目的应用程序中。⑼ANTLR语法分析器用于构建可读的递归下降的LL(K)语法分析器,当K>1时,支-1-http://www.paper.edu.cn[1]持断言。2.1编译程序构造的基本原理编译程序完成的是从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程划分为几个阶

6、段进行,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。编译过程一般划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成这六[2]个阶段。此外,编译过程中源程序的各种信息保留在各种符号表中,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有符号表管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校

7、正错误,这些工作称为出错处理。图1表示了编译的各个阶段,其中最主要的且不可或缺的三个阶段是词法分析、语法分析、语义分析。图1编译原理各个阶段的流程图2.2ANTLR构造词法分析器的原理词法分析是编译的第一个阶段,它的主要任务是从左到右逐个字符地扫描源程序,产生[3]一个个单词序列用以语法分析。执行词法分析的程序称为词法分析程序或扫描程序。词法程序的功能是读入源程序,输出单词符号。一般分为五种:¾关键字,如HQL中from,where等。¾标识符,用来表示各种变量名,常量名等。如EQ:‘=’;中的EQ¾常数,各种类型

8、的常数,如数字123.¾运算符,如=,>¾界符,如逗号,括号。-2-http://www.paper.edu.cn如图2所示,整个词法分析的流程就是通过正则表达式来构造DFA(有限自动机),并最终生成扫描程序的过程。图3显示了词法分析器的结构图。图2词法分析的流程图图3词法分析器的设计结构图2.3ANTLR构造语法分析器的原理语法分析主要判断是否能从文法的开

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。