一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于将数据文件迁移到目标数据库的方法、设备和介质与流程

2023-02-02 01:48:45 来源:中国专利 TAG:


1.本公开的实施例总体涉及数据迁移领域,并且更具体地涉及一种用于将数据文件迁移到目标数据库的方法、设备和介质。


背景技术:

2.在金融领域,出于数据安全性的原因,经常需要将数据文件从一个数据库迁移到另一个不同的数据库。在数据文件迁移时,如果该数据文件的任何记录中包括与分隔符存在编码上冲突的字符,则会导致该字符的误识别,进而导致迁移过程的中断,使得该数据文件无法被正常迁移到目标数据库中。目前,通常采用鸵鸟策略来避免这样问题的发生。具体地,通常会采用具有较低使用概率的编码的字符或者例如隐藏符(例如,ascii 001)之类的特殊字符作为分隔符来对记录中的字段进行分隔。但是,一方面,这样的字符通常输入起来较为困难,并且处理起来也更为麻烦;另一方面,由于目前需要迁移的数据文件通常都是gb或tb或更高量级的大数据文件,因此在迁移的过程,即使使用这样的字符作为分隔符,还是存在较大的概率会在待迁移的数据文件中发现与这样的分隔符的编码存在冲突的字符,进而导致迁移过程的失败。


技术实现要素:

3.针对上述问题,本公开提供了一种用于将数据文件迁移到目标数据库的方法、设备和介质,使得能够以统一的方式将各种不同输出格式的数据文件,尤其是大数据文件,正常迁移到目标数据库中,而不会由于存在冲突字符而导致迁移的中断。
4.根据本公开的第一方面,提供了一种将数据文件迁移到目标数据库的方法,包括:按顺序读入来自源数据库的数据文件的多个记录,每一记录包括通过分隔符分隔的多个字段;对所读入的每一记录进行冲突字符检测,以便对存在冲突字符的记录进行处理,冲突字符指示与所述分隔符存在冲突的字符;获取相关联的输出格式转换表达式,以基于所述输出格式转换表达式,将经冲突字符检测后的每一记录从与所述源数据库相关联的第一输出格式转换为与目标数据库相关联的第二输出格式;以及将最终得到的结果数据文件导入到所述目标数据库中。
5.根据本公开的第二方面,提供了一种计算设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开的第一方面的方法。
6.在本公开的第三方面中,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中所述计算机指令用于使计算机执行本公开的第一方面的方法。
7.在一些实施例中,所述数据文件当前使用的字符编码格式为第一字符编码格式,并且按顺序读入来自源数据库的数据文件的多个记录包括:以字节流的方式以第二字符编码格式按顺序读入所述多个记录,所述第二字符编码格式为用于执行所述数据文件的迁移
的操作系统所使用的字符编码格式。
8.在一些实施例中,对所读入的每一记录进行冲突字符检测包括:以所述第二字符编码格式读入的相应记录所包括的每一字段进行逐字符分析,以确定相应字段中以所述第二字符编码格式编码得到的多个第一字符中的每一第一字符的第一字节编码;确定所述第一字节编码与所述分隔符的以所述第二字符编码格式编码得到的第二字节编码是否相同;响应于确定所述第一字节编码与所述第二字节编码相同,确定所述第一字节编码属于所述相应记录的以第一字符编码格式编码得到的哪个第二字符;如果所确定的第二字符不是所述分隔符,则将所述多个第一字符中与所确定的第二字符相关联的一个或多个第一字符确定为冲突字符。
9.在一些实施例中,所述第一字符编码方式与所述第二字符编码方式相同或不同,并且所述第一字符编码格式为gbk编码格式、gb2312编码格式、utf-8编码格式、utf-16编码格式或iso-8859-1编码格式。
10.在一些实施例中,对存在冲突字符的记录进行处理包括:从相应记录中删除检测到的冲突字符,或者用所述目标数据库支持的指定字符标识出相应记录中的所有字段。
11.在一些实施例中,基于所述输出格式转换表达式,将经冲突字符检测后的每一记录从与所述源数据库相关联的第一输出格式转换为与目标数据库相关联的第二输出格式包括:为所述输出格式转换表达式构建词法库,所述词法库包括关于所述输出格式转换表达式中包括的不同类型的操作数和操作符的多个识别规则以及关于所述输出格式转换表达式中包括的不同类型的操作符的优先级;根据所述多个识别规则,对所述输出格式转换表达式进行词法分析,以便为所述输出格式转换表达式生成相应的单词列表;对所生成的单词列表进行语法分析,以为所述输出格式转换表达式构建语法树;根据所述语法树,为相应记录生成具有所述第二输出格式的输出结果。
12.在一些实施例中,根据所述多个识别规则,对所述输出格式转换表达式进行词法分析,以便为所述输出格式转换表达式生成相应的单词列表包括:创建空白的单词列表;根据所述多个识别规则,识别所述输出格式转换表达式中包括的第一单词,以将所识别的第一单词插入所述单词列表中;根据所述多个识别规则,逐个地识别所述输出格式转换表达式中包括的后续单词,并将所识别的后续单词插入所述单词列表中。
13.在一些实施例中个,根据所述多个识别规则,识别所述输出格式转换表达式中包括的第一单词包括:读取所述输出格式转换表达式中的第一字符;确定所述第一字符满足所述多个识别规则中的哪一识别规则;读取所述输出格式转换表达式中紧接在所述第一字符之后的第二字符;如果所述第二字符不符合所确定的识别规则,则将所述第一字符识别为所述第一单词。
14.在一些实施例中,根据所述多个识别规则,识别所述输出格式转换表达式中包括的第一单词还包括:如果所述第二字符符合所确定的识别规则,则读取紧接在所述第二字符之后的后续字符,直到所读取的字符不符合所确定的识别规则为止;将由所读取的符合所确定的识别规则的所有字符按序组成的单词标识为所述第一单词,并将所述第一单词插入所述单词列表中。
15.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
16.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
17.图1示出了用于实现根据本发明的实施例的用于将数据文件迁移到目标数据库的方法的系统100的示意图。
18.图2示出了根据本公开的实施例的用于将数据文件迁移到目标数据库的方法200的流程图。
19.图3示出了根据本公开的实施例的用于对所读入的每一记录进行冲突字符检测方法300的流程图。
20.图4示出了根据本公开的实施例的用于将记录从第一输出格式转换为第二输出格式的方法400的流程图。
21.图5示出了根据本公开的实施例的电子设备500的框图。
具体实施方式
22.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
23.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
24.如上所述,在数据文件迁移时,如果该数据文件的任何记录中包括与分隔符存在编码上冲突的字符,则会导致该字符的误识别,进而导致迁移过程的中断,使得该数据文件无法被正常迁移到目标数据库中。目前,通常采用鸵鸟策略来避免这样问题的发生。具体地,通常会将具有较低使用概率的编码的字符或者例如隐藏符之类的特殊字符用作分隔符来对记录中的字段(又称为域)进行分隔。但是,一方面,这样的字符通常输入起来较为困难,并且处理起来也更为麻烦;另一方面,由于目前需要迁移的数据文件通常都是gb或tb或更高量级的大数据文件,因此在迁移的过程,即使使用这样的字符作为分隔符,还是存在较大的概率会在待迁移的数据文件中发现与这样的分隔符的编码存在冲突的字符,进而导致迁移过程的失败。
25.另外,由于需要迁移到某个目标数据库的各个数据文件可来自各种不同的数据源,其输出格式不同,而且大小各不相同,因此对于来自不同数据源的数据文件需要进行不同的数据格式处理和加工后才能最终转移到目标数据库中。目前,尚不存在以统一的方式将各种不同输出格式的数据文件迁移到目标数据库中的方法,而需要对于不同数据源的不同数据文件分别编写相应的程序来进行转移。
26.为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种将数据文件迁移到目标数据库的方法,包括:按顺序读入来自源数据
库的数据文件的多个记录,每一记录包括通过分隔符分隔的多个字段;对所读入的每一记录进行冲突字符检测,以便对存在冲突字符的记录进行处理,冲突字符指示与所述分隔符存在冲突的字符;获取相关联的输出格式转换表达式,以基于所述输出格式转换表达式,将经冲突字符检测后的每一记录从与所述源数据库相关联的第一输出格式转换为与目标数据库相关联的第二输出格式;以及将最终得到的结果数据文件导入到所述目标数据库中。以此方式,使得能够以统一的方式将各种不同输出格式的数据文件,尤其是大数据文件,正常迁移到目标数据库中,而不会由于存在冲突字符而导致迁移的中断。
27.图1示出了用于实现根据本发明的实施例的用于将数据文件迁移到目标数据库的方法的系统100的示意图。如图1所示,系统100可例如包括计算设备110、多个用户终端120-1、120-m至120-n以及网络130。计算设备110可以通过网络130与多个用户终端120-1、120-m至120-n进行数据交互。用户终端120-1至120-n可例如包括但不限于用户的移动终端、平板设备、个人计算机、膝上型计算机、台式计算机等,其可用于向计算设备110发出对包括将数据文件从源数据库140转移到目标数据库150的操作请求。在本公开中,用户终端可以是计算设备110的一部分或者可以独立于计算设备110。源数据库140和目标数据库150可通过网络与计算设备110耦接,或者直接与计算设备110连接,或者也可以是计算设备110的一部分(例如,存储在计算设备110的一个或多个存储设备上的不同数据库)。
28.计算设备110可在接收到该操作请求之后,可用于实现将数据文件从源数据库140迁移到目标数据库150。虽然在图1中,仅示出了系统100仅包括一个源数据库140,但在系统100可包括多个不同的源数据库140,以将来自这些不同源数据库140的数据文件迁移到目标数据库150中。当然,应了解,系统100也可包括多个目标数据库。在实际使用中,源数据库和目标数据库是相对而言的,这主要取决于是要将哪个数据库中的数据文件迁移到哪个数据库中,数据文件的迁移来源称为源数据库,数据文件迁移的目的地称为目标数据库。在一些实施例中,计算设备110可以包括至少一个处理器以及与该至少一个处理器耦合的至少一个存储器,该存储器中存储有可由该至少一个处理器执行的指令,其在被该至少一个处理器执行时执行如下所述的用于将数据文件迁移到目标数据库的方法200。
29.图2示出了根据本公开的实施例的用于将数据文件迁移到目标数据库的方法200的流程图。方法200可由如图1所示的计算设备110执行,也可以在图5所示的电子设备500处执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
30.在步骤202,按顺序读入来自源数据库的数据文件的多个记录,每一记录包括通过分隔符分隔的多个字段。
31.源数据库可以是例如前面在图1中提到的源数据库140。
32.在本公开中,数据文件指的是具有多行数据记录的文件,每一行数据记录都可被称为一个记录。在这样的数据文件中,每一记录都包括通过分隔符隔开的多个字段,并且每一字段都与一个属性相关联,例如姓名、身份证号码、银行卡号、最近取款日期、取款金额等等,具体的属性取决于数据文件需要涉及的内容。
33.由于后面会对冲突字符进行检测和处理,因此在本公开中,用于分隔记录中的各个字段的分隔符可以选用任何字符,而不一定需要选用具有较低使用概率的编码的字符或者例如隐藏符之类的特殊字符。在本公开的一些实施例中,出于便于输入和处理的考虑,可
使用一些常用的字符作为分隔符,例如但不限于使用空格符或符号“|”等来作为分隔符。
34.在本公开中,待迁移的数据文件当前使用的字符编码格式可以为第一字符编码格式,并且用于执行该数据文件的迁移的操作系统所使用的字符编码格式可以为第二字符编码格式,第一字符编码方式可与第二字符编码方式相同或不同。由于数据文件需要由操作系统读入来进行相应的处理,因此按顺序读入来自源数据库的数据文件的多个记录实际上指的是以第二字符编码格式按顺序读入数据文件的多个记录。在一些实施例中,可以以字节流的方式(例如,采用apache common io流技术)以第二字符编码格式按顺序读入数据文件的多个记录。通过以字节流的方式读入这些记录,可以有效地提高读写数据文件的速度,并且内存占用率较少,进而有效避免了无法打开大数据文件以及内存卡顿和容易溢出的问题。
35.如上所述,第一字符编码方式可与第二字符编码方式相同或不同,因此第二字符编码方式可以为例如iso-8859-1编码格式,这时第一字符编码方式也可以为iso-8859-1编码格式,或者可以是其他编码格式,例如为gbk编码格式、gb2312编码格式、utf-8编码格式、或utf-16编码格式。
36.假设在一个示例中,第一字符编码格式为gbk,第二字符编码格式为iso-8859-1。应了解,gbk使用双子节编码方式,需要使用2位字节编码来编码一个字符,而iso-8859-1编码格式使用单字节编码方式,使用1位字节编码来编码一个字符。因此,对于例如数据文件中包括的“倈”,gbk编码格式会将其编码成一个字符“82,7c”,而iso-8859-1编码格式则会将其编码成两个字符,这两个字符分别为“82”和“7c”。另外,如果分隔符为“|”,则gbk编码格式会将该分隔符编码成一个字符“007c”,而iso-8859-1编码格式则会将该分隔符编码成一个字符“7c”。
37.在步骤204,对所读入的每一记录进行冲突字符检测,以便对存在冲突字符的记录进行处理。
38.在本公开中,冲突字符指示与分隔符存在冲突的字符,这种冲突指的是两者在编码上的冲突。
39.例如,根据前面的示例可以看出,“倈”以iso-8859-1编码格式编码所得到的两个字符“82”和“7c”与分隔符以iso-8859-1编码格式编码所得到的字符之间是存在冲突的,因为“倈”的以iso-8859-1编码格式编码所得到的两个字符“82”和“7c”中的一个字符“7c”与分隔符以iso-8859-1编码格式编码所得到的字符“7c”是相同的。因此如果不对这种冲突进行处理,则会造成操作系统对“倈”进行误识别,从而导致在对相应的记录输入目标数据库时出现处理错误,进而导致无法实现相应数据文件的正常入库。然而,在本公开中,通过对每一记录进行冲突字符检测,并对存在冲突字符的记录进行处理可有效地避免数据文件无法正常入库的问题。
40.在本公开中,对存在冲突字符的记录进行处理可包括但不限于从相应记录中删除检测到的冲突字符,或者用目标数据库支持的指定字符(例如,用引号之类的括起符)标识出检测到冲突字符的相应记录中的所有字段等,具体的处理可根据实际使用的需要进行选择。
41.下面将结合图3对针对每一记录的冲突字符检测作进一步更详细的描述。
42.在步骤206,获取相关联的输出格式转换表达式,以基于输出格式转换表达式,将
经冲突字符检测后的每一记录从与源数据库相关联的第一输出格式转换为与目标数据库相关联的第二输出格式。
43.在本公开中,输出格式转换表达式用于指示如何基于与源数据库相关联的第一输出格式来得到与目标数据库相关联的第二输出格式。
44.在一些实施例中,为了实现以统一的方式将各种不同输出格式的数据文件正常迁移到目标数据库中,可以预先构建多个从某个源数据库的记录的输出格式到相应的目标数据库的记录的输出格式的输出格式转换表达式,并将各个输出格式转换表达式与相关的源数据库的标识和目标数据库的标识相关联地存储在一个表格中。这样,当需要进行数据文件迁移时,就可以直接通过查询表格的方式来获取相关联的输出格式转换表达式来进行转换了。
45.为了清楚请见,以下给出了输出格式转换表达式的一个示例:$0||’|’||substr($1,2,4)||’|’||length($3)||’|’||-(($5 100)/2)||’|’,在该表达式中,$0表示待迁移的数据文件的当前记录中的所有字段,||表示连接符(即将在该符号两边的内容连接起来),|表示间隔符,$n表示当前记录中的第n个字段,其中n为任意整数。
46.当然,可根据实际使用的需要,在进行步骤206的输出格式转换之前,可对每一记录再进行一些其他的处理,例如对敏感字段的数据进行一些加密操作等。。
47.下面将结合图4对用于基于相关联的输出格式转换表达式将记录从与源数据库相关联的第一输出格式转换为与目标数据库相关联的第二输出格式的方法400作进一步更详细的描述。
48.在步骤208,将最终得到的结果数据文件导入到目标数据库中。
49.在完成了对数据文件中的所有记录的格式转换之后,就可将最终得到的结果数据文件导入到目标数据库中进行保存了。
50.图3示出了根据本公开的实施例的用于对所读入的每一记录进行冲突字符检测方法300的流程图。方法300可由如图1所示的计算设备110执行,也可以在图5所示的电子设备500处执行。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
51.在步骤302,对以第二字符编码格式读入的相应记录所包括的每一字段进行逐字符分析,以确定相应字段的以第二字符编码格式编码得到的多个第一字符中的每一第一字符的第一字节编码。
52.在步骤304,确定第一字节编码(即步骤302中确定的任何一个第一字节编码)与分隔符的以第二字符编码格式编码得到的第二字节编码是否相同。
53.假设当前使用的第二字符编码格式为iso-8859-1,数据文件所使用的第一字符编码格式为gbk,并且数据文件中使用的分隔符为“|”,因此在分析数据文件中的“倈”以第二编码格式编码所得到的两个第一字符“82”和“7c”中的第一字符“7c”时,可确定该第一字符的第一字节编码“7c”与分隔符“|”以该第二编码格式编码所得到的第二字节编码“7c”相同。
54.在步骤306,响应于确定第一字节编码(即步骤304中的第一字节编码)与第二字节编码(分隔符的以第二字符编码格式编码得到的第二字节编码)相同,则确定该第一字节编码属于相应记录的以第一字符编码格式编码得到的多个第二字符中的哪个第二字符。
55.在本公开中,为了进行区分,将以第二字符编码格式编码得到各个字符称为第一字符,并将以第一字符编码格式得到的各个字符称为第二字符。
56.继续前面的示例,由于“倈”中的以第二编码格式编码所得到的第一字符“7c”的第一字节编码与分隔符“|”以该第二编码格式编码所得到的第二字节编码“7c”相同,因此需要确定该与分隔符的编码重复的第一字符“7c”属于相应记录的以第一字符编码格式编码得到的哪个第二字符。在该示例中,“7c”属于该记录的以第一字符编码格式编码得到的第二字符“82,7c”,即属于字符“倈”,而非属于分隔符本身。
57.在步骤308,如果所确定的第二字符(即在步骤306中确定的以第一字符编码格式编码的字符)不是分隔符,则将多个第一字符(即步骤302中以第二字符编码格式读入的相应记录所包括的相应字段的多个第一字符)中与所确定的第二字符相关联的一个或多个第一字符确定为冲突字符。
58.继续前面的示例,由于“倈”的以第一字符编码格式编码得到的第二字符“82,7c”与步骤302中以第二字符编码格式读入的两个连续的第一字符“82”和“7c”相关联,则可将这两个连续的第一字符“82”和“7c”确定为是冲突字符。
59.通过采用上述手段,本公开能够在数据文件的迁移过程中为数据文件中的每一个记录检测冲突字符,以便能够及时对存在冲突字符的记录进行处理,进而能够有效地防止由于存在冲突字符而导致数据文件迁移过程的中断。而且,通过采用这种手段,使得在本公开中,可以采用任何字符来作为分隔字符,而无需使用类似隐藏符之类的特殊字符来作为分隔字符,从而使得数据文件中各个记录的输入和处理更为简单和方便。
60.图4示出了根据本公开的实施例的用于将记录从第一输出格式转换为第二输出格式的方法400的流程图。方法400可由如图1所示的计算设备110执行,也可以在图5所示的电子设备500处执行。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
61.在本公开中,方法400在相应的记录已经经过冲突字符检测和处理之后进行,从而保证这种格式转换不会存在冲突字符的问题。
62.在步骤402,为输出格式转换表达式构建词法库。
63.在本公开中,所构建的词法库应包括关于输出格式转换表达式中包括的不同类型的操作数和操作符的多个识别规则以及关于输出格式转换表达式中包括的不同类型的操作符的优先级,以便于后面的词法分析和语法分析。
64.例如,以下表1表示为前面提到的示例输出格式转换表达式构建的示例词法库。
65.表1
[0066][0067]
在步骤404,根据多个识别规则(即在步骤402中构建的词法库中的多个识别规则),对输出格式转换表达式进行词法分析,以便为该输出格式转换表达式生成相应的单词列表。
[0068]
在本公开中,为了生成相应的单词列表,需要先创建空白的单词列表。然后,可根据在步骤402中构建的词法库中的多个识别规则,识别该输出格式转换表达式中包括的第一单词,以将所识别的第一单词插入所述单词列表中。
[0069]
在本公开中,可通过以下方式来识别该输出格式转换表达式中包括的第一单词。首先,读取该输出格式转换表达式中的第一字符,并确定该第一字符满足所述多个识别规则中的哪一识别规则。然后,读取该输出格式转换表达式中紧接在该第一字符之后的第二字符。如果该第二字符不符合所确定的识别规则(即第一字符所满足的识别规则),则将第一字符识别为第一单词。然而,如果第二字符符合所确定的识别规则(即,第一字符所满足的识别规则),则读取紧接在该第二字符之后的后续字符,并在该后续字符满足所确定的识别规则时,继续往后读取字符,直到所读取的字符不再符合所确定的识别规则为止。然后,将由所读取的符合所确定的识别规则的所有字符按序组成的单词确定为第一单词,并将该第一单词插入所述单词列表中。
[0070]
在识别出了输出格式转换表达式的第一单词之后,继续根据在步骤402中构建的词法库中的多个识别规则,逐个地识别输出格式转换表达式中包括的后续单词,并将所识别的后续单词插入相应的单词列表中。识别输出格式转换表达式的每一个后续单词的方法与识别输出格式转换表达式的第一个单词的方法基本上相同,只是识别其后续单词的起始字符是该输出格式转换表达式中紧接在前一个识别出的单词之后的字符,而不是输出格式转换表达式中包括的第一个字符。
[0071]
在一些实施例中,在将识别出的各个单词插入所生成的单词列表中时,可在该单词之前插入分号,以便与其他单词进行区分。
[0072]
例如,对于前面提到的输出格式转换表达式的示例,为其生成的单词列表可表示如下:
[0073]
$;0;||;|;||;substr;(;$;1;,;2;,;4;);||;|;||;length;(;$;3;);||;|;||;-;(;(;$;5; ;100;);/;2;);||;|
[0074]
在步骤406,对所生成的单词列表进行语法分析,以为该输出格式转换表达式构建语法树。
[0075]
例如,可依次读入在步骤404生成的单词列表,然后采用一个栈临时存放最近读入的单词,遇到操作数和“(”则直接进栈;遇到优先级高于之前读入的操作符的优先级的操作符也压入栈;遇到优先级小等于之前读入的操作符的优先级的操作符则出栈,建立出栈的操作符与操作数的树节点关联,然后将操作符改为操作数节点重新压入栈,更新之前优先级为离栈顶最近操作符的优先级,一直循环到当前优先级高于之前优先级为止,然后将当前的操作符压栈;遇到“)”或者“,”也出栈计算,其中“)”需要一直计算到栈中第一个“(”为止,“,”则计算到第一个“(”或者“,”为止。整个算法一直持续到单词列表读完为止,此时栈中唯一的元素即为语法树的根节点,若计算过程中出错,则输出自定义表达式解析异常。
[0076]
在步骤408,根据在步骤406构建的语法树,为相应记录生成具有第二输出格式的输出结果。
[0077]
例如,可根据相应记录,从在步骤406构建的语法树的根节点开始以递归方式计算该语法树的每一叶节点的值。然后,根据每一叶节点的值,以回溯方式计算出该语法树的根节点的值。最后,将根节点的值确定为该相应记录的具有第二输出格式的输出结果。
[0078]
图5示出了可以用来实施本公开内容的实施例的示例电子设备500的示意性框图。例如,如图1所示的计算设备110可以由电子设备500来实施。如图所示,电子设备500包括中央处理单元(cpu)501,其可以根据存储在只读存储器(rom)502中的计算机程序指令或者从存储单元508加载到随机存取存储器(ram)503中的计算机程序指令,来执行各种适当的动作和处理。在随机存取存储器503中,还可存储电子设备500操作所需的各种程序和数据。中央处理单元501、只读存储器502以及随机存取存储器503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
[0079]
电子设备500中的多个部件连接至输入/输出接口505,包括:输入单元506,例如键盘、鼠标、麦克风等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0080]
上文所描述的各个过程和处理,例如方法200-400,可由中央处理单元501执行。例如,在一些实施例中,方法200-400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由只读存储器502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序被加载到随机存取存储器503并由中央处理单元501执行时,可以执行上文描述的方法200-400的一个或多个动作。
[0081]
本公开涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
[0082]
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形
设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0083]
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘计算设备。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0084]
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0085]
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0086]
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0087]
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产
生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0088]
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0089]
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献