程序生成装置制造方法及图纸

技术编号:2866738 阅读:160 留言:0更新日期:2012-04-11 18:40
一种程序生成装置,其特征在于:具备:    条件表达式生成装置,接受程序的控制结构作为输入,用线性规划法来生成可使该控制结构中的所有路径通过的、插入该控制结构条件表达式插入部分中的多个条件表达式;    初始值生成装置,对所述控制结构中的所有路径中每个路径生成使该路径通过用的所述多个条件表达式中包含的变量的初始值;和    程序生成装置,根据所述控制结构、所述多个条件表达式和所述初始值,生成测试程序。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及程序生成装置,尤其是涉及生成用于测试编译器用的测试程序的程序生成装置。
技术介绍
在制作编译器时,必需测试编译器是否正常工作。因此,以往提案有自动生成编译器的测试程序的装置(例如日本特开平5-342054号公报)。下面,说明以往的测试程序生成装置的测试程序生成方法的一例。在以往的测试程序生成装置中,根据由后述的MLSL(中级脚本语言middle level script language)描述的程序(下面称为。)来生成作为目标的编译器用测试程序。附图说明图10是表示现有的测试程序生成装置的编码器测试程序制作处理的流程图。测试程序生成装置,从图11(a)所示MLSL程序52中检索MLSL程序52通过的路径(S72)。MLSL是记述高级语言程序的控制结构用的语言。因此,在MLSL程序52中不记载变量或公式等。测试程序生成装置,如图11(b)所示MLSL程序54那样解释MLSL程序52。即,符号A-F表示执行程序时可通过的通过位置,解释为通过位置A-F中记载等赋值语句或函数等。另外,解释为条件表达式1和2中描述由不等式构成的条件表达式。图12是表示MLSL程序54可通过的路径一览的图。即,MLSL程序54可通过3个路径。例如,在条件表达式1和2双方均为真的情况下,如路径序号1所示,MLSL程序54按A、B、C、D、F的顺序通过通过位置。接着,测试程序生成装置随机生成应插入测试程序中的条件表达式(S74)。图11(c)示出包含随机生成的条件表达式的程序一例。这里,生成所谓的不等式,作为条件表达式1,生成所谓的不等式,作为条件表达式2。之后,测试程序生成装置随机生成包含在被生成条件表达式中的变量的初始值(S76),生成测试程序(S78)。图11(d)中示出包含随机生成的初始值的测试程序的例2。作为变量x、y和z的初始值,生成分别赋值2、3和4的函数init_val1()。另外,在编译器的测试函数func1()的初始,调用函数init_val1(),设定变量x、y和z的初始值。因此,通过执行函数init_val1(),分别对变量x、y和z设定2、3和4,所以条件表达式1和条件表达式2分别变为真。因此,若执行函数func1(),则变为通过图12所示的路径序号1的路径。接着,测试程序生成装置判断是否生成通过可通过的所有路径的测试程序(S80)。在判断为生成通过所有路径的测试程序的情况下(S80为是),结束处理。在判断为未生成通过所有路径的测试程序的情况下(S80为否),为了生成通过余下路径的测试程序,控制返回到初始值生成处理(S76)。如上所述,测试程序生成装置可生成通过所有路径的测试程序。但是,现有测试程序生成装置存在的问题是直到生成完通过所有路径的测试程序要花费时间。以下说明该有关问题的理由。图13是表示在初始值生成处理(图10的S76)生成的变量x、y和z的初始值、与此时测试程序通过路径的路径序号的关系的图。例如,在设定为初始值的情况下,测试程序通过图12所示路径序号1的通过路径。如图13所示,在随机发生初始值的情况下,因为可重复生成通过同一路径(例如路径序号1的路径)的初始值,所以直到生成完通过所有路径的测试程序要花费时间。另外,还存在根据所生成的条件表达式而不能生成通过所有路径的测试程序的问题。图14是表示包含这种条件表达式的测试程序一例的图。在图14所示程序中,不可能生成条件表达式1和条件表达式2双方均为真的变量x的初始值。因此,不可能使图12所示路径序号1的通过路径通过。本专利技术是鉴于这种现有的问题而提出的,其目的在于提供一种可在短时间内生成通过所有路径的程序的程序生成装置。而且,本专利技术的另一目的在于提供一种可确实生成能通过所有路径的测试程序的程序生成装置。专利技术公开根据本专利技术的程序生成装置具备条件表达式生成装置,接受程序的控制结构作为输入,用线性规划法来生成可使该控制结构中的所有路径通过的、插入该控制结构条件表达式插入部分中的多个条件表达式;初始值生成装置,对所述控制结构中的所有路径中每个路径生成使该路径通过用的所述多个条件表达式中包含的变量的初始值;和程序生成装置,根据所述控制结构、所述多个条件表达式和所述初始值,生成测试程序。根据该结构,使用线性规划法来生成可使控制结构中能通过的所有路径通过的多个条件表达式。因此,可在短时间内生成通过所有路径的程序。另外,在执行程序时,可确实通过所有路径。最好是,所述初始值生成装置使用线性规划法来对所述控制结构中的所有路径中每个路径生成使该路径通过的所述多个条件表达式中包含的变量的初始值。这样,初始值生成装置使用线性规划法,对每个路径生成多个条件表达式中包含的初始值。因此,无论几次都不会生成使相同路径通过的初始值。另外,通过条件表达式生成装置的处理,保证存在使各路径通过的初始值。因此,可在短时间内生成通过所有路径的程序。根据本专利技术其它方面的程序生成装置具备条件表达式生成装置,接受程序的控制结构作为输入,生成可使该控制结构中的所有路径通过的、插入该控制结构条件表达式插入部分中的多个条件表达式;初始值生成装置,用线性规划法来对所述控制结构中的所有路径中每个路径生成使该路径通过用的所述多个条件表达式中包含的变量的初始值;和程序生成装置,根据所述控制结构、所述多个条件表达式和所述初始值,生成测试程序。根据该结构,使用线性规划法,对每个路径生成多个条件表达式中包含的初始值。因此,无论几次都不会生成使相同路径通过的初始值,可在短时间内生成通过所有路径的程序。本专利技术不仅可实现为以上的程序生成装置,也可实现为将该部件设为步骤的程序生成方法,或实现为使程序生成方法在计算机中执行的程序。不用说,这种程序可经CD-ROM(致密盘-只读存储器Compact Disc-Read Only Memory)等记录媒体或因特网等传输媒体来配送。附图的简要说明图1是有关本专利技术实施例的程序生成装置的外观图。图2是表示有关本专利技术实施例的程序生成装置的功能结构的框图。图3是测试程序生成装置执行的处理的流程图。图4是说明由MLSL程序生成测试程序的过程图。(a)和(b)是表示MLSL程序一例的图。(c)是表示生成条件表达式后的程序一例的图。(d)是表示生成初始值后的测试程序一例的图。图5是表示图4(b)所示MLSL程序可通过路径的一览图。图6是详细说明条件表达式生成处理的流程图。图7是说明在由MLSL程序生成测试程序的过程中、条件表达式生成失败例子的图。(a)和(b)是表示MLSL程序一例的图。(c)是表示生成条件表达式的替补之后的程序一例的图。图8是表示图7(b)所示MLSL程序可通过的路径一览的图。图9是详细说明初始值生成处理的流程图。图10是表示现有测试程序生成装置的编译器测试程序制作处理的流程图。图11是说明由现有测试程序生成装置根据MLSL程序生成测试程序的过程图。(a)和(b)是表示MLSL程序一例的图。(c)是表示生成条件表达式后的程序一例的图。(d)是表示生成初始值后的测试程序一例的图。图12是表示图11(b)所示MLSL程序可通过的路径一览的图。图13是表示由现有测试程序生成装置生成的变量x、y和z的初始值、与此时测试程序通过路径的路径序号的关系的图。图14是本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:小川一瓶子岳人高山秀一赵琛
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:

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

1