一种嵌入式芯片SQL语句解析方法技术

技术编号:28558733 阅读:59 留言:0更新日期:2021-05-25 17:53
一种嵌入式芯片SQL语句解析方法,包括设置在嵌入式芯片中的词法解析模块和语法解析模块,所述词法解析模块用于识别SQL语句字符串中的单词,并将其转换成对应的状态符,所述语法解析模块用于判断词法解析后的状态符组合是否符合语法规范,针对SQL语句中的单词,建立将输入字符转换成状态符的转移函数,接受状态符集合,各个所述接受状态符分别对应于不同的单词。采用CARD SQL模块对SQL语句进行解析取代了中间件对SQL语句进行解析,减少了内存占用,提高了嵌入式芯片内数据库的兼容性,对中间件的依赖大为减轻。

【技术实现步骤摘要】
一种嵌入式芯片SQL语句解析方法
本专利技术涉及嵌入式芯片SQL语句解析方法,尤其涉及在嵌入式芯片内的SQL语句解析。
技术介绍
嵌入式芯片是指具有嵌入式微处理器、存储器、通用设备接口和I/O接口,有一定控制功能的芯片,例如:智能卡用芯片。由于嵌入式芯片存储器的内存受限,在对嵌入式芯片内存储的数据库进行增删改查等操作时,通常使用卡外PC端中间件的方式(下文简称PCSQL)处理SQL语句,即先将结构化查询语言(以下简称SQL)处理转化成一定格式的“中间数据”,然后传入卡内,随后由芯片上的数据库进行后续的分析处理。使用PCSQL的主要优点是:1.压缩数据量,提高传输效率,因为PC端的预处理可以将数据转化成紧凑的高效的存储格式。2.根据处理时序改变数据次序,优化芯片内缓存能力不足的处理效果,因为标准SQL的语法顺序不太适合直接的顺次处理,而非顺次处理则要求较大的缓存区对数据暂存。3.芯片内不处理SQL语句将会使得芯片内的数据库(DB)模块复杂度降低,减小项目风险。使用PCSQL也有缺点:1.将较多的数据预处理功能交给卡外中间件,将限制芯片内DB的功能,使得DB的易用性和通用性、可移植性下降。2.数据格式兼容性差,例如DB2.0必须兼容全部DB1.0的“中间数据格式”,而DB2.0又需要扩展该接口以完善功能,增加诸如复杂表达式查询、连接查询等功能将使接口的定义复杂化,既做到兼容又做到复杂扩展有时候是矛盾的。由于PCSQL操作需要占用非常大的内存,而芯片内存有限,无法在芯片内进行PCSQL相同的操作。<br>
技术实现思路
本专利技术的目的在于解决上述问题,提供一种占用内存小,能在嵌入式芯片内实现SQL语句解析的方法。本专利技术提供了一种嵌入式芯片SQL语句解析方法,包括设置在嵌入式芯片中的词法解析模块21和语法解析模块22,所述词法解析模块21用于识别SQL语句字符串中的单词,并将其转换成对应的状态符,所述语法解析模块22用于判断词法解析后的状态组合是否符合语法规范,其特征在于:针对SQL语句中的单词,建立将输入字符转换成状态符的转移函数,接受状态符集合,各个所述接受状态符分别对应于不同的单词。所述词法解析模块21包括以下步骤:步骤S201,按照SQL语句的顺序逐个输入字符;步骤S202,判别是否是分隔符,是分隔符时,进入步骤S203,不是分隔符时,进入步骤S204;步骤S203,按顺序将分隔符保存在静态内存中;步骤S204,每输入一个字符,按照所述转移函数,生成对应的状态符;步骤S205,生成的状态符作为新状态符,替换保存在动态内存中的旧状态符;步骤S206,判别所述新状态符是否与接受状态符集合中的任何一个所述接受状态符一致,“不一致”时,返回步骤S201,输入下一个字符,“一致”时,对所述动态内存进行清零后进入步骤S207;步骤S207,将所述新状态符作为已识别单词的状态符保存在静态内存中;步骤S208,判别新状态符是否为结束状态符,是结束状态符时,结束流程,不是结束状态符,返回步骤S201。所述语法解析模块22包括以下步骤:步骤S301,按顺序读入所述状态符;步骤S302,判别状态符是否为结束状态符,是结束状态符时,进入步骤S303,不是结束状态符时,进入步骤S304;步骤S303,以状态符和分隔符组成的短语用于生成指令;步骤S304,基于所述状态符,判断前一单词是否为该单词所定义的可接收单词,“Yes”时,进入步骤S301,“No”时,进入步骤S305;步骤S305,判断语法错误,结束流程。根据本专利技术的一种实施方式,所述步骤S301中,监测所述静态内存,有状态符保存时,读入所述状态符。根据本专利技术的一种实施方式,所述步骤S303与S304之间还包括预处理步骤,判别所述状态符对应的是否为条件单词,如果是条件单词,对之前的状态符构成的短语进行预处理。本专利技术采用CARDSQL模块,在芯片内对SQL语句进行解析,用有限自动机识别SQL语句中的各个单词,将各个单词由16位整数保存的形式转为1位状态符保存的形式,大大节约了内存。在词法解析过程中,每生成一个新状态符,之前的状态符被释放,之后的状态符不断覆盖之前的状态符,单词的字符数再多,内存(动态内存)中始终只占用一个状态符的字节,节约了内存。附图说明图1对嵌入式芯片中数据库进行操作的结构示意图;图2是对嵌入式芯片中数据库进行操作的流程图;图3是SQL语句中单词的识别和状态转换说明图;图4是词法解析模块解析SQL语句的流程图;图5是语法解析模块解析SQL语句的流程图。具体实施方式下面结合附图对本专利技术的较佳实施例进行详细阐述,参考标号是指本专利技术中的组件、技术,以便本专利技术的优点和特征在适合的环境下实现能更易于被理解。下面的描述是对本专利技术权利要求的具体化,并且与权利要求相关的其它没有明确说明的具体实现也属于权利要求的范围。本实施方式中嵌入式芯片为安装在智能卡中,可与读卡器进行信息交互。嵌入式芯片包含中央处理器(CPU)、可编程只读存储器(EEPROM)、随机存储器(RAM)和固化在只读存储器(ROM)中的卡内操作系统COS(ChipOperatingSystem)。以下以安装有DB2.0的嵌入式芯片为例对本专利技术的实施方式进行说明。DB2.0的特点是可以进行分帧处理,即可以对单个字符进行处理。图1是对嵌入式芯片中数据库进行操作的结构示意图,如图1所示,嵌入式芯片1包含CARDSQL模块2和数据处理模块3,数据处理模块3采用DB2.0进行数据管理。计算机1通过中间件5与嵌入式芯片1连接。在对嵌入式芯片1中的数据库进行操作时,首先由计算机4编译生成操作芯片内数据库用的SQL语句,例如,selectf1,f2fromta,SQL语句通过中间件5传输到嵌入式芯片1。芯片1中的CARDSQL模块2对SQL语句进行词法和语法解析生成操作指令,数据处理模块3根据操作指令对数据模块(数据库)进行相应的操作。CARDSQL模块2中的词法解析模块21从左到右逐个地读入接收的SQL语句字符串,从字符串中识别出一个个具有独立意义的“单词”,并将其转化为一个状态符(token),用于下一步的语法分析,识别出来的单词逐个传递到语法解析模块22。语法解析模块22根据各个单词的属性判断语句的正确性,即,进行语法规范检查。例如select语句,正确形式为selectf1,f2fromta,若为selectfromf1,f2ta,则语法解析模块22判断SQL语句为错误形式,具体判断方法以下详细说明。预处理模块23用于某些SQL语句在正式执行之前的预处理,以便准备好数据(例如SELECT语句的WHERE条件部分)。以下通过流程图对CARDSQL模块2解析SQL语句的流程进行说明。图2是对嵌入式芯片中数据库进行操作的流程图。步骤S501,计算机4根据操作需要编辑SQL语句,例如编辑SELECTPersons.LastName,Persons本文档来自技高网
...

【技术保护点】
1.一种嵌入式芯片SQL语句解析方法,包括设置在嵌入式芯片中的词法解析模块(21)和语法解析模块(22),所述词法解析模块(21)用于识别SQL语句字符串中的单词,并将其转换成对应的状态符,所述语法解析模块(22)用于判断词法解析后的状态符组合是否符合语法规范,/n其特征在于:针对SQL语句中的单词,建立将输入字符转换成状态符的转移函数,接受状态符集合,各个所述接受状态符分别对应于不同的单词,/n所述词法解析模块(21)包括以下步骤:/n步骤1(S201),按照SQL语句的顺序逐个输入字符;/n步骤2(S202),判别是否是分隔符,是分隔符时,进入步骤3(S203),不是分隔符时,进入步骤4(S204);/n步骤3(S203),按顺序将分隔符保存在静态内存中;/n步骤4(S204),每输入一个字符,按照所述转移函数,生成对应的状态符;/n步骤5(S205),生成的状态符作为新状态符,替换保存在动态内存中的旧状态符;/n步骤6(S206),判别所述新状态符是否与接受状态符集合中的任何一个所述接受状态符一致,“不一致”时,返回步骤1(S201),输入下一个字符,“一致”时,对所述动态内存进行清零后进入步骤7(S207);/n步骤7(S207),将所述新状态符作为已识别单词的状态符保存在静态内存中;/n步骤8(S208),判别新状态符是否为结束状态符,是结束状态符时,结束流程,不是结束状态符,返回步骤1(S201);/n所述语法解析模块(22)包括以下步骤:/n步骤a(S301),按顺序逐个读入所述状态符;/n步骤b(S302),判别状态符是否为结束状态符,是结束状态符时,进入步骤c(S303),不是结束状态符时,进入步骤d(S304);/n步骤c(S303),以状态符和分隔符组成的短语用于生成指令;/n步骤d(S304),基于所述状态符,判断前一单词是否为该单词所定义的可接收单词,“Yes”时,进入步骤a(S301),“No”时,进入步骤e(S305);/n步骤e(S305),判断语法错误,结束流程。/n...

