基于SECD抽象机的XQuery编译实现技术的研究

来源 :北京工业大学 | 被引量 : 0次 | 上传用户:lvhuan009a
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着XML逐渐成为互联网应用的数据交换格式,越来越多的应用使用XML作为数据存储格式,对于XML的查询语言需求正在日益增加。XQuery语言的推出使得XML查询语言有了一种统一的标准。XQuery语言具有良好的查询能力、数据组织能力和算法描述能力,其应用领域正在不断地扩展。XQuery语言实现与应用技术的研究逐渐成为了一个重要的研究方向。 随着应用的增多,XQuery语言已经逐渐成为了一种主流的计算机语言。对于应用程序来说,XQuery程序执行效率的高低是十分重要的,XML半结构化数据特点的限制使得XQuery语言实现技术的研究一直受人关注。和解释实现技术相比,采用编译实现的方法可以为代码优化创造更多机会,生成的代码拥有更高执行效率。同时,编译技术的研究也将为动态编译的实现提供了前提条件。 本文对XQuery的编译实现进行了研究,给出了基于SECD抽象机的XQuery编译实现方案,实现了XQuery程序到Java字节码程序的编译。该实现使用SECD抽象机作为编译后端的语义基础,保证了中间语言FXQL翻译到SECD抽象机指令的语义不会丢失。XQuery语言的编译实现方案的主要特色在于采用了分层的体系结构,采用了FXQL中间语言和SECD抽象机指令系统等中间表示,为编译优化提供了多种机会,允许在不同的层次上引入了不同性质的优化策略。其中,FXQL语言主要用于表示查询计划,基于查询代数的查询重写可以通过FXQL语言的程序变换来实现,这种优化技术主要借鉴了数据库查询优化技术;而SECD抽象机指令易于表示程序控制流程和函数调用过程的实现,所以可以引入消除尾递归、函数内联等一般程序设计语言的代码优化技术。 本文已经实现了一个基于SECD机的XQuery编译系统——XQC系统。在该系统中,XQuery程序先后被翻译成FXQL中间语言程序、SECD机指令序列,并经过消除尾递归和函数内联等优化处理,最终被翻译为Java字节码形式的目标程序。在本系统提供的运行支撑环境下,这种目标程序能够正确地运行在Java虚拟机上。 本文针对字节码目标程序进行了功能测试和性能测试。实验结果说明:使用基于SECD抽象机的XQuery编译实现方案,可以将XQuery程序编译为等价的Java字节码程序。在Java虚拟机上加载运行编译产生的字节码程序比解释执行效率更高。同时,在SECD指令序列中引入的尾递归消除优化策略,可以有效地消除部分函数调用的开销,节省栈空间,提高执行效率。
其他文献
传统的以手工操作为主的学生宿舍用电管理方式,信息反馈慢,工作效率低,管理质量差。在科学技术飞速发展与广泛应用的今天,这种落后的管理方式与时代的步伐已经格格不入,学生宿舍用
Web技术是推动Internet发展的重要里程碑。伴随着电子商务、电子政务以及网上教育、个人博客的蓬勃发展,Web服务在社会政治经济生活中发挥着越来越重要的作用。由于对网上服
运动目标的检测与识别是一项理论意义与实用价值兼备的课题,可以广泛应用于国防与国民经济建设的诸多领域,是当今图像处理与图像理解领域的一个热门方向,随着其应用领域得不
嵌入式系统已经越来越多地应用在各个领域中,随着硬件和软件技术的发展,操作系统在嵌入式领域发挥着越来越重要的作用。其中大多数嵌入式系统都是基于单处理器环境,而随着计算机
Internet技术不断发展,人们借助互联网络广泛地从事商品与服务的电子化交易以缩短交易时间和降低交易成本,商务活动处理过程往往要跨多个组织而且持续较长时间,应用事务处理技术
随着嵌入式系统的高速发展,嵌入式存储设备在嵌入式的设计中扮演的角色也越来越重要。CF卡是一种闪存存储器,由于它的速度快、容量大、不易出错等特点,目前在嵌入式领域中的
优化问题是从实际应用中产生的,它不论在经济、军事还是高科技领域都有着重要的研究价值,因此进行这方面的研究就显得非常有必要。然而随着问题在复杂度和规模化等方面的提高,这
存储安全一直是安全领域的核心问题,尤其是对于军队、国家机构、重要商业机构等含涉密数据较多的领域。一旦敏感数据被窃取,其造成的损失有时是无法估量的。当前信息安全防御攻
近年来,我国软件产业迎来了蓬勃发展的新局面。随着软件企业规模的扩大,相应软件质量问题越来越突出。开发了Web自动化测试工具软件,就是为了加快测试执行频率,覆盖更多的功能模
软件测试是软件系统工程的一个关键组成部分,是软件开发的重要环节和保证软件质量的关键步骤,其目的是以最少的时间和人力找出软件中潜伏的各种错误和缺陷。然而,软件测试是一个