查询语句QL的语义分析和实现 第2页
1 前言
伴随着网络的日益发展,每天需要处理的数据更是呈指数级别增长,建立高效良好的数据库管理系统的重要性已被提上日程。数据库管理系统是一个能有效建立和管理大量数据的强大工具,并且能安全长期地保存这些数据以供使用。数据库管理系统无处不在,尤其被应用于维护商业内部记录,在网络上为顾客存储和查询数据提供方便服务,以及支持很多其他商业处理。自主知识产权数据库是以市场上常见的数据库管理系统为基础,功能相似的数据库系统。由于数据库软件的开发需要巨大的资金和研发力量的投入,再加上国内的技术和制度等有待完善,自己开发数据库系统软件的难度较大,因此长期以来,国内市场的绝大部分市场份额一直由Oracle、SQL Server、DB2、SYBASE等国外产品所占据。但无论是从国家信息安全,还是从国家软件产业发展的角度考虑,数据库软件的国产化都有其十分重要的意义。所以开发自主知识产权库对自己和对国家都有好处,对自己可以提高开发大型软件的能力,综合运用所学知识,充分了解和掌握先进技术,培养团队精神;如果开发成功,对国家将是一个巨大的贡献。
自主知识产权数据库的框架共七层,涉及编译原理、数据库、程序设计等多方面的知识,语法分析和语义分析在第四层。能够进行正确的语义分析,合理而且高效的语法制导翻译,从而进行语义检查,是为上层SQL语句提供函数式接口的关键。因此本文研究数据查询语句的语义分析具有十分的必要性和重要的意义。
本文是基于自主知识产权数据库数据定义语言的词法分析、语法定义规则、语法分析的工作原理,在充分运用编译原理中的语义分析,语法制导翻译的理论知识,综合运用数据结构的基础上,定义优先关系表,确定运算符之间的优先关系,用栈的形式实现对条件表达式的计算;设计各模块接口参数的约定形式,并以Visual C++6.0为开发平台,对自主知识产权数据库中的查询语句的语义分析进行设计与实现。主要完成了以下工作:
首先根据QL文法定义,采用语法制导翻译方法,在语法分析的同时进行语义分析,侦查和报告QL语句中的语义错误等,包括类型匹配,边界溢出检查等。
其次,在语义检查同时,执行语义子动作。在算法上主要是实行语法制导的翻译,本文主要实现对条件表达式的翻译以及计算。将条件表达式翻译成易于计算的形式,如:{0}='d' && {3}<=5 && (!{5}=9),在{i}中,i为数据库中表的列名的索引值。并利用表达式的计算结果来检查查询条件是否成立,为事务处理模块提供函数接口,以便进行正确的查询。
再者,若进行语法分析的同时,语义检查正确时,筛选出查询所需的元素(表名和相应的列名);并基于本文所设计的接口参数传递方式,将查询条件的翻译结果和分析出来的表名和相应的列名传递给事务处理模块。若语义检查错误时,给予提示,并将错误信息传递给上一层。
本文完成了SQL语言中的简单查询语句QL的语义分析。在此基础上,若扩充QL语句的文法定义,增加相应的产生式,可实现更加复杂的查询。其中可采用LR分析法,这样文法限制少,错误定位准确,效率较高,易于自动生成。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页