【技术特征摘要】
1.一种嵌入式芯片SQL语句解析方法,包括设置在嵌入式芯片中的词法解析模块(21)和语法解析模块(22),所述词法解析模块(21)用于识别SQL语句字符串中的单词,并将其转换成对应的状态符,所述语法解析模块(22)用于判断词法解析后的状态符组合是否符合语法规范,
其特征在于:针对SQL语句中的单词,建立将输入字符转换成状态符的转移函数,接受状态符集合,各个所述接受状态符分别对应于不同的单词,
所述词法解析模块(21)包括以下步骤:
步骤1(S201),按照SQL语句的顺序逐个输入字符;
步骤2(S202),判别是否是分隔符,是分隔符时,进入步骤3(S203),不是分隔符时,进入步骤4(S204);
步骤3(S203),按顺序将分隔符保存在静态内存中;
步骤4(S204),每输入一个字符,按照所述转移函数,生成对应的状态符;
步骤5(S205),生成的状态符作为新状态符,替换保存在动态内存中的旧状态符;
步骤6(S206),判别所述新状态符是否与接受状态符集合中的任何一个所述接受状态符一致,“不一致”时,返回步骤1(S201),输入下一个字符,“一致”时,对所述动态内存进行清零后进入步骤7(S207);
步骤7(S207)...

【专利技术属性】
技术研发人员:程兵兵
申请(专利权)人:北京握奇数据股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1