一种指令解析方法、装置及智能卡的制作方法

文档序号:6444941阅读:269来源:国知局
专利名称:一种指令解析方法、装置及智能卡的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种指令解析方法、装置及智能卡。
背景技术
随着科技的发展,集成电路antegrated Curcuit, IC)卡以其方便、快捷的优势得到越来越多人的青睐。尤其是在电信,金融,政府,交通等领域应用越来越广泛,发卡量逐年快速增长。为了适应人们的需求,卡片的容量也在不断增加,卡片内存储的数据越来越大, 对卡内数据库的应用的需求也不断增加。然而IC卡自身的特点决定了它内存小的局限性,虽然技术的不断发展使卡的容量不断增大,卡的内存也不断增大,但与大内存设备还是无法相比,使智能卡对大容量数据的使用有很大的局限性,同时也使其支持的功能有了很大的局限性。例如,一条操作命令多是由多帧组成,当卡内数据库系统对操作命令(例如SQL语句)进行卡内解析时,数据库系统要保存接收到的每一帧,直到接收到完整的一条操作命令,然后执行该操作命令所指示的操作。现有技术中一条完整的操作命令需要占用大量的内存空间,由此IC卡中操作命令的解析过程占用了大量的内存空间,进而使得其他程序由于没有足够的内存而无法运行,降低了 IC卡的工作效率。

发明内容
本发明实施例提供一种指令解析方法、装置及智能卡,用于解决现有技术中执行操作命令时需要大量的存储空间的问题。本发明实施例提供一种指令解析方法,所述方法包括接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl 个,kl 彡 1,kl < η ;解析所述kl个数据帧,并根据解析的内容执行相应的操作。本发明实施例提供一种指令解析装置,包含于智能卡中,所述指令解析装置包括接收单元,用于接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl个,kl ^ l,kl <n ;解析单元,用于解析所述kl个数据帧,并根据解析的内容执行相应的操作。本发明实施例还提供一种智能卡,包括上述本发明实施例提供的指令解析装置。可见,采用本发明实施例提供的方法,在接收到一条操作指令包含的一定数量的数据帧后,即对接收到的数据帧进行解析,并根据解析的内容执行相应的操作;可见,该方法在不需要接收到一条操作命令的全部数据帧的情况下,就可对接收到的内容执行相应操作,因此,该方法并不需要大量的存储空间存储接收到的操作命令,可大大节省存储空间。


