CN106708595B - 程序语句形式化转换的方法及装置 - Google Patents
程序语句形式化转换的方法及装置 Download PDFInfo
- Publication number
- CN106708595B CN106708595B CN201611254956.XA CN201611254956A CN106708595B CN 106708595 B CN106708595 B CN 106708595B CN 201611254956 A CN201611254956 A CN 201611254956A CN 106708595 B CN106708595 B CN 106708595B
- Authority
- CN
- China
- Prior art keywords
- statement
- sub
- program
- program statement
- expression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000006243 chemical reaction Methods 0.000 title abstract description 25
- 230000014509 gene expression Effects 0.000 claims abstract description 258
- 238000012545 processing Methods 0.000 claims description 20
- 230000010354 integration Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种程序语句形式化转换的方法及装置。该方法包括:获取待转换的程序语句对应的语法结构;根据程序语句对应的语法结构,确定程序语句的类型;根据程序语句的类型,生成程序语句对应的逻辑表达式;其中,程序语句对应的逻辑表达式用于表示程序语句的任意一个输出变量值与各输入变量值之间的关系。本发明实施例提供的程序语句形式化转换的方法及装置,通过获取待转换的程序语句对应的语法结构,根据程序语句对应的语法结构,确定程序语句的类型;根据程序语句的类型,生成程序语句对应的逻辑表达式,实现了将程序语句自动转化为对应的逻辑表达式,大大提高了程序语句转换为逻辑表达式的效率,节省了大量时间及人力。
Description
技术领域
本发明实施例涉及软件形式化验证技术领域,尤其涉及一种程序语句形式化转换的方法及装置。
背景技术
随着航空技术的不断发展,航空软件的规模急剧增加。例如,美国最新的联合攻击机F-35的软件(Final Block 3 Software)计划的规模已经达到了860万行的程序。
随着软件规模的增加,软件也越来越复杂。常规的基于测试的方法对软件进行验证的无法做到完全测试,即无法找出软件中存在的所有问题。因此,形式化验证方法开始应用于软件验证。通常专业人员多采用基于定理证明的形式化验证方法,该方法中需将待验证的程序语句转换为逻辑表达式。由于软件规模较大,这一形式化转换过程的工作量非常大。
目前,通过人工方法将待验证的程序语句转换为逻辑表达式,由于软件规模较大,将待验证的程序语句转换为逻辑表达式的过程的工作量非常大,效率低,耗费大量时间及人力。
发明内容
本发明实施例提供一种程序语句形式化转换的方法及装置,以解决目前通过人工方法将待验证的程序语句转换为逻辑表达式,工作量非常大,效率低,耗费大量时间及人力的问题。
本发明实施例的一个方面是提供一种程序语句形式化转换的方法,包括:
获取待转换的程序语句对应的语法结构;
根据所述程序语句对应的语法结构,确定所述程序语句的类型;
根据各所述程序语句的类型,生成所述程序语句对应的逻辑表达式;
其中,所述程序语句对应的逻辑表达式用于表示所述程序语句的任意一个输出变量值与各输入变量值之间的关系。
本发明实施例的另一个方面是提供一种程序语句形式化转换的装置,包括:
获取模块,用于获取待转换的程序语句对应的语法结构;
确定模块,用于根据所述程序语句对应的语法结构,确定所述程序语句的类型;
处理模块,用于根据各所述程序语句的类型,生成所述程序语句对应的逻辑表达式;
其中,所述程序语句对应的逻辑表达式用于表示所述程序语句的任意一个输出变量值与各输入变量值之间的关系。
本发明实施例提供的程序语句形式化转换的方法及装置,通过获取待转换的程序语句对应的语法结构,根据所述程序语句对应的语法结构,确定所述程序语句的类型;根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式,实现了将程序语句自动转化为对应的逻辑表达式,大大提高了程序语句转换为逻辑表达式的效率,节省了大量时间及人力。
附图说明
图1为本发明实施例一提供的程序语句形式化转换的方法的流程示意图;
图2为本发明实施例三提供的程序语句形式化转换的方法的流程示意图;
图3为本发明实施例四提供的程序语句形式化转换的方法的流程示意图;
图4为本发明实施例五提供的程序语句形式化转换的方法的流程示意图;
图5为本发明实施例六提供的程序语句形式化转换的装置的结构示意图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的程序语句形式化转换的方法及装置适用于采用命令式程序设计语言编写的面向过程的程序。命令式程序设计语言是基于动作的计算机语言,以冯诺依曼计算机体系结构为背景。采用命令式程序设计语言编写的面向过程的程序的主结构是由多个函数构成,函数包括输入参数、返回值、计算过程,计算过程采用一段程序语句实现。实现程序所采用的编程语言可以是现有的命令式程序设计语言中的任意一种,例如C语言或类C语言的编程语言等。
实施例一
图1为本发明实施例一提供的程序语句形式化转换的方法的流程示意图。本发明实施例针对目前通过人工方法将待验证的程序语句转换为逻辑表达式,工作量非常大,效率低,耗费大量时间及人力的问题,提供了程序语句形式化转换的方法,该方法具体步骤如下:
步骤S101、获取待转换的程序语句对应的语法结构。
本实施例中,方法的执行主体根据预先设定的程序语句编写所采用的计算机语言,可以自动获取程序语句所采用的计算机语言的BNF范式(Backus-Naur Form,巴科斯范式),并可以进一步确定程序语句的语法结构。
通常BNF范式用于描述计算机语言语法的符号集,通常不同的语法结构的计算机语言对应的BNF范式不同。不同的命令式程序设计语言的语法结构不同,对应于不同的BNF范式。
本实施例的方法适用于函数中实现计算过程的一段程序语句的形式化转换,可以将函数中的程序语句转化为其对应的逻辑表达式。
在本发明的另一实施方式中,获取待转换的程序语句对应的语法结构,可以采用以下方式实现:获取待转换的程序语句对应的BNF范式,根据所述BNF范式,生成语法分析器,通过所述语法分析器,生成所述程序语句对应的语法树。
其中,待转换的程序语句对应的BNF范式可以根据待转换程序语句使用的编程语言确定,根据编程语言确定其对应的BNF范式的方法可以采用现有技术用任意一种方法实现,本实施例不再赘述。
可选的,可以利用现有的语法分析工具,根据所述BNF范式,生成语法分析器。例如,可以选用Yacc(Yet Another Compiler Compiler),Antlr(Another Tool forLanguage Recognition),JavaCC(Java Compiler Compiler)等现有的语法分析工具中的任意一种。
步骤S102、根据程序语句对应的语法结构,确定程序语句的类型。
本实施例中,程序语句主要包括以下几种基础类型的语句:赋值语句、条件语句、组合语句和循环语句,不同类型的程序语句对应的语法结构不同,通过分析程序语句的语法结构可以确定程序语句的类型。
本发明实施例中,执行装置可以自动识别程序语句中的输入变量和输出变量,并对输入变量做标记,以与输出变量进行区分。例如,可以为输入变量添加上标“0”等标记。本实施例中,带有上标“0”的表达式表示输入变量。例如对于一个变量,如果其表达式为v0,表达式中带有上标“0”,则表示该变量为输入变量;如果其表达式为v,表达式中没有上标“0”,则表示该变量为输出变量;如果输入变量为常数值,则不带上标,以与指数表达式进行区分。另外,本实施例中可以采用现有技术中的任意一种自动识别程序语句中的输入变量和输出变量的方法,本发明实施例对此不做具体限定。
赋值语句包括一个输出变量和一个输入变量,该输入变量可以是常量或者是用数学表达式表示的变量值。赋值语句的语法结构可以表示为“x=e1”,其中x表示输出变量,e1表示输入变量,“=”是赋值运算符。
条件语句包括真值表达式、第一子语句和第二子语句,其中真值表达式为输入变量,第一子语句和第二子语句对应的逻辑表达式作为输出变量。其中第一子语句和第二子语句可以是任意一种类型的程序语句。赋值语句的语法结构可以表示为“if(e2){S1}else{S2}”,其中e2表示真值表达式、S1表示第一子语句,S2表示第二子语句。该真值表达式可以是常量值,或者是用数学表达式表示的变量值。条件语句的语义为:当真值表达式为真时,执行第一子语句,反之,当真值表达式为假时,执行第二子语句。
组合语句包括至少两个子语句,每个子语句可以是任意一种类型的程序语句。在执行时,组合语句中的至少两个子语句按照先后顺序依次执行,在前的子语句的输出变量可能会作为在后子语句的输入变量,此时在前的子语句的执行结果会影响在后执行的子语句的执行结果。组合语句包括三个子语句时,该组合语句的语法结构可以表示为“S3;S4;”,其中,S3,S4分别表示该组合语句中按给定的顺序排列的两个个子语句。
循环语句包括循环条件和循环体,循环体包括至少一个子语句,每个子语句可以是任意一种类型的程序语句。本实施例中,可以将循环语句中的while语句进行形式化转换,while语句可以表示为“while(e3){R}”,其中,“while”为循环语句的关键字中的一种,e3表示循环条件,R表示循环体。该循环条件可以是用数学表达式表示的变量值。另外,循环语句还可以是现有技术中其他任意一种其他类型的循环语句,任意其他类型的循环语句都可以转换为while语句。对其他类型的循环语句的形式化转换可以通过将其转换为其对应的while语句,再将其对应的while语句进行形式化转换来实现。本实施例中,可以采用现有技术中任意一种将其他类型的循环语句的形式化转换可以通过将其转换为其对应的while语句,本实施例对此不作具体限定。
本实施例中,程序语句的语法结构具有可嵌套和可递归的特点,程序的语法结构可以用语法树表示。程序语句的基础类型为赋值语句和条件语句,组合语句和循环语句可以表示为多个赋值语句和/或条件语句嵌套组合的结果。例如,条件语句包括的第一子语句和第二子语句,其中第一子语句可以是赋值语句,第二子语句可以是条件语句;组合语句包括第三子语句和第四子语句,其中第三子语句为条件语句,第四子语句为赋值语句;或者,第三子语句为赋值语句,第四子语句为组合语句;循环语句的循环体包括两个子语句,分别为赋值语句和条件语句,则可以理解为该循环体包括一个组合语句。
需要说明的是,本实施例中给出的各类型程序语句的语法结构仅为举例说明,各类型的程序语句的语法结构还可以是现有技术中任意一种对应类型程序语句的语法结构,根据程序语句对应的BNF范式,均可以对程序语句的语法结构进行识别,本发明实施例对于各类型程序语句的语法结构不做具体限定。
步骤S103、根据程序语句的类型,生成程序语句对应的逻辑表达式。
其中,程序语句对应的逻辑表达式用于表示程序语句的任意一个输出变量值与各输入变量值之间的关系。
本实施例中,每一段程序语句本质上描述的是输入变量记载的初始值与输出变量记载的结果值的关系,而输出变量与输入变量的关系可以通过逻辑表达式描述出来的。每段程序语句对应的逻辑表达式是由多个由与逻辑运算符“∧”连接的子表达式组成,每个子表达式表示一个输出变量与其他输入变量之间的关系。
本发明实施例通过获取待转换的程序语句对应的语法结构,根据程序语句对应的语法结构,确定程序语句的类型;根据程序语句的类型,生成程序语句对应的逻辑表达式,实现了将程序语句自动转化为对应的逻辑表达式,大大提高了程序语句转换为逻辑表达式的效率,节省了大量时间及人力。
实施例二
在上述实施例一的基础上,本实施例二中,如果程序语句的类型为赋值语句,根据程序语句的类型,生成程序语句对应的逻辑表达式,具体包括:根据公式(1),生成程序语句对应的逻辑表达式。
其中,x表示输出变量,表示输入变量,A表示将输入变量赋值为输出变量的谓词表达式。
本实施例中,赋值语句包括一个输出变量和一个输入变量。用x表示输出变量,用表示输入变量,赋值语句的语法结构可以表示为将该程序语句转换为形如的逻辑表达式,其中“=”是赋值运算符,A表示将输入变量赋值为输出变量的谓词表达式。该逻辑表达式的含义为将输入变量值赋值给输出变量x。
例如,程序语句为“a=5”,类型为赋值语句,对程序语句进行形式转换得到其对应的逻辑表达式为A(a,5)。
本实施例中,赋值运算符左边的变量为输出变量,赋值运算符右边的变量为输入变量。赋值语句中的输入变量可以有多个,此时赋值运算符右边的部分为多个输入变量的运算表达式。
例如,程序语句为“a=b+5”,其中,输入变量为:b+5,此时,输入变量为用数学表达式表示的变量值,随着变量b的不同发生改变。输出变量为a,对输入变量标记完成后该程序语句可以表示为“a=b0+5”,类型为赋值语句,对程序语句进行形式转换得到其对应的逻辑表达式为A(a,b0+5)。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为赋值语句,将该程序语句转换为实现了类型为赋值语句的程序语句的自动转化为对应的逻辑表达式。
实施例三
图2为本发明实施例三提供的程序语句形式化转换的方法的流程示意图。在上述实施例二基础上,本实施例三中,如果程序语句的类型为条件语句,程序语句包括真值表达式、第一子语句和第二子语句。如图2所示,根据该程序语句的类型,生成程序语句对应的逻辑表达式,具体包括以下步骤:
步骤S201、获取程序语句的真值表达式、第一子语句和第二子语句。
本实施例中,根据程序语句的类型,自动获取程序语句的真值表达式、第一子语句和第二子语句。这一过程可以在根据程序语句对应的语法结构,确定程序语句的类型的过程中同时进行。
本实施例中,根据程序语句的语法结构,识别出真值表达式、第一子语句和第二子语句的过程,可以采用现有技术中任意一种方法实现,本发明实施例对此不做具体限定。
步骤S202、根据第一子语句和第二子语句的类型,分别生成第一子语句和第二子语句对应的逻辑表达式。
其中,第一子语句和第二子语句可以是任意一种类型的程序语句。
条件语句的语义为:当真值表达式为真时,执行第一子语句,反之,当真值表达式为假时,执行第二子语句。
本实施例中,条件语句的语法结构有可嵌套和可递归的特点,条件语句中的各个子语句可以是任意一种类型的程序语句。在生成该条件语句对应的逻辑表达式之前,首先生成各个子语句对应的逻辑表达式。生成各个子语句对应的逻辑表达式的方法可以递归使用生成各类型的程序语句对应的逻辑表达式的方法。
例如,给定类型为条件语句的程序语句,对该程序语句中的输入变量用上标“0”进行标记后如下:
if(a0>b0){x=1}else{x=2}
在上述步骤S201中,根据该程序语句的类型以及语法结构,可以获取到该程序语句的真值表达式为a0>b0,第一子语句为x=1,第二子语句为x=2。第一子语句和第二子语句均为类型为赋值语句的程序语句。在该步骤中,根据第一子语句的类型是赋值语句,根据上述实施例中生成类型为赋值语句的程序语句对应的逻辑表达式的方法,可以生成第一子语句对应的逻辑表达式A(x,1),记为r1。同理,第二子语句的类型是赋值语句,可以生成第二子语句对应的逻辑表达式A(x,2),记为r2。
步骤S203、根据公式(2),生成程序语句对应的逻辑表达式;
其中,表示真值表达式,r1表示第一子语句对应的逻辑表达式,r2表示第二子语句对应的逻辑表达式,→为蕴含运算符,∧为与运算符,为非运算符。
在公式(2)所示的逻辑表达式中,当e0为真时,为永真式,该逻辑表达式可以简化为与条件语句中当真值表达式为真时,执行第一子语句的语义一致。反之,当e0为假时,e0→r1为永真式,该逻辑表达式可以简化为与条件语句中当真值表达式为假时,执行第二子语句的语义一致。
该步骤中,根据上述步骤S202中生成的第一子语句和第二子语句分别对应的逻辑表达式r1和r2,根据公式(2)生成程序语句对应的逻辑表达式。
例如,基于上述步骤S202中的举例,给定类型为条件语句的程序语句,对该程序语句中的输入变量用上标“0”进行标记后如下:
if(a0>b0){x=1}else{x=2}
该程序语句的真值表达式为a0>b0,第一子语句对应的逻辑表达式为A(x,1),第二子语句对应的逻辑表达式为A(x,2),根据公式(2)可以得到程序语句对应的逻辑表达式如下:
本发明实施例通过根据程序语句的类型,如果程序语句的类型为条件语句,自动获取程序语句的真值表达式、第一子语句和第二子语句,分别生成第一子语句和第二子语句对应的逻辑表达式,并自动生成程序语句对应的逻辑表达式,实现了类型为条件语句的程序语句的自动转化为对应的逻辑表达式
实施例四
图3为本发明实施例四提供的程序语句形式化转换的方法的流程示意图。在上述实施例三基础上,本实施例四中,如果程序语句的类型为组合语句,程序语句包括至少两个子语句。如图3所示,根据该程序语句的类型,生成程序语句对应的逻辑表达式,具体包括以下步骤:
步骤S301、按照各子语句的执行顺序,将至少两个子语句划分为第三子语句和第四子语句,第三子语句在第四子语句之前。
本实施例中,程序语句包括至少两个子语句,当程序语句包含子语句的个数大于2时,将程序语句中的多个子语句按照各子语句的执行顺序,划分为第三子语句和第四子语句,其中第三子语句和第四子语句相当于包括至少一个子语句的程序语句。如果第三子语句包括多个子语句,则第三语句相当于一个类型为组合语句的程序语句。同理,如果第四子语句包括多个子语句,则第四语句相当于一个类型为组合语句的程序语句。另外,第三子语句和第四子语句可以是任意一种类型的程序语句。
例如,待转换的程序语句包括3个子语句,该程序语句表示为:A1;A2;A3,则可以将该程序语句进行划分,得到第三子语句为:A1;A2,得到第四子语句为A3。此时,第三子语句的类型为组合语句,第四子语句的类型可以根据A3的语法结构进行确定,A3可以是任意一种类型的程序语句。
步骤S302、生成第三子语句和第四子语句分别对应的逻辑表达式。
本实施例中,组合语句的语法结构有可嵌套和可递归的特点,组合语句中的第三子语句和第四子语句可以是任意一种类型的程序语句。在生成该组合语句对应的逻辑表达式之前,首先生成各个子语句对应的逻辑表达式。生成各个子语句对应的逻辑表达式的方法可以嵌套使用生成各类型的程序语句对应的逻辑表达式的方法。
步骤S303、对第三子语句和第四子语句分别对应的逻辑表达式进行整合处理,生成程序语句对应的逻辑表达式。
本实施例中,每段程序语句对应的逻辑表达式是由多个由与逻辑运算符“∧”连接的子表达式组成,每个子表达式表示一个输出变量与其他输入变量之间的关系。将待转换的程序语句对应的逻辑表达式中的多个子表达式可以用多个子表达式的集合来表示。待转换的程序语句对应的多个子表达式的集合称为关系集合,记为Ω:
其中,li表示第i个输出变量的变量名,R0表示输入变量的集合,Vi(li,R0)表示用于表示输出变量li与输入变量的集合R0中各输入变量之间的关系的子表达式。n为待转换的程序语句中输出变量的个数,<li,Vi(li,R0)>表示由li和Vi(li,R0)组成的元组。待转换的程序语句对应的关系集合可以表示为由li和Vi(li,R0)组成的元组的集合。
进一步地,第三子语句和第四子语句分别对应的关系集合可以分别表示为Ω1和Ω2。该步骤中,对第三子语句和第四子语句分别对应的逻辑表达式进行整合处理,可以通过对第三子语句和第四子语句分别对应的关系集合Ω1和Ω2进整合处理,得到待转换的程序语句对应的关系集合,并根据待转换的程序语句对应的关系集合,确定的该程序语句对应的逻辑表达式的方法来实现。最终得到待转换的程序语句对应的关系集合可以记为Ω3。
具体的,对Ω1和Ω2进整合处理,得到Ω3可以采用如下方式实现:
第一,带入处理。
如果Ω2中的某些输入变量与Ω1中的某些输出变量的变量名一致,由于第三子语句的执行在第四子语句之前,Ω1中这些输出变量可能会作为Ω2中的输入变量,对Ω2中的输出变量的结果值产生影响,故将Ω1中的这些输出变量对应的子表达式带入到Ω2中,得到的新的关系集合记为Ω2′。
具体地,将Ω1中的这些输出变量对应的子表达式带入到Ω2中,得到的新的关系集合记为Ω2′具体实现方式如下:
如果Ω2中的某些输入变量与Ω1中的某些输出变量的变量名一致,将Ω2中的这些输入变量称作Ω2中的同名输入变量,将Ω1中的这些输出变量称作Ω1中的同名输出变量。
组合语句可以表示为多个赋值语句和/或条件语句嵌套组合的结果。组合语句对应的逻辑表达式中的任意一个输入变量li对应的子表达式Vi(li,R0)可以表示为如下所示的两种结构的表达式中的一种:(1)直接赋值的表达式:A(li,e0);(2)多层嵌套的条件语句对应的条件赋值的表达式可以简化为多个形如的蕴含表达式经与运算符连接在一起的结构:其中m为其中被与运算符连接在一起的蕴含表达式的个数,m为正整数,表示条件语句中任意一个蕴含表达中的真值表达式。
对于Ω2中的任何一个同名输入变量li对应的子表达式Vi(li,R0),如果Vi(li,R0)可以表示为直接赋值的表达式A(li,e0),则将Ω2中的同名输入变量li全部替换为e0。如果Vi(li,R0)可以表示为条件赋值的表达式 首先在Ω2中增加一个与li对应的输出变量li′,以及li′对应的子表达式Vi(li′,R0),然后将Ω2中的同名输入变量li全部替换为li′。其中,li′对应的子表达中输出变量li′与输入变量集合R0中的各输入变量之间的关系,与输出变量li与输入变量集合R0各输入变量之间的关系相同,<li′,Vi(li′,R0)>可以看作是<li,Vi(li,R0)>的副本。
经过上述替换处理后的Ω2作为第一步中得到的新的关系集合Ω2′,Ω2′中的不存在任何一个输入变量与Ω1中的输出变量的变量名一致。
例如,给定类型为组合语句的程序语句,对该程序语句中的输入变量用上标“0”进行标记后如下:
if(a0>b0){x=1}else{x=2};
if(x0==1){y=a0}else{y=x0+b0};
该组合语句中的第三子语句为if(a0>b0){x=1}else{x=2},第四子语句为if(x0==1){y=a0}else{y=x0+b0}。
根据上述实施例的方法可得到第三子语句对应的逻辑表达式为第四子语句对应的逻辑表达式为
进一步地,可以得到第三子语句对应的关系集合Ω1,Ω1={<x,(a0>b0→A(x,1))∧(a0≤b0→A(x,2))>}。Ω1中包括一个变量名为x的输出变量,Ω1对应的输入变量的集合以及,第四子语句对应的关系集合Ω2, Ω2中包括一个变量名为y的输出变量,Ω2对应的输入变量的集合
其中,变量名为x0的输入变量中,上标0仅用于区分输入变量和输出变量,Ω1中用x表示的输出变量与Ω2中用x0表示的输入变量的变量名一致,且第三子语句对应的表达式为条件赋值的表达式的结构。在该步骤中,首先在Ω2中增加一个与Ω1的输出变量x对应的输出变量x′,以及x′对应的子表达式然后,将Ω2中所有的x0替换为x′,得到Ω′2:
Ω′2={<x′,(a0>b0→A(x′,1))∧(a0≤b0→A(x′,2))>,
到此,完成将Ω1中的同名输出变量对应的子表达式带入到Ω2中,得到的新的关系集合Ω2′的处理过程。
第二,合并处理。
如果Ω2′中的某些输出变量与Ω1中的某些输出变量的变量名一致,则将Ω2′中的这些输出变量与Ω1中的这些同名的输出变量合并,得到合并后的Ω2′,作为关系集合Ω3;其他在Ω2′中不存在同名的输出变量的Ω1中的输出变量,可以直接加入到Ω3中,得到最终的关系集合Ω3。
本实施例中,对于Ω′2中任意一个输出变量li对应的子表达式Vi(li,R0),可以分为以下两种情况:(1)直接覆盖。这种情况下,无论Ω1中的变量名为li的输出变量对应的子表达式是什么,Ω′2中变量名为li的输出变量对应的子表达式一定会覆盖掉该输出变量原有的值;即,Ω′2中变量名为li的输出变量不会受Ω1中的变量名为li的输出变量的影响。(2)条件覆盖。这种情况下,Ω′2中变量名为li的输出变量对应的子表达式由Ω1与Ω′2两个关系集合中对应于输出变量li的子表达式共同决定;即,Ω′2中变量名为li的输出变量会受Ω1中的变量名为li的输出变量的影响。
本实施例中,对于Ω′2中任意一个输出变量li对应的子表达式Vi(li,R0),如果该Vi(li,R0)为直接赋值的逻辑表达式,则输出变量li对应的子表达式属于直接覆盖的情况。如果Vi(li,R0)为条件赋值的逻辑表达式,对该输出变量li对应的子表达式属于直接覆盖的情况还是条件覆盖的情况进行判定。
具体地,如果该输出变量li对应的子表达式为条件赋值的逻辑表达式,可以表示为:其中,m为Ω′2中输出变量li对应的子表达式中真值表达式的个数,Cj表示条件语句中任意一个真值表达式。
获取输出变量li对应的表达式中所有真值表达式中的原子公式的集合T。枚举集合T中每个原子公式的真值取值的可能,如果对于每一种可能,有且只有一个真值表达式为真,则该输出变量li对应的子表达式是一个全条件赋值的逻辑表达式,可以确定该输出变量li对应的子表达式为直接覆盖的情况。其中,全条件赋值的逻辑表达式满足无论该逻辑表达式取什么值,都可以将该逻辑表达式简化为一个直接赋值的逻辑表达式。
如果存在一种集合T中原子公式的真值取值,可以使每个真值表达式的值均为假,即存在使得所有真值表达式均为假的情况,则该输出变量li对应的子表达式是一个非全条件赋值的逻辑表达式,可以确定该输出变量li对应的子表达式为条件覆盖的情况。
进一步的,对于Ω′2中任意一个变量名为li的输出变量,如果Ω1中存在变量名为li的输出变量,则将Ω2′中的输出变量li与Ω1中输出变量li合并,可以采用如下方式实现:
如果确定该输出变量li对应的子表达式属于直接覆盖,则无需将Ω1中与输出变量li变量名相同的输出变量合并到Ω′2中,Ω′2中该输出变量li对应的子表达式无需变更。
如果确定该输出变量li对应的子表达式属于条件覆盖,将该输出变量li对应的子表达式与Ω1中与输出变量li变量名相同的输出变量合并,合并后,该输出变量li对应的最终的子表达式可以表示为: 其中,Ω′2[li]指的是在关系集合Ω′2中关于输出变量li的表达式,Ω1[li]指的是在关系集合Ω1中关于输出变量li的表达式。
例如,给定以下组合语句:
if(c1){x=1}else if(c2){x=2};
if(c3){x=3}else if(c4){x=4}else if(c5){x=5};
该组合语句中的第三子语句为if(c1){x=1}else if(c2){x=2},第四子语句为if(c3){x=3}else if(c4){x=4}else if(c5){x=5}。根据上述方法可以得到第三子语句对应的关系集合 第三子语句对应的关系集合 该举例中,不存在Ω2中的某些输入变量与Ω1中的某些输出变量的变量名一致,因此进行第一步的带入处理之后,得到的新的Ω′2与原来的Ω2一致。
Ω1中输出变量x对应的表达式为 Ω′2中输出变量x对应的表达式为
当c3、c4和c5均为假时,Ω′2[x]中的各子表达式(c3→A(x,3))、的值为真,此时,Ω′2[x]为永真式。即存在使得所有真值表达式均为假的情况,因此,可以确定Ω′2[x]为条件覆盖的情况。Ω′2[x]中包括3个真值表达式,分别为c3、c4和c5,将Ω1[x]和Ω′2[x]合并为的形式:
即,
本发明实施例通过根据程序语句的类型,如果程序语句的类型为组合语句,自动按照各子语句的执行顺序,将至少两个子语句划分为第三子语句和第四子语句,第三子语句在第四子语句之前;生成第三子语句和第四子语句分别对应的逻辑表达式;对第三子语句和第四子语句分别对应的逻辑表达式进行整合处理,生成程序语句对应的逻辑表达式。实现了类型为组合语句的程序语句的自动转化为对应的逻辑表达式。
实施例五
图4为本发明实施例五提供的程序语句形式化转换的方法的流程示意图。在上述实施例四基础上,本实施例五中,如果程序语句的类型为循环语句,程序语句包括循环条件和循环体,循环体包括至少一个子语句。如图4所示,根据该程序语句的类型,生成程序语句对应的逻辑表达式,具体包括以下步骤:
步骤S401、获取预先设定的程序语句对应的逻辑表达式的通项公式。
其中,程序语句对应的逻辑表达式的通项公式是用于表示该程序语句的循环体经过执行的次数与该程序语句对应的逻辑表达式之间的关系。
本实施例中,类型为循环语句的程序语句包括循环条件和循环体,循环体包括至少一个子语句。可以将循环体包括至少一个子语句作为一个组合语句,执行该循环语句相当于多次执行组合语句。
本实施例中,用F(q)表示进行q次的循环执行之后程序语句对应的逻辑表达式,程序语句对应的逻辑表达式的通项公式可以由技术人员根据实际需要进行设定。
步骤S402、根据循环体对应的逻辑表达式的通项公式,确定程序语句的循环次数的条件表达式。
本实施例中,由于循环条件的真值可能会受循环体执行结果的影响,根据循环体对应的逻辑表达式的通项公式,可以求得程序语句的循环次数的条件表达式,具体可以采用现有技术中任意一种求解通项公式项数的方法来实现。
本实施例中程序语句的循环次数的条件表达式可以表示为e(q),e(q)的真值可以在程序语句循环t次之后内由真变为假。
步骤S403、程序语句的循环次数的条件表达式,以及循环体对应的逻辑表达式的通项公式,生成程序语句对应的逻辑表达式。
本实施例中,首先,根据程序语句的循环次数的条件表达式,可以计算得到循环次数为0时程序语句的条件表达式e(0),即进入循环体时的循环条件对应的真值表达式。然后,根据e(0),以及F(q),可以确定循环执行t次之后该程序语句对应的逻辑表达式可以表示为:e(0)→F(t)。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为循环语句,获取预先设定的循环体对应的逻辑表达式的通项公式,根据循环体对应的逻辑表达式的通项公式,确定程序语句的循环次数的条件表达式;程序语句的循环次数的条件表达式,以及循环体对应的逻辑表达式的通项公式,生成程序语句对应的逻辑表达式。实现了类型为循环语句的程序语句的自动转化为对应的逻辑表达式。
实施例六
图5为本发明实施例六提供的程序语句形式化转换的装置的结构示意图。本发明实施例提供的程序语句形式化转换的装置可以执行程序语句形式化转换的方法实施例提供的处理流程。如图5所示,该装置包括:获取模块501、确定模块502和处理模块503。
其中,获取模块501用于获取待转换的程序语句对应的语法结构。
确定模块502用于根据程序语句对应的语法结构,确定程序语句的类型。
处理模块503用于根据各程序语句的类型,生成程序语句对应的逻辑表达式。
其中,程序语句对应的逻辑表达式用于表示程序语句的任意一个输出变量值与各输入变量值之间的关系。
可选地,在本发明的另一实施例方式中,获取模块还用于:获取待转换的程序语句对应的BNF范式;根据BNF范式,生成语法分析器;通过语法分析器,生成程序语句对应的语法树。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过获取待转换的程序语句对应的语法结构,根据程序语句对应的语法结构,确定程序语句的类型;根据程序语句的类型,生成程序语句对应的逻辑表达式,实现了将程序语句自动转化为对应的逻辑表达式,大大提高了程序语句转换为逻辑表达式的效率,节省了大量时间及人力。
实施例七
在上述实施例六的基础上,在本实施例中,处理模块还用于:
如果程序语句的类型为赋值语句,程序语句包括一个输出变量和一个输入变量,根据公式(1),生成程序语句对应的逻辑表达式;
其中,x表示输出变量,表示输入变量,A表示将输入变量赋值为输出变量的谓词表达式。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为赋值语句,将该程序语句转换为实现了类型为赋值语句的程序语句的自动转化为对应的逻辑表达式。
实施例八
在上述实施例七的基础上,在本实施例中,处理模块还用于:
如果程序语句的类型为条件语句,则程序语句包括真值表达式、第一子语句和第二子语句;
获取程序语句的真值表达式、第一子语句和第二子语句;
分别根据第一子语句和第二子语句的类型,生成第一子语句和第二子语句对应的逻辑表达式;
根据公式(2),生成程序语句对应的逻辑表达式;
其中,表示真值表达式,r1表示第一子语句对应的逻辑表达式,r2表示第二子语句对应的逻辑表达式。
本发明实施例提供的装置可以具体用于执行上述实施例三所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为条件语句,自动获取程序语句的真值表达式、第一子语句和第二子语句,分别生成第一子语句和第二子语句对应的逻辑表达式,并自动生成程序语句对应的逻辑表达式,实现了类型为条件语句的程序语句的自动转化为对应的逻辑表达式
实施例九
在上述实施例八的基础上,在本实施例中,处理模块还用于:
如果程序语句的类型为组合语句,则程序语句包括至少两个子语句;
按照各子语句的执行顺序,将至少两个子语句划分为第三子语句和第四子语句,第三子语句在第四子语句之前;
生成第三子语句和第四子语句分别对应的逻辑表达式;
对第三子语句和第四子语句分别对应的逻辑表达式进行整合处理,生成程序语句对应的逻辑表达式。
本发明实施例提供的装置可以具体用于执行上述实施例四所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为组合语句,自动按照各子语句的执行顺序,将至少两个子语句划分为第三子语句和第四子语句,第三子语句在第四子语句之前;生成第三子语句和第四子语句分别对应的逻辑表达式;对第三子语句和第四子语句分别对应的逻辑表达式进行整合处理,生成程序语句对应的逻辑表达式。实现了类型为组合语句的程序语句的自动转化为对应的逻辑表达式。
实施例十
在上述实施例九的基础上,在本实施例中,处理模块还用于:
如果程序语句的类型为循环语句,则程序语句包括循环条件和循环体,循环体包括至少一个子语句;
获取预先设定的循环体对应的逻辑表达式的通项公式;
根据循环体对应的逻辑表达式的通项公式,确定程序语句的循环次数的条件表达式;
程序语句的循环次数的条件表达式,以及循环体对应的逻辑表达式的通项公式,生成程序语句对应的逻辑表达式。
本发明实施例提供的装置可以具体用于执行上述实施例五所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过根据程序语句的类型,如果程序语句的类型为循环语句,获取预先设定的循环体对应的逻辑表达式的通项公式,根据循环体对应的逻辑表达式的通项公式,确定程序语句的循环次数的条件表达式;程序语句的循环次数的条件表达式,以及循环体对应的逻辑表达式的通项公式,生成程序语句对应的逻辑表达式。实现了类型为循环语句的程序语句的自动转化为对应的逻辑表达式。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种程序语句形式化转换的方法,其特征在于,包括:
获取待转换的程序语句对应的语法结构;
根据所述程序语句对应的语法结构,确定所述程序语句的类型;
根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式;
其中,所述程序语句对应的逻辑表达式用于表示所述程序语句的任意一个输出变量值与各输入变量值之间的关系;
所述根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式,包括:
如果所述程序语句的类型为组合语句,则所述程序语句包括至少两个子语句;
按照各子语句的执行顺序,将所述至少两个子语句划分为第三子语句和第四子语句,所述第三子语句在所述第四子语句之前;
生成所述第三子语句和所述第四子语句分别对应的逻辑表达式;
对所述第三子语句和所述第四子语句分别对应的逻辑表达式进行整合处理,生成所述程序语句对应的逻辑表达式;
其中,对所述第三子语句和所述第四子语句分别对应的逻辑表达式进行整合处理,生成所述程序语句对应的逻辑表达式,包括:
获取所述第三子语句对应的逻辑表达式中的各个子表达式构成的集合,得到所述第三子语句对应的关系集合Ω1;
获取所述第四子语句对应的逻辑表达式中的各个子表达式构成的集合,得到所述第四子语句对应的关系集合Ω2;
将与Ω2中的某一输入变量的变量名一致的Ω1中的输出变量对应的子表达式带入到Ω2中,得到的新的关系集合Ω2′;
将Ω1和Ω2′中变量名一致的输出变量合并到Ω2′,并将与Ω2′中所有输出变量的变量名均不一致的Ω1中的输出变量添加到合并后的Ω2′,得到所述程序语句对应的关系集合Ω3;
根据所述程序语句对应的关系集合Ω3,确定所述程序语句对应的逻辑表达式。
2.根据权利要求1所述的方法,其特征在于,所述根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式,包括:
如果所述程序语句的类型为赋值语句,所述程序语句包括一个输出变量和一个输入变量,根据公式(1),生成所述程序语句对应的逻辑表达式;
其中,x表示所述输出变量,表示所述输入变量,A表示将所述输入变量赋值为所述输出变量的谓词表达式。
3.根据权利要求2所述的方法,其特征在于,所述根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式,包括:
如果所述程序语句的类型为条件语句,则所述程序语句包括真值表达式、第一子语句和第二子语句;
获取所述程序语句的所述真值表达式、第一子语句和第二子语句;
分别根据所述第一子语句和所述第二子语句的类型,生成所述第一子语句和所述第二子语句对应的逻辑表达式;
根据公式(2),生成所述程序语句对应的逻辑表达式;
其中,表示所述真值表达式,r1表示所述第一子语句对应的逻辑表达式,r2表示所述第二子语句对应的逻辑表达式。
4.根据权利要求3所述的方法,其特征在于,所述根据所述程序语句的类型,生成所述程序语句对应的逻辑表达式,包括:
如果所述程序语句的类型为循环语句,则所述程序语句包括循环条件和循环体,所述循环体包括至少一个子语句;
获取预先设定的所述循环体对应的逻辑表达式的通项公式;
根据所述循环体对应的逻辑表达式的通项公式,确定所述程序语句的循环次数的条件表达式;
所述程序语句的循环次数的条件表达式,以及所述循环体对应的逻辑表达式的通项公式,生成所述程序语句对应的逻辑表达式。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取待转换的程序语句对应的语法结构,包括:
获取待转换的程序语句对应的BNF范式;
根据所述BNF范式,生成语法分析器;
通过所述语法分析器,生成所述程序语句对应的语法树。
6.一种程序语句形式化转换的装置,其特征在于,包括:
获取模块,用于获取待转换的程序语句对应的语法结构;
确定模块,用于根据所述程序语句对应的语法结构,确定所述程序语句的类型;
处理模块,用于根据各所述程序语句的类型,生成所述程序语句对应的逻辑表达式;
其中,所述程序语句对应的逻辑表达式用于表示所述程序语句的任意一个输出变量值与各输入变量值之间的关系;
所述处理模块还用于:
如果所述程序语句的类型为组合语句,则所述程序语句包括至少两个子语句;
按照各子语句的执行顺序,将所述至少两个子语句划分为第三子语句和第四子语句,所述第三子语句在所述第四子语句之前;
生成所述第三子语句和所述第四子语句分别对应的逻辑表达式;
对所述第三子语句和所述第四子语句分别对应的逻辑表达式进行整合处理,生成所述程序语句对应的逻辑表达式;
其中,对所述第三子语句和所述第四子语句分别对应的逻辑表达式进行整合处理,生成所述程序语句对应的逻辑表达式,包括:
获取所述第三子语句对应的逻辑表达式中的各个子表达式构成的集合,得到所述第三子语句对应的关系集合Ω1;
获取所述第四子语句对应的逻辑表达式中的各个子表达式构成的集合,得到所述第四子语句对应的关系集合Ω2;
将与Ω2中的某一输入变量的变量名一致的Ω1中的输出变量对应的子表达式带入到Ω2中,得到的新的关系集合Ω2′;
将Ω1和Ω2′中变量名一致的输出变量合并到Ω2′,并将与Ω2′中所有输出变量的变量名均不一致的Ω1中的输出变量添加到合并后的Ω2′,得到所述程序语句对应的关系集合Ω3;
根据所述程序语句对应的关系集合Ω3,确定所述程序语句对应的逻辑表达式。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
如果所述程序语句的类型为赋值语句,所述程序语句包括一个输出变量和一个输入变量,根据公式(1),生成所述程序语句对应的逻辑表达式;
其中,x表示所述输出变量,表示所述输入变量,A表示将所述输入变量赋值为所述输出变量的谓词表达式。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:
如果所述程序语句的类型为条件语句,则所述程序语句包括真值表达式、第一子语句和第二子语句;
获取所述程序语句的所述真值表达式、第一子语句和第二子语句;
分别根据所述第一子语句和所述第二子语句的类型,生成所述第一子语句和所述第二子语句对应的逻辑表达式;
根据公式(2),生成所述程序语句对应的逻辑表达式;
其中,表示所述真值表达式,r1表示所述第一子语句对应的逻辑表达式,r2表示所述第二子语句对应的逻辑表达式。
9.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
如果所述程序语句的类型为循环语句,则所述程序语句包括循环条件和循环体,所述循环体包括至少一个子语句;
获取预先设定的所述循环体对应的逻辑表达式的通项公式;
根据所述循环体对应的逻辑表达式的通项公式,确定所述程序语句的循环次数的条件表达式;
所述程序语句的循环次数的条件表达式,以及所述循环体对应的逻辑表达式的通项公式,生成所述程序语句对应的逻辑表达式。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述获取模块还用于:
获取待转换的程序语句对应的BNF范式;
根据所述BNF范式,生成语法分析器;
通过所述语法分析器,生成所述程序语句对应的语法树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611254956.XA CN106708595B (zh) | 2016-12-30 | 2016-12-30 | 程序语句形式化转换的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611254956.XA CN106708595B (zh) | 2016-12-30 | 2016-12-30 | 程序语句形式化转换的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708595A CN106708595A (zh) | 2017-05-24 |
CN106708595B true CN106708595B (zh) | 2019-09-20 |
Family
ID=58904659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611254956.XA Active CN106708595B (zh) | 2016-12-30 | 2016-12-30 | 程序语句形式化转换的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708595B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110333871B (zh) * | 2019-07-08 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种验证方法、装置和存储介质 |
CN114356294B (zh) * | 2021-12-21 | 2023-07-14 | 华东师范大学 | 一种基于fqltl语言的实例生成方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292937B1 (en) * | 1998-07-22 | 2001-09-18 | Matsushita Electric Industrial Co., Ltd. | Program conversion device for translating an object-oriented language source program |
CN101876941A (zh) * | 2009-12-22 | 2010-11-03 | 北京航空航天大学 | 一种c语言核心语句转换到一阶公式的方法 |
-
2016
- 2016-12-30 CN CN201611254956.XA patent/CN106708595B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6292937B1 (en) * | 1998-07-22 | 2001-09-18 | Matsushita Electric Industrial Co., Ltd. | Program conversion device for translating an object-oriented language source program |
CN101876941A (zh) * | 2009-12-22 | 2010-11-03 | 北京航空航天大学 | 一种c语言核心语句转换到一阶公式的方法 |
Non-Patent Citations (1)
Title |
---|
一种基于语境的程序正确性验证算法的研究与实现;尹顺顺等;《全国抗恶劣环境计算机第二十四届学术年会》;20150720;参见第300页第2、4、5段,第301页第1、2段 * |
Also Published As
Publication number | Publication date |
---|---|
CN106708595A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704265B (zh) | 一种面向业务流可配置的规则生成方法 | |
Hoffmann et al. | Automatic static cost analysis for parallel programs | |
Hoffmann et al. | Multivariate amortized resource analysis | |
CN107644323B (zh) | 一种面向业务流的智能审核系统 | |
US8893102B2 (en) | Method and system for performing backward-driven path-sensitive dataflow analysis | |
de Moura et al. | Proofs and Refutations, and Z3. | |
Claessen et al. | Generating constrained random data with uniform distribution | |
US12039305B2 (en) | Method for compilation, electronic device and storage medium | |
CN106708595B (zh) | 程序语句形式化转换的方法及装置 | |
US9367307B2 (en) | Staged points-to analysis for large code bases | |
US20110271265A1 (en) | Method of automatic generation of executable code for multi-core parallel processing | |
Trojahner et al. | Dependently typed array programs don’t go wrong | |
Niemetz et al. | Towards satisfiability modulo parametric bit-vectors | |
Marmsoler et al. | Conformance testing of formal semantics using grammar-based fuzzing | |
Johansson et al. | Case-analysis for rippling and inductive proof | |
US8495595B2 (en) | Method of selecting an expression evaluation technique for domain-specific language compilation | |
Bouabana-Tebibel et al. | An interleaving semantics for UML 2 interactions using Petri nets | |
Prokesch et al. | Towards automated generation of time-predictable code | |
Banach | Core hybrid event-b iii: Fundamentals of a reasoning framework | |
CN114444032A (zh) | 自定义规则混淆代码的方法及装置 | |
Kleine et al. | Llvm2csp: Extracting csp models from concurrent programs | |
Qin et al. | SMT-based generation of symbolic automata | |
Jakobsson | Automatic cost analysis for imperative bsp programs | |
Sinn | Automated complexity analysis for imperative programs | |
Stump et al. | Termination casts: A flexible approach to termination with general recursion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |