基于语句对等替换的代码转换方法、装置、设备、介质与流程

文档序号:30525817发布日期:2022-06-25 06:53阅读:128来源:国知局
基于语句对等替换的代码转换方法、装置、设备、介质与流程

1.本发明属于数据库技术领域,尤其涉及一种基于语句对等替换的代码转换方法、装置、设备、介质。


背景技术:

2.过程化结构化查询语言(procedural language structured query language,plsql)是一种程序语言,是对sql语句的一种扩展,在普通的sql语句中增加了逻辑判断和循环等操作,能够实现更复杂的数据读取,被广泛应用到系统开发中。
3.随着数据库系统的业务逻辑开始用java,需要将编写好的plsql语句自动转换成java语句。在plsql语句中,布尔类型的取值包括是(true)、否(false)和空(null),并且可以针对null进行逻辑运算,但是在java语句中布尔类型的取值并不包括null,常见的代码转换方法只针对两种语言之间的描述方式进行转换,而plsql语句中对null进行逻辑非运算的结果为false,而在java语句的运算结果为true,若直接转换null的逻辑非运算表达式,在转换后很可能出现逻辑错误,影响系统的正常运行。


技术实现要素:

4.以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
5.本发明实施例提供了一种基于语句对等替换的代码转换方法、装置、设备、介质,能够对plsql语句的表达式进行对等转换,消除涉及null的逻辑非运算,避免转换到java之后出现逻辑错误,确保数据库系统的正常运行。
6.第一方面,本发明实施例提供了一种基于语句对等替换的代码转换方法,包括:
7.获取待转换的plsql代码中的待转换语句,所述待转换语句包括第一操作符和第一逻辑语句,所述第一操作符用于对所述第一逻辑语句的逻辑运算结果进行逻辑非操作,所述第一逻辑语句的逻辑运算结果为null;
8.获取所述待转换语句的目标逻辑运算结果;
9.移除所述第一操作符,将所述第一逻辑语句转换成第二逻辑语句,所述第二逻辑语句的逻辑运算结果为所述目标逻辑运算结果;
10.将所述第二逻辑语句替换所述待转换的plsql代码的所述待转换语句,得到目标plsql代码;
11.将所述目标plsql代码转换成目标java代码。
12.在一些实施例中,所述第一逻辑语句包括第一操作表达式、第二操作表达式和第二操作符,所述第二操作符用于对所述第一操作表达式的操作结果和所述第二操作表达式的操作结果进行逻辑运算,所述将所述第一逻辑语句转换成第二逻辑语句,包括:
13.生成第三操作符和第四操作符,所述第三操作符用于对所述第一操作表达式的操作结果进行逻辑非操作,所述第四操作符用于对所述第二操作表达式的操作结果进行逻辑
非操作;
14.当所述第二操作符为逻辑与操作符,将所述第二操作符变更为逻辑或操作符,或者,当所述第二操作符为逻辑或操作符,将所述第二操作符变更为逻辑与操作符;
15.根据所述第一操作表达式、所述第二操作表达式、所述第二操作符、所述第三操作符、所述第四操作符得到所述第二逻辑语句。
16.在一些实施例中,所述根据所述第一操作表达式、所述第二操作表达式、所述第二操作符、所述第三操作符、所述第四操作符得到所述第二逻辑语句,包括:
17.将所述第一操作表达式和所述第三操作符转换成第三操作表达式,所述第三操作表达式的操作结果与所述第一操作表达式的操作结果相反;
18.将所述第二操作表达式和所述第四操作符转换成第四操作表达式,所述第四操作表达式的操作结果与所述第二操作表达式的操作结果相反;
19.将所述第三操作表达式、所述第二操作符和所述第四操作表达式组成所述第二逻辑语句。
20.在一些实施例中,所述第一逻辑语句的操作类型为赋值操作,所述将所述第一逻辑语句转换成第二逻辑语句,包括:
21.获取预先设定的赋值包装类;
22.将所述第一逻辑语句转换成归属于所述赋值包装类的所述第二逻辑语句。
23.在一些实施例中,所述将所述第一逻辑语句转换成归属于所述赋值包装类的所述第二逻辑语句,包括:
24.从所述第一逻辑语句中确定第五操作表达式,所述第五操作表达式所对应的操作类型为赋值操作;
25.获取所述赋值包装类的描述规则,所述描述规则记载有每种赋值操作在所述赋值包装类中的描述方式;
26.根据所述描述规则改写所述第五操作表达式,得到归属于所述赋值包装类的第六操作表达式;
27.根据所述第六操作表达式进行逻辑非运算,得到所述第二逻辑语句。
28.在一些实施例中,所述第一逻辑语句包括至少两个逻辑子语句,所述将所述第一逻辑语句转换成第二逻辑语句,包括:
29.将每个所述逻辑子语句转换成中间子语句;
30.根据全部的所述中间子语句得到所述第二逻辑语句。
31.在一些实施例中,在所述将所述第二逻辑语句替换所述待转换的plsql代码的所述待转换语句之前,所述方法还包括:
32.将所述第二逻辑语句转换成备选java语句;
33.确定所述备选java语句的操作结果为所述目标逻辑运算结果。
34.第二方面,本发明实施例提供了一种基于语句对等替换的代码转换装置,包括:
35.语句获取单元,用于获取待转换的plsql代码中的待转换语句,所述待转换语句包括第一操作符和第一逻辑语句,所述第一操作符用于对所述第一逻辑语句的逻辑运算结果进行逻辑非操作,所述第一逻辑语句的逻辑运算结果为null;
36.结果确定单元,用于获取所述待转换语句的目标逻辑运算结果;
37.语句转换单元,用于移除所述第一操作符,将所述第一逻辑语句转换成第二逻辑语句,所述第二逻辑语句的逻辑运算结果为所述目标逻辑运算结果;
38.语句替换单元,用于将所述第二逻辑语句替换所述待转换的plsql代码的所述待转换语句,得到目标plsql代码;
39.代码转换单元,用于将所述目标plsql代码转换成目标java代码。
40.第三方面,本发明实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于语句对等替换的代码转换方法。
41.第四方面,本发明实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序用于执行如第一方面所述的基于语句对等替换的代码转换方法。
42.本发明实施例包括:获取待转换的plsql代码中的待转换语句,所述待转换语句包括第一操作符和第一逻辑语句,所述第一操作符用于对所述第一逻辑语句的逻辑运算结果进行逻辑非操作,所述第一逻辑语句的逻辑运算结果为null;获取所述待转换语句的目标逻辑运算结果;移除所述第一操作符,将所述第一逻辑语句转换成第二逻辑语句,所述第二逻辑语句的逻辑运算结果为所述目标逻辑运算结果;将所述第二逻辑语句替换所述待转换的plsql代码的所述待转换语句,得到目标plsql代码;将所述目标plsql代码转换成目标java代码。根据本实施例的技术方案,当待转换语句中的第一逻辑语句的逻辑运算结果为null,能够通过第二逻辑语句对待转换语句进行对等替换,避免待转换的plsql代码中出现针对null的逻辑非操作,确保转换成java语句后操作逻辑保持不变,确保系统正常运行。
43.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
44.附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
45.图1是本发明一个实施例提供的基于语句对等替换的代码转换方法的流程图;
46.图2是本发明另一个实施例提供的第一逻辑语句转换成第二逻辑语句的流程图;
47.图3是本发明另一个实施例提供的操作表达式转换成第二逻辑语句的流程图;
48.图4是本发明另一个实施例提供的通过赋值包装类转换成第二逻辑语句的流程图;
49.图5是本发明另一个实施例提供的赋值包装类的转换流程图;
50.图6是本发明另一个实施例提供的针对逻辑子语句进行转换的流程图;
51.图7是本发明另一个实施例提供的验证第二逻辑语句转换后的操作结果的流程图;
52.图8是本发明另一个实施例提供的基于语句对等替换的代码转换装置的结构图;
53.图9是本发明另一个实施例提供的电子设备的装置图。
具体实施方式
54.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
55.需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书、权利要求书或上述附图中的术语“第一”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
56.本发明提供了一种基于语句对等替换的代码转换方法、装置、设备、介质,方法包括:获取待转换的plsql代码中的待转换语句,所述待转换语句包括第一操作符和第一逻辑语句,所述第一操作符用于对所述第一逻辑语句的逻辑运算结果进行逻辑非操作,所述第一逻辑语句的逻辑运算结果为null;获取所述待转换语句的目标逻辑运算结果;移除所述第一操作符,将所述第一逻辑语句转换成第二逻辑语句,所述第二逻辑语句的逻辑运算结果为所述目标逻辑运算结果;将所述第二逻辑语句替换所述待转换的plsql代码的所述待转换语句,得到目标plsql代码;将所述目标plsql代码转换成目标java代码。根据本实施例的技术方案,当待转换语句中的第一逻辑语句的逻辑运算结果为null,能够通过第二逻辑语句对待转换语句进行对等替换,避免待转换的plsql代码中出现针对null的逻辑非操作,确保转换成java语句后操作逻辑保持不变,确保系统正常运行。
57.本技术实施例的数据库是指储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是一定的数据模型组织。
58.数据库操作语句是用来对数据库中的数据进行操作的编程语言。比如,数据库操作语句可以是但不限于用来对数据库中的数据进行增加、删除、修改、查询的编程语言等,数据库操作语句也可以是但不限于mysql数据库中的sql语句,oracle数据库中的sql语句等等。在线数据处理请求是用户在某一业务场景下用于请求对应的服务的请求,其中在线数据处理请求可根据在线数据处理请求的内容来确定数据库操作语句的请求类型等等,其中,数据库操作语句的请求类型包括但不限于增加、删除、修改以及查询等。具体根据在线数据处理请求确定数据库操作语句的方式可以是根据在线数据处理请求的内容来确定数据库操作语句。比如,在线数据处理请求是用于请求对数据库中的数据进行增加的数据处理请求,或者是用于请求对数据库中的数据进行查询的数据处理请求,或者是用于请求对数据库中的数据进行删除或者修改的数据处理请求。
59.需要说明的是,本发明实施例的数据库可以部署在服务器中,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
60.如图1所示,图1是本发明一个实施例提供的一种基于语句对等替换的代码转换方法的流程图,该基于语句对等替换的代码转换方法包括但不限于有以下步骤:
61.步骤s110,获取待转换的plsql代码中的待转换语句,待转换语句包括第一操作符和第一逻辑语句,第一操作符用于对第一逻辑语句的逻辑运算结果进行逻辑非操作,第一逻辑语句的逻辑运算结果为null;
62.步骤s120,获取待转换语句的目标逻辑运算结果;
63.步骤s130,移除第一操作符,将第一逻辑语句转换成第二逻辑语句,第二逻辑语句的逻辑运算结果为目标逻辑运算结果;
64.步骤s140,将第二逻辑语句替换待转换的plsql代码的待转换语句,得到目标plsql代码;
65.步骤s150,将目标plsql代码转换成目标java代码。
66.需要说明的是,待转换的plsql代码可以是由多个plsql语句组成的代码段,也可以是记载有多个plsql语句的plsql文件,本实施例对待转换的plsql代码的具体记载方式不作过多限定,能够从待转换的plsql代码获取到待转换语句即可。可以理解的是,待转换的plsql代码中可以包括任意数量的待转换语句,当获取到多个待转换语句,针对每个独立的待转换语句分别执行本实施例的方法即可,后续不重复赘述。
67.需要说明的是,本实施例的待转换语句为bool类型的语句,非bool类型的语句由于取值不涉及null,因此不会涉及针对null的逻辑非运算,转换到java语句之后不会出现逻辑错误,因此,非bool类型的待转换语句不在本实施例的讨论范围内,后续不重复赘述。
68.需要说明的是,待转换语句为通过plsql语言编写的语句,第一操作符用于对第一逻辑语句进行逻辑非运算,因此第一操作符可以是plsql语句中的“not”操作符,第一逻辑语句的逻辑运算结果为null,因此第一逻辑语句可以是if/case语句中的判断语句,也可以bool类型的赋值语句,例如,待转换语句可以是if(not(a》b)),在该语句中,第一逻辑语句为a》b,第一操作符为not,当a和b中任意一个为null,a》b的逻辑运算结果为null,在plsql语句中,由于not null的逻辑运算结果为false,而在java语句中逻辑运算结果为true,在逻辑上出现了错误,而除了not null之外的逻辑语句并不会在转换后出现逻辑错误,因此在获取到待转换语句之后,需要通过语句对等转换消除not操作符,以确保转换的java语句在逻辑上与plsql语句相同,确保系统的正常运行。
69.需要说明的是,根据上述描述,需要先确定待转换语句的目标逻辑运算结果,在完成语句对等转换后用于对第二逻辑语句的正确性进行验证,目标逻辑运算结果根据plsql语句的逻辑运算方式确定即可,在此不多作赘述。
70.需要说明的是,由于第一操作符为逻辑非运算符,在移除第一操作符后,剩余的第一逻辑语句与待转换语句的逻辑运算结果相反,因此需要对第一逻辑语句进行转换,使得得到的第二逻辑语句的结果与目标逻辑运算结果相同,并且,第二逻辑语句与待转换语句的形式不同,即第二逻辑语句最外层的逻辑操作符不为not,例如待转换语句为if(not(a=b)),目标逻辑运算结果为a不等于b,在移除第一操作符之后,得到的语句为if(a=b),因此需要将第一逻辑语句转换成第二逻辑语句a!=b,第二逻辑语句的逻辑运算结果为a不等于b,与目标逻辑运算结果相同,当然,第二逻辑语句也可以转换成其他形式,能够确保避免not null句式即可。通过第二逻辑语句替换待转换语句,实现了语句的对等转换,消除了plsql代码中针对null的逻辑非操作,确保得到的目标plsql代码转换成java代码之后逻辑保持一致。
71.需要说明的是,在进行语句的对等替换后,得到的目标plsql代码转换成java代码的过程为本领域技术人员熟知的技术,为了叙述简便在此不再赘述。
72.另外,在一实施例中,第一逻辑语句包括第一操作表达式、第二操作表达式和第二
操作符,第二操作符用于对第一操作表达式的操作结果和第二操作表达式的操作结果进行逻辑运算,参照图2,图1所示实施例的步骤s130还包括但不限于有以下步骤:
73.步骤s210,生成第三操作符和第四操作符,第三操作符用于对第一操作表达式的操作结果进行逻辑非操作,第四操作符用于对第二操作表达式的操作结果进行逻辑非操作;
74.步骤s220,当第二操作符为逻辑与操作符,将第二操作符变更为逻辑或操作符,或者,当第二操作符为逻辑或操作符,将第二操作符变更为逻辑与操作符;
75.步骤s230,根据第一操作表达式、第二操作表达式、第二操作符、第三操作符、第四操作符得到第二逻辑语句。
76.需要说明的是,操作表达式可以是单独的一个变量,也可以是一段能够实现数据处理功能的语句,例如操作表达式可以是变量a,也可以是a=“1”,本实施例对操作表达式的具体形式不作过多限定。
77.需要说明的是,当第一逻辑语句包括至少两个操作表达式,移除第一操作符之后,相当于对第一逻辑语句的运算结果取非集,需要针对两个操作表达式之间的第二操作符进行转换,以确保第二逻辑语句的逻辑运算结果为目标逻辑运算结果,针对第二逻辑语句的转换可以根据以下规则:not(a||b)=(not a)&&(not b),或者,not(a&&b)=(not a)||(not b),其中,a为第一操作表达式,b为第二操作表达式,第二操作符为逻辑或操作符“||”或者逻辑与操作符“&&”,第三操作符和第四操作符均为not操作符,根据上述规则,可以将待转换语句的not操作符下推至最内层的原子表达式,从而实现移除第一操作符,避免出现逻辑运算的错误。
78.为了更好地叙述本实施例的技术方案,以下提出一个具体示例,在本示例中,待转换语句为if not(a||b),则第一操作符为not,第一操作表达式为a,第二操作符为逻辑或操作符“||”,第二操作表达式为b,根据上述规则,可以得到第二逻辑语句为(not a)&&(notb),当a为null,b为true的情况下,根据not(a||b)得到的目标逻辑运算结果为false,第二逻辑语句的逻辑运算结果为false&&false=false,因此可以通过if((not a)&&(not b))进行语句对等替换并转换成java语句,在java语句中,(not a)&&(not b)的逻辑运算结果为true&&false=false,在转换后逻辑运算逻辑保持了一致。
79.另外,在一实施例中,参照图3,图2所示实施例的步骤s230还包括但不限于有以下步骤:
80.步骤s310,将第一操作表达式和第三操作符转换成第三操作表达式,第三操作表达式的操作结果与第一操作表达式的操作结果相反;
81.步骤s320,将第二操作表达式和第四操作符转换成第四操作表达式,第四操作表达式的操作结果与第二操作表达式的操作结果相反;
82.步骤s330,将第三操作表达式、第二操作符和第四操作表达式组成第二逻辑语句。
83.需要说明的是,在移除第一操作符之后,为了进一步确保出现notnull的逻辑运算过程,还可以根据预先设定的规则移除第三操作符和第四操作符,如上实施例所述,第三操作符和第四操作符为not操作符,因此移除第三操作符和第四操作符,相当于对第一操作表达式和第二操作表达式进行取反操作,因此,需要确保得到的第三操作表达式与第一操作表达式的操作结果相反,第四操作表达式与第二操作表达式的操作结果相反。例如,对于语
句not(a=b),第一操作表达式为a=b,第三操作符为not,转换得到的第三操作表达式可以是a!=b,其中“!=”为不等号;又如,对于语句not(x is not null),第二操作表达式为“x is not null”,第四操作符为not,转换得到的第四操作表达式可以是“x is null”;针对a!=b和x is null转换成java语句,能有效避免逻辑错误,上述语句的转换过程仅为示例,并非对本实施例的技术方案作出限制,能够确保转换得到的第三操作表达式和第四操作表达式最外侧的操作符不为not操作符即可。
84.另外,在一实施例中,第一逻辑语句的操作类型为赋值操作,参照图4,图1所示实施例的步骤s130还包括但不限于有以下步骤:
85.步骤s410,获取预先设定的赋值包装类;
86.步骤s420,将第一逻辑语句转换成归属于赋值包装类的第二逻辑语句。
87.需要说明的是,图2和图3的实施例所针对的第一逻辑语句的操作类型为逻辑运算,而bool类型还可以是赋值操作,例如第一逻辑语句可以是boolv_flag:=(p_no》0||p_type!=5),当(p_no》0||p_type!=5)的计算结果为null,结合第一操作符所得到的待转换语句为not null,无法正确转换成java语句,而赋值操作的语句并不能应用图2所示实施例的规则进行转换,因此,为了确保赋值操作在转换过程中保持逻辑正确,可以预先设置好赋值包装类,将第一逻辑语句转换成归属于赋值包装类的第二逻辑语句,使得转换成java语句后,针对第二逻辑语句的解析调用赋值包装类,而并非直接解析第二逻辑语句,从而确保目标逻辑运算结果保持一致。
88.需要说明的是,包装类为本领域技术人员在进行plsql编程过程中常用的类,具体的设置方式可以根据plsql代码中涉及的逻辑运算符进行设置,本实施例对此不多做赘述。
89.另外,在一实施例中,参照图5,图4所示实施例的步骤s420还包括但不限于有以下步骤:
90.步骤s510,从第一逻辑语句中确定第五操作表达式,第五操作表达式所对应的操作类型为赋值操作;
91.步骤s520,获取赋值包装类的描述规则,描述规则记载有每种赋值操作在赋值包装类中的描述方式;
92.步骤s530,根据描述规则改写第五操作表达式,得到归属于赋值包装类的第六操作表达式;
93.步骤s540,根据第六操作表达式进行逻辑非运算,得到第二逻辑语句。
94.需要说明的是,针对赋值操作的第一逻辑语句,通常赋值操作符的一侧为变量定义,另一侧为赋值逻辑运算,而变量定义并不涉及具体的逻辑运算,也不存在转换至java之后出现错误的可能性,因此,针对赋值操作的第一逻辑语句,只需要对赋值逻辑运算部分进行转换,即对第一逻辑语句的第五操作表达式进行转换。
95.需要说明的是,由于第五操作表达式的转换通过赋值包装类实现,而赋值包装类可以是预先配置好的类,因此可以获取赋值包装类的描述规则,根据该描述规则对第五操作表达式进行语句对等转换,得到第六操作表达式,由于第六操作表达式与第五操作表达式属于对等转换,而第二逻辑语句为第一逻辑语句的非集,因此在得到第六操作表达式后,再根据第六操作表达式进行逻辑非运算,得到第二逻辑语句。为了更好地说明本实施例的技术方案,以下提出一个具体示例:
96.在本示例中,赋值包装类的描述规则针对不同的操作符进行定义,例如逻辑非操作符定义为not,逻辑或操作符定义为orop,逻辑与操作符定于为andop,bool类型数值定义为tobool,对于第一逻辑语句boolv_flag:=(p_no》0||p_type!=5),第五操作表达式可以通过语法树遍历得到,例如以“=”为遍历的起点,直到括号内的语句描述完毕,即第五操作表达式为(p_no》0||p_type!=5),在这种情况下,第五操作表达式中的逻辑运算符为逻辑或运算“||”,则根据包装类的描述规则,第六表达式可以是(p_no》0oropp_type!=5),第六表达式转换至java语句后为:(p_no.bgt(0).orop(p_type.bne(5))),在针对orop的逻辑运算过程中,调用赋值包装类确定该操作为逻辑或操作,从而确保第六操作表达式与第五操作表达式一致,有效避免赋值操作类的语句转换成java之后出现逻辑错误。
97.另外,在一实施例中,第一逻辑语句包括至少两个逻辑子语句,参照图6,图1所示实施例的步骤s130还包括但不限于有以下步骤:
98.步骤s610,将每个逻辑子语句转换成中间子语句;
99.步骤s620,根据全部的中间子语句得到第二逻辑语句。
100.需要说明的是,当第一逻辑语句包括至少两个逻辑子语句,可以根据图2和图3所示的实施例,针对每个逻辑子语句进行对等转换,例如第一逻辑语句为not(not(a=b)||not(c=d)),第一逻辑子语句为not(a=b),第二逻辑子语句为not(c=d),可以根据图2和图3所示实施例的针对第一逻辑自语句进行转换,得到第一中间子语句a!=b和第二中间子语句c!=d,将两个中间子语句合并后得到not((a!=b)||(c!=d)),在针对上述语句执行图2和图3实施例所述的对等转换,得到最终的第二逻辑语句,具体过程在此不重复赘述。
101.另外,在一实施例中,参照图7,在执行图1所示实施例的步骤s140之前,还包括但不限于有以下步骤:
102.步骤s710,将第二逻辑语句转换成备选java语句;
103.步骤s720,确定备选java语句的操作结果为目标逻辑运算结果。
104.需要说明的是,在得到第二逻辑语句后,虽然其逻辑运算结果为目标逻辑运算结果,为了确保转换成java语句之后在逻辑运算上保持一直,可以将第二逻辑语句转换成备选java语句,并对备选java语句的操作结果进行确定,例如第二逻辑语句为x!=b,转换成备选java语句后为x.ne(b),其操作结果与目标逻辑运算结果一致,则可以将第二逻辑语句替换待转换语句,得到目标plsql代码。
105.参照图8,本发明实施例还提供了一种基于语句对等替换的代码转换装置,该基于语句对等替换的代码转换装置800包括但不限于有以下装置:
106.语句获取单元810,用于获取待转换的plsql代码中的待转换语句,待转换语句包括第一操作符和第一逻辑语句,第一操作符用于对第一逻辑语句的逻辑运算结果进行逻辑非操作,第一逻辑语句的逻辑运算结果为null;
107.结果确定单元820,用于获取待转换语句的目标逻辑运算结果;
108.语句转换单元830,用于移除第一操作符,将第一逻辑语句转换成第二逻辑语句,第二逻辑语句的逻辑运算结果为目标逻辑运算结果;
109.语句替换单元840,用于将第二逻辑语句替换待转换的plsql代码的待转换语句,得到目标plsql代码;
110.代码转换单元850,用于将目标plsql代码转换成目标java代码。
111.另外,参照图9,本发明的一个实施例还提供了一种电子设备,该电子设备900包括:存储器910、处理器920及存储在存储器910上并可在处理器920上运行的计算机程序。
112.处理器920和存储器910可以通过总线或者其他方式连接。
113.实现上述实施例的基于语句对等替换的代码转换方法所需的非暂态软件程序以及指令存储在存储器910中,当被处理器920执行时,执行上述实施例中的基于语句对等替换的代码转换方法,例如,执行以上描述的图1中的方法步骤s110至步骤s150、图2中的方法步骤s210至步骤s230、图3中的方法步骤s310至步骤s330、图4中的方法步骤s410至步骤s420、图5中的方法步骤s510至步骤s530、图6中的方法步骤s610至步骤s620、图7中的方法步骤s710至步骤s720。
114.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
115.此外,本发明的一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被一个处理器或控制器执行,例如,被上述电子设备实施例中的一个处理器执行,可使得上述处理器执行上述实施例中的基于语句对等替换的代码转换方法,例如,执行以上描述的图1中的方法步骤s110至步骤s150、图2中的方法步骤s210至步骤s230、图3中的方法步骤s310至步骤s330、图4中的方法步骤s410至步骤s420、图5中的方法步骤s510至步骤s530、图6中的方法步骤s610至步骤s620、图7中的方法步骤s710至步骤s720。本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性存储介质)和通信存储介质(或暂时性存储介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除存储介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的存储介质。此外,本领域普通技术人员公知的是,通信存储介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送存储介质。
116.本实施例可用于众多通用或专用的计算机装置环境或配置中。例如:个人计算机、服务器计算机、手持电子设备或便携式电子设备、平板型电子设备、多处理器装置、基于微处理器的装置、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何装置或电子设备的分布式计算环境等等。本技术可以在由计算机执行的计算机程序的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理电子设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储电子设备在内的本地和远程计算机存储
介质中。
117.附图中的流程图和框图,图示了按照本技术各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的各个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的程序。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的各个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。
118.描述于本技术实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
119.应当注意,尽管在上文详细描述中提及了用于动作执行的电子设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
120.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本技术实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算电子设备(可以是个人计算机、服务器、触控终端、或者网络电子设备等)执行根据本技术实施方式的方法。
121.本实施例的电子设备可以包括:射频(radio frequency,rf)电路、存储器、输入单元、显示单元、传感器、音频电路、无线保真(wireless fidelity,wifi)模块、处理器、以及电源等部件。rf电路可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器处理;另外,将设计上行的数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,lna)、双工器等。此外,rf电路还可以通过无线通信与网络和其他装置通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(global system of mobile communication,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma)、长期演进(long term evolution,lte)、电子邮件、短消息服务(short messaging service,sms)等。存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器
件、或其他易失性固态存储器件。输入单元可用于接收输入的数字或字符信息,以及产生与电子设备的设置以及功能控制有关的键信号输入。具体地,输入单元可包括触控面板以及其他输入装置。触控面板,也称为触摸屏,可收集在其上或附近的触摸操作(比如使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器,并能接收处理器发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类别实现触控面板。除了触控面板,输入单元还可以包括其他输入装置。具体地,其他输入装置可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元可用于显示输入的信息或提供的信息以及电子设备的各种菜单。显示单元可包括显示面板,可选的,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板。进一步的,触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器以确定触摸事件的类别,随后处理器根据触摸事件的类别在显示面板上提供相应的视觉输出。触控面板与显示面板是作为两个独立的部件来实现电子设备的输入和输入功能,但是在某些实施例中,可以将触控面板与显示面板集成而实现电子设备的输入和输出功能。电子设备还可包括至少一种传感器,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。音频电路、扬声器、传声器可提供音频接口。音频电路可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路接收后转换为音频数据,再将音频数据输出处理器处理后,经rf电路以发送给比如另一电子设备,或者将音频数据输出至存储器以便进一步处理。
122.本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
123.以上是对本发明的较佳实施进行了具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1