图1为本发明实施例提供的一种指令解析方法的流程示意图;图2(1)为本发明实施例提供的调整后的表达式子树(1)的结构示意图;图2(2)为本发明实施例提供的调整后的表达式子树O)的结构示意图;图2(3)为本发明实施例提供的调整后的表达式子树(3)的结构示意图;图2(4)为本发明实施例提供的调整后的表达式子树的结构示意图;图2(5)为本发明实施例提供的调整后的表达式子树(5)的结构示意图;图2(6)为本发明实施例提供的调整后的表达式子树(6)的结构示意图;图2(7)为本发明实施例提供的调整后的表达式子树(7)的结构示意图;图2(8)为本发明实施例提供的调整后的表达式子树(8)的结构示意图;图3为本发明实施例提供的一种指令解析装置的结构示意图。
具体实施例方式本发明实施例提供一种指令解析方法,该方法在接收到一条操作指令包含的一定数量的数据帧后,即对接收到的数据帧进行解析,并根据解析的内容执行相应的操作;可见,该方法在不需要接收到一条操作命令的全部数据帧的情况下,就可对接收到的内容执行相应操作,因此,该方法并不需要大量的存储空间存储接收到的操作命令,可大大节省存储空间。如图1所示,该方法包括步骤11,接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl个,kl ^ l,kl < η;步骤12,解析所述kl个数据帧,并根据解析的内容执行相应的操作。一条操作命令包含η个数据帧,在接收到这η个数据帧中的一个或多个后,就开始解析并执行;即不用等到这η个数据帧都接收完全后再解析。进一步的,该方法还可以包括保存所述kl个数据帧中的关联数据;所述关联数据为解析所述kl个数据帧时,未解析出的数据;将所述关联数据与后续接收到的k2个数据帧结合后进行解析,并根据解析的内容执行相应的操作;所述k2个数据帧为组成所述一条操作命令的η个数据帧中的k2个,k2彡1,kl+k2彡η。其中,kl和k2可以相等,也可以不等。本发明实施例的应用背景可以是应用程序根据指令操作智能卡内的其他模块,应用程序可以位于卡内和卡外。本发明实施例中的操作命令可以是外部传输给智能卡的APDU 指令,也可以是智能卡内部传输的操作命令。本发明实施例例如可以解析自定义格式数据、 电子钱包应用中密钥指令数据、应用程序调用卡内的数据库系统的操作数据等等。自定义格式数据如自定义操作卡内数据库的语句,创建表语句、自定义访问控制语句等;调用卡内的数据库系统的操作数据例如SQL语句。下面以对SQL语句进行解析为例进行说明。实施例本发明实施例提供一种指令解析方法,智能卡以帧(数据帧)为单位接收由SQL 语言编写的操作命令,即将一条操作命令分成多帧接收,每帧为一个数据帧。SQL语句操作卡内的数据库系统,SQL语句由PC端传入卡内,卡内的数据解析模块对语句实时解析,采用分段式的处理方式,对每一帧进行缓存并实时解析,并将解析后生成的数据传到卡内的其他功能模块进行相应的处理;对于一帧指令的尾端的关联数据(未能解析的数据),将关联数据缓存,等待与下一帧传来的数据重新组合在一起后进行解析; 其中缓存每一帧数据和关联数据的缓存空间nl的大小由实际情况而定。例如一帧APDU 指令的长度为256字节,字段名的长度、每个词的长度的最大值为16字节,所以nl的值可以为272个字节;即用nl字节的空间可以缓存上一帧的关联数据和当前帧的数据,这样对于由多帧数据组成的APDU指令可以只需272个字节即可完成整个解析过程。例如插入 Ig--Bj insert into tab values ( "wang_ming" )," insert"
则“insert”是关联数据,缓存“ins”,等待下一帧数据来到后解析出“insert” ;解析到表名“tab”时,先用缓存表名“tab”,然后传入数据处理模块做表名查找等处理,同样解析到插入的记录值时,先缓存记录如“wang”,然后传入数据处理模块进行插入操作,当插入数据量大,如二进制数据,一帧数据传入的全部为记录数据时,则可以先用η = 256个字节空间缓存记录,传入卡内的数据处理模块处理。具体的,本发明实施例中,针对一个数据帧中的第一个分隔符之前的内容,以及相邻两个分隔符之间的内容,以及最后一个分隔符之后的内容,如果可以解析,则解析并执行,如果无法解析,则为关联数据,缓存该关联数据与后续的数据帧合并后解析。下面举例说明关联数据如SQL 语句“select SNO, SNAME, from tab where fl = "wang^and f2+f3 < (f4+f5) *5”,当一帧数据的结尾为“SNO,SNAME”时,由于没有表名信息”tab”,不能直接传到数据处理模块进行操作,所以需要将“SN0,SNAME”临时缓存。“SN0, SNAME"即为关联数据的一种。本实施例可以采用压缩存储的方法为每一个字段名设定字段标识,如SNO的标识为0,SNAME的标识为1,缓存时只存储字段的标识而不缓存字段的名字,从而节省了存储空间。字段标识是整个系统实现中的全局标识,可通过查表获得标识对应的内容,或者预先配置标识对应的内容。下面举例说明判断关联数据和解析每一帧数据的具体过程可以在该智能卡中预先使用SQL语言创建与该智能卡相关的多张表;并根据该智能卡中的内容创建对照表和对应关系表;该对照表中可以包括表名、与表名对应的表标识、字段名、与字段名对应的字段标识、指令关键字、指令关键字对应的指令关标识、条件关键字、与条件关键字对应的条件标识;对应关系表中包括表名、字段名、指令关标识、条件关键字;其中指令关键字为构成SQL语言结构中的、且具有代表相关操作意义的关键字,例如,insert into、delete、 seclect等;其中insert into代表需要进行插入操作;delete代表需要进行删除操作; seclect代表需要进行选择操作;其中条件关键字为where或者if,用于限制执行条件;其中字段名为表中的相关信息,例如wangming等。可以根据数据帧中的分隔符来确定指令关键字,相邻的两个分隔符之间的内容为一个指令关键字;在根据分隔符确定出指令关键字后,可以判断将该指令关键字是否与对照表中的指令关键字匹配,如果匹配,则保存该指令关键字;如果不匹配,则不保存。若在一帧的最后没有包括一个完整的指令关键字,则将不完整的字符缓存,等待与下一阵数据一并解析。例如,一个数据帧的结尾为“ ins”,该“ ins”之后不包含符号(分隔符),则将“ ins” 缓存,接收下一个数据帧后,在“ert”之后可以检测到分隔符,此时将“ ins”与“ert”合并为指令关键字“insert”。其中,此处的“ins”即为关联数据的一种。
进一步的,为了更好的节约存储空间,在缓存指令关键字、表名、字段名时,可根据对应关系表,分别确定出指令关键字、表名和字段名的标识,并将对应的标识保存到缓存中。即缓存时只缓存标识,而不缓存实际的数据,由此可以更好的节约存储空间。下面介绍本发明实施例中提供的分段解析条件表达式的方法。本发明实施例可以在分段解析指令的基础上对条件表达式逻辑上的进一步解析采用构建表达式树的方式,动态构建具有优先级的表达式树。首先为每一个符号设定一个权值,设定的依据是运算符优先级的大小,优先级越高设定的权值越小,如“ + ”的权值是 al,“< ”的权值是a2,“ = ”的权值是a3等等依次类推,al < a2 < a3。当遇到括号时,括号内的运算符优先级增加。为了方便介绍,本实施例中设置条件表达式中各符号的优先级从大到小的顺序与C语言中运算符的优先级顺序相同,当遇到括号时,括号并不被加入到结构树中,仅用来增加括号内的运算符的优先级,及括号内运算符的优先级高于括号外运算符的优先级。通过以下方法解析条件表达式接收到第一段条件表达式al后,根据所述第一段条件表达式al中各个结点的优先级,构建表达式子树Rl ;所述第一段条件表达式al包括至少两个节点;接收到下一段表达式a2后,将所述表达式a2中的各个结点按照接收的先后顺序, 依次添加到所述表达式子树Rl中,得到表达式子树R2 ;重复执行,直至接收到最后一段表达式am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I 中,得到表达树Rm ;条件表达式包括m段。具体的,在将表达式a2中的各个结点按照接收的先后顺序,依次添加到表达式子树Rl的过程中,根据表达式子树Rl和表达式a2中各个结点的优先级,动态调整表达式子树R1,最终生成表达式子树R2 ;具体可以包括根据表达式a2中第1个结点的优先级,将所述第1个结点添加到表达式子树Rl 中,调整表达式子树Rl,得到表达式子树Rll ;根据表达式a2中第2个结点的优先级,将所述第2个结点添加到表达式子树Rll 中,调整表达式子树Rl 1,得到表达式子树R12 ;重复执行,直至根据表达式a2中第s个结点的优先级,将所述第s个结点添加到表达式子树Rls-I中,得到表达式子树R2 ;其中,所述表达式a2包括s个节点。其它的将后续接收到的表达式中的各个结点按照接收的先后顺序,依次添加到之前表达式子树中,形成新的表达式子树的过程,参见上述形成表达式子树R2的过程,在此不再赘述。其中,根据条件表达式al中各个结点(共K个结点)的优先级构建表达式子树Rl 的过程例如可以为(1)根据表达式al中各个结点的接收顺序,将前M(M大于或等于2)个结点按照优先级,构建表达式子树M1,然后根据第M+1个结点的优先级,将第M+1个结点添加到表达式子树Ml中(其中,根据第M+1个结点与表达式子树Ml的结点中的优先级,调整表达式子树 Ml),得到表达式子树M2 ;(2)根据第M+2个结点的优先级,将第M+2个结点添加到表达式子树M2中(其中, 根据第M+2个结点与表达式子树M2的结点中的优先级,调整表达式子树M2),得到表达式子树M3 ;(η)依次类推;根据第K个结点的优先级,将第K个结点添加到表达式子树Mk-I中 (其中,根据第K个结点与表达式子树Mk-I的结点中的优先级,调整表达式子树Mk-I),得到表达式子树Mk (即表达式子树Rl)。下面以 select SNO, SNAME, from tab where fl ="wang"and f2+f3 < (f4+f5) 为例进行说明。where子句中的每一个单词都是表达式树中的一个结点,运算符为父结点, 运算符连接的变量为孩子结点,按照子句的输入顺序先构建每一棵表达式子树,构建中后输入的运算符影响到前面子树,将之前生成的表达式子树做相应的调整,直至最后整棵树生成完成。条件关键字where之后依次接收到的指令字段分别为f 1_,= _“,Wang”_,and, _f2, _+_, f3_, < (f4_+,_f5, )_*,_5,如图 2 中的(1)至(8)所示,过程如下接收第一指令字段“Π_”、第二指令字段“ =_”和第三指令字段“wang”,解析这三段指令字段形成表达式子树,此时“H”为左孩子结点,“=”为父结点(根节点),“Wang” 为右孩子结点,参见图2(1);接收到指令字段“AND”后,调整表达式子树,“=”调整为左孩子结点,“AND”为“=” 的父结点;参见图2(2);接收到指令字段“ f2 ”后,调整表达式子树,"AND”为“=”和“ f2 ”的父结点,“ f2 ” 为右孩子结点;参见图2(3);接收到指令字段“ + ”和“f3”后,调整表达式子树,“AND”为“=”和“ + ”的父结点, “ + ”为“f2”和“f3”的父节点;参见图2(4);接收到指令字段“<”后,调整后的表达式子树参见图2(5);接收到指令字段“(f4”后,调整后的表达式子树参见图2(6);接收到指令字段“ + ”和“f5”后,调整后的表达式子树参见图2(7);接收到指令字段“)”、“*”和“5”后,调整后的表达式树参见图2(8)。较佳的,本发明实施例提供以结构树的方式存储表达式,可大大的节省存储空间, 例如,使用堆栈的方式存储进行存储时,必须预先设置出足够大的存储空间,即预先设置的存储空间应大于表达式实际所需的存储空间;而使用结构树在接收到数据帧的同时,只需给表达式划分出实际所需的存储空间即可。如图3所示,本发明实施例提供一种指令解析装置,包含于智能卡中,所述装置包括接收单元31,用于接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl个,kl ^ l,kl <n ;解析单元32,用于解析所述kl个数据帧,并根据解析的内容执行相应的操作。所述装置还包括保存单元33,用于保存所述kl个数据帧中的关联数据;所述关联数据为解析所述kl个数据帧时,未解析出的数据;操作单元34,用于将所述关联数据与后续接收到的k2个数据帧结合后进行解析, 并根据解析的内容执行相应的操作;所述k2个数据帧为组成所述一条操作命令的η个数据帧中的k2个,k2彡1,kl+k2彡η。所述装置还包括用于解析条件表达式的执行单元35 ;所述执行单元35包括
第一子单元36,用于接收到第一段条件表达式al后,根据所述第一段条件表达式 al中各个结点的优先级,构建表达式子树Rl ;所述第一段条件表达式al包括至少两个节点。第二子单元37,用于接收到下一段表达式a2后,将所述表达式a2中的各个结点按照接收的先后顺序,依次添加到所述表达式子树Rl中,得到表达式子树R2 ;重复执行,直至接收到最后一段表达式am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I中,得到表达树Rm ;条件表达式包括m段。所述第二子单元37具体用于接收到下一段表达式a2后,根据表达式a2中第1个结点的优先级,将所述第1个结点添加到表达式子树Rl中,调整表达式子树R1,得到表达式子树Rll ;根据表达式a2中第2个结点的优先级,将所述第2个结点添加到表达式子树Rl 1中,调整表达式子树Rl 1,得到表达式子树R12 ;重复执行,直至根据表达式a2中第s个结点的优先级,将所述第s个结点添加到表达式子树Rls-I中,得到表达式子树R2 ;其中,所述表达式a2包括s个节点;重复执行,直至接收到最后一段表达式am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I中,得到表达树Rm ;条件表达式包括m段。本实施例中各个单元的工作原理和工作流程参见上述方法实施例中的描述,在此不再赘述。本发明实施例提供一种智能卡,该智能卡中包括上述指令解析装置。综上所述,有益效果采用本发明实施例提供的方法,在接收到一定数量的数据帧后,即可对接收到的数据帧进行解析,并根据解析的内容执行相应的操作;可见,该方法在不需要接收到全部操作命令的情况下,就可对接收到的内容执行相应操作,因此,该方法并不需要大量的存储空间存储接收到的操作命令,可大大节省存储空间。较佳的,本发明实施例提供以结构树的方式存储表达式,可大大的节省存储空间, 例如,使用堆栈的方式存储进行存储时,必须预先设置出足够大的存储空间,即预先设置的存储空间应大于表达式实际所需的存储空间;而使用结构树在接收到数据帧的同时,只需给表达式划分出实际所需的存储空间即可。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种指令解析方法,应用于智能卡内,其特征在于,所述方法包括接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl个, kl 彡 1,kl < η ;解析所述kl个数据帧,并根据解析的内容执行相应的操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括保存所述kl个数据帧中的关联数据;所述关联数据为解析所述kl个数据帧时,未解析出的数据;将所述关联数据与后续接收到的k2个数据帧结合后进行解析,并根据解析的内容执行相应的操作;所述k2个数据帧为组成所述一条操作命令的η个数据帧中的k2个,k2>l, kl+k2 彡 η。
3.根据权利要求2所述的方法,其特征在于kl= k2。
4.根据权利要求1-3任一所述的方法,其特征在于,还包括通过以下方法解析条件表达式接收到第一段条件表达式al后,根据所述第一段条件表达式al中各个结点的优先级, 构建表达式子树Rl ;所述第一段条件表达式al包括至少两个节点;接收到下一段表达式a2后,将所述表达式a2中的各个结点按照接收的先后顺序,依次添加到所述表达式子树Rl中,得到表达式子树R2 ;重复执行,直至接收到最后一段表达式 am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I中,得到表达树Rm ;条件表达式包括m段。
5.根据权利要求4所述的方法,其特征在于,所述将所述表达式a2中的各个结点按照接收的先后顺序,依次添加到所述表达式子树Rl中,得到表达式子树R2,包括根据表达式a2中第1个结点的优先级,将所述第1个结点添加到表达式子树Rl中,调整表达式子树Rl,得到表达式子树Rll ;根据表达式a2中第2个结点的优先级,将所述第2个结点添加到表达式子树Rll中, 调整表达式子树R11,得到表达式子树R12 ;重复执行,直至根据表达式a2中第s个结点的优先级,将所述第s个结点添加到表达式子树Rls-I中,得到表达式子树R2 ;其中,所述表达式a2包括s个节点。
6.一种指令解析装置,包含于智能卡中,其特征在于,所述装置包括接收单元,用于接收kl个数据帧,所述kl个数据帧为组成一条操作命令的η个数据帧中的kl个,kl彡1,kl < η ;解析单元,用于解析所述kl个数据帧,并根据解析的内容执行相应的操作。
7.如权利要求6所述的装置,其特征在于,所述装置还包括保存单元,用于保存所述kl个数据帧中的关联数据;所述关联数据为解析所述kl个数据帧时,未解析出的数据;操作单元,用于将所述关联数据与后续接收到的k2个数据帧结合后进行解析,并根据解析的内容执行相应的操作;所述k2个数据帧为组成所述一条操作命令的η个数据帧中的 k2 个,k2 彡 1,kl+k2 ^ η。
8.如权利要求6或7所述的装置,其特征在于,所述装置还包括用于解析条件表达式的执行单元;所述执行单元包括第一子单元,用于接收到第一段条件表达式al后,根据所述第一段条件表达式al中各个结点的优先级,构建表达式子树Rl ;所述第一段条件表达式al包括至少两个节点;第二子单元,用于接收到下一段表达式a2后,将所述表达式a2中的各个结点按照接收的先后顺序,依次添加到所述表达式子树Rl中,得到表达式子树R2 ;重复执行,直至接收到最后一段表达式am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I中,得到表达树Rm;条件表达式包括m段。
9.如权利求8所述的装置,其特征在于,所述第二子单元具体用于接收到下一段表达式a2后,根据表达式a2中第1个结点的优先级,将所述第1个结点添加到表达式子树Rl中,调整表达式子树R1,得到表达式子树Rll ;根据表达式a2中第2 个结点的优先级,将所述第2个结点添加到表达式子树Rl 1中,调整表达式子树Rl 1,得到表达式子树R12 ;重复执行,直至根据表达式a2中第s个结点的优先级,将所述第s个结点添加到表达式子树Rls-I中,得到表达式子树R2;其中,所述表达式a2包括s个节点;重复执行,直至接收到最后一段表达式am后,将表达式am中的各个结点按照接收的先后顺序,依次添加到表达式子树Rm-I中,得到表达树Rm ;条件表达式包括m段。
10.一种智能卡,其特征在于,包括如权利要求6-9任一所述的指令解析装置。
全文摘要
本发明涉及通信技术领域,尤其涉及一种指令解析方法、装置及智能卡,用于解决现有技术中执行操作命令时需要大量的存储空间的问题。该方法包括接收k1个数据帧,所述k1个数据帧为组成一条操作命令的n个数据帧中的k1个,k1≥1,k1<n;解析所述k1个数据帧,并根据解析的内容执行相应的操作。可见,该方法可节省存储空间。
文档编号G06F9/30GK102566971SQ201110460438
公开日2012年7月11日 申请日期2011年12月31日 优先权日2011年12月31日
发明者王亚秀, 郭雁斌 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1