你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
Linux环境中使用Flex、Bison进行SQL语法分析
 

孙兆玉    朱鸿宇    黄宇光

     本文以查询语句分析为例,从问题描述、语法范式构建、词法分析、语法分析和应用接口设计等方面详细阐述了一种SQL语句解析的通用策略,并介绍了与之相关的冲突消解、可重入策略和错误处理三个方面的技术。

关键词   BNF范式,词法分析,语法分析,冲突消解,可重入

 

一、       引言

       SQL是面向关系数据库操作的一门成熟的高级语言,它是数据库管理系统强大的管理操作接口。每个数据库管理系统(DBMS)都包含有自己的SQL语法、语义分析模块,但通常都不向外提供具体的分析功能函数以及数据结构。然而实际应用中,却有很多地方需要进行SQL语法分析,如:不同标准SQL互相翻译、面向SQL编辑器的报错提示、基于SQL语句的任务分析统计、SQL操作图形化等。

       本文介绍了一种采用FlexBison分析工具进行SQL语法分析的通用策略,解决了SQL分析过程中的冲突消解、可重入策略和错误处理三大问题,实现了对OracleSQL语句进行语法分析并构建完整的SQL语法树的目标,为进一步的处理提供了方便。

二、       Flex、Bison工具

       FlexBison是上个世纪80年左右出现的Unix环境下分析编译工具lexyaccGNU版本。当时贝尔实验室的Stephen C. Johnsonyacc最主要的作者,他采纳了很多先进算法思想,将yacc打造成为一个成功的语法分析编译工具。其后,M. E. Lesk and E. Schmidt 成功推出了词法扫描工具lex,它与yacc是天生兄弟,lex架构上采用了yacc模式,字符串扫描采用了A. V. Aho的算法机制,因此,Schmidt常谦称JohnsonAho才是lex的元老作者。后来,GNU社区在lexyacc基础上,推出了FlexBison,然后随着不断的技术改进又推出了许多版本,每个版本都有自己的特色,主要针对以前版本功能缺陷的一些修改等。本文推荐使用Flex2.5.31版就具有生成多线程词法扫描器能力。

       Flex主要功能是根据用户定制的构词规则,生成面向字符流自动扫描分词的程序。与用户自己动手编写扫描分词程序相比,它的速度和准确度一般都要高。并且采用它,用户可以减少大量的编码。

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089