JP2006031331A - プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム - Google Patents

プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム Download PDF

Info

Publication number
JP2006031331A
JP2006031331A JP2004208278A JP2004208278A JP2006031331A JP 2006031331 A JP2006031331 A JP 2006031331A JP 2004208278 A JP2004208278 A JP 2004208278A JP 2004208278 A JP2004208278 A JP 2004208278A JP 2006031331 A JP2006031331 A JP 2006031331A
Authority
JP
Japan
Prior art keywords
information
program
additional information
analysis
storage unit
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.)
Pending
Application number
JP2004208278A
Other languages
English (en)
Inventor
Reiko Yoshimura
礼子 吉村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004208278A priority Critical patent/JP2006031331A/ja
Publication of JP2006031331A publication Critical patent/JP2006031331A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 従来はプログラムに対して付加情報、例えばデバッグコードを挿入する場合、プログラムの構成を深く理解して挿入していた。
【解決手段】 この発明のプログラム変換実行計算機101は、第1のプログラムの文法定義情報毎の文法定義番号に対応させて第1のプログラムに挿入する付加情報を記憶する付加情報記憶部107と、文法定義番号に対応する対応構文情報を記憶した構文解析情報記憶部104aと、構文解析情報記憶部104aが記憶した対応構文情報を用いてプログラムを解析して解析結果情報を生成して出力するとき、解析に使用した対応構文情報の文法定義番号と同じ文法定義番号の付加情報を解析結果情報に含めて出力する解析部14と、解析結果情報から付加情報が挿入された第2のプログラムを生成する変換部106を備えた。
【選択図】 図1

Description

この発明は、プログラムを作成した場合に正しく動作するかをチェックするためのプログラムのデバッグ機能に関する。
作成したプログラムが適切に動作するか否かを確認するためには、プログラム中にデバッグコードを挿入したり、コンパイル時にデバッグ機能を動作させるための情報を埋め込むことにより、プログラムの実行時にデバッグ用の情報を出力させたり、プログラムの動作をブレークさせてプログラムの実行状況を取得することにより行っていた。
例えば、特開2000−207246(特許文献1)では、プログラムを解析してプログラムの所望の注目箇所についてログ出力命令をプログラム中に挿入することにより、実行過程が記録されてデバッグ可能となる。
特開2000−207246号公報
従来の技術では、プログラム中へのデバッグコードの挿入において、ユーザが手動でデバッグコードを挿入する場合、デバッグコードの挿入位置を決めるために、ユーザはプログラムの構成を深く理解する必要があった。また、さらに挿入した位置が適切かどうかは実行しないと確認できないため、プログラムのデバッグ環境を整えるための時間を必要とする作業であった。
さらに、特開2000−207246(特許文献1)では、自動的にデバッグ情報としてログ出力命令をプログラム中に挿入することが可能である。ログ出力命令を挿入するための指定には、プログラムにおける変数・関数・宣言文などを対象にした識別子に対して行う。しかし、識別子の値の変化による条件指定も可能であるが、識別子以外には指定が不可能であった。したがって、プログラムの流れに従ってデバッグコードを出力するなど、デバッグコードの挿入位置を、全体を対象として細かな単位で制御することができないという問題点があった。
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、その目的は、プログラムに対して、自動的にデバッグコードを挿入して、効率的にプログラムのデバッグを可能とするプログラム変換実行計算機を提案することである。また、プログラムに対して、自動的にデバッグコードを挿入して、効率的にプログラムのデバッグを可能とするコンピュータによって実行されるプログラムを提供することにある。
この発明に係るプログラム変換実行計算機は、所定のプログラムの構文規則に基づいて定義された第1のプログラムに対して所定の付加情報を挿入して第2のプログラムに変換するプログラム変換実行計算機において、所定のプログラムの構文規則に基づく文法の種類を定義する文法定義情報と、上記文法定義情報を識別する文法定義識別情報と、上記文法定義情報に対応する構文を定義する対応構文情報とを構文解析情報として記憶する構文解析情報記憶部と、上記付加情報と付加情報を挿入する位置情報とを対応して記憶する付加情報記憶部と、上記第1のプログラムを入力して、入力した第1のプログラムを上記構文解析情報記憶部が記憶した構文解析情報を用いて解析して解析結果情報を生成するとともに、解析に使用した構文解析情報の文法定義識別情報に基づいて上記付加情報記憶部が記憶する位置情報を検索して、上記文法定義識別情報と適合する位置情報を検索できた場合に付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、上記文法定義識別情報と適合する位置情報を検索できなかった場合に、上記解析結果情報を出力する解析部と、上記解析部が出力した解析結果情報を入力して、入力した解析結果情報から第2のプログラムを生成するプログラム変換部とを備えたことを特徴とする。
この発明は、プログラム構成については詳細に把握している必要もないため、変換元のプログラムの構成について知識がない場合でも、解析作業を行わずにデバッグ情報の挿入が可能である。このことは、プログラムの作成者でないものがプログラムのテストを行う際に、プログラムの処理内容を深く理解していなくても容易にプログラムのデバッグ情報を挿入して、テスト用のプログラムに変換できる。また、だれがテスト用のプログラムを作成しても変換もとのプログラムが同じであれば、同じテスト用プログラムに変換できる。このため、誰がプログラムテストを行っても一定の水準のプログラムテストを行うことができる効果がある。
実施の形態1.
この実施の形態では、プログラム変換実行計算機がプログラムAを入力して、プログラムAに対して付加情報(デバッグ情報は付加情報の一例)を挿入して、プログラムAをプログラムA’に変換する一例を説明する。なお、プログラムAは第1のプログラムの一例であり、プログラムA’は第2のプログラムの一例である。また、プログラムAとプログラムA’とはそれぞれ、同一のプログラム言語の構文規則に基づいて定義されるものとする。
図1は、この発明の実施の形態1におけるプログラム変換実行計算機の構成を示す機能ブロック図である。図1において、プログラム変換実行計算機101は、プログラムAに対して付加情報を挿入してプログラムA’へと変換する。プログラムA102は、変換元の第1のプログラムの一例、プログラムA’103は、変換後の第2のプログラムの一例である。解析部14は、プログラム解析部104と付加情報解析部108とを備える。記憶部15は、構文解析情報記憶部104aと付加情報記憶部107とを備える。構文解析情報記憶部104aは、プログラムを解析する際に参考とする構文解析情報を記憶する。図4に構文解析情報記憶部104aが記憶する構文解析情報の一例を示す。図4において構文解析情報は、プログラムの構文規則に基づく文法の種類を定義する文法定義情報202と、文法定義情報202を識別するために文法定義情報202に対応してつけられた文法定義番号201と、文法定義情報202に対応する構文を定義する対応構文情報203とを有している。図5に付加情報記憶部107が記憶する付加情報の一例を示す。デバッグ情報は付加情報の一例であり、図5において付加情報記憶部107は、変換元のプログラムに挿入する付加情報206と、付加情報206に対応させて付加情報を挿入する位置情報として、構文解析情報記憶部104aが記憶する文法定義番号201と一致している文法定義番号201と文法定義番号201に対して例えば前に挿入する指定や後に挿入する指定を行なう出力位置204とを記憶する。
付加情報206は文法定義に対応して付加を行なう情報の定義である。そのうち出力位置204は、対応する構文に対して「前」或いは「後」というように出力位置を指定する。出力情報205は、デバッグコードとして出力する情報を指定する。例えば指定した変数の値を出力する場合には「Val()」と定義し、変数の文字列をそのまま出力する場合には「Str()」で定義する。例えば文法定義番号201が「17」の場合には、代入式の左辺となる「lhs」に対応する値をデバッグコードとして出力するという指定内容である。この指定内容では、変換後のプログラムには「Log(lhs);」というように、lhsの値を出力するソースコードが追加される。「lhs」の文字列出力の場合には「Str(lhs)」と定義され、変換後のプログラムには「Log(“lhs”);」と追加される。
プログラム解析部104は、例えばyacc/lexを使用してあらかじめ生成された構文解析プログラムを図1には図示しないプログラム変換実行計算機101が備えるメモリから読み出して実行させ、変換元となるプログラムAを読み込んで解析して解析析結果情報を生成するとともに、付加情報解析部108からプログラムAに追加する付加情報を受け取り、付加情報を解析結果情報に含めて出力する。なお、付加情報はない場合があり、この場合には解析結果情報のみを出力する。付加情報解析部108は、付加情報記憶部107から付加情報と位置情報とを読み込んでプログラム解析部104へ情報を提供する。プログラム変換部106は、プログラム解析部104が出力した解析結果情報を入力して目的となるプログラムA’へ変換して出力する。
プログラム解析部104を詳しく説明する。プログラム解析部104すなわち解析プログラムは、プログラムA102を読み込んで構文解析情報記憶部104aが記憶した構文解析情報に従って構文解析を行い内部的に情報を保持する。構文解析情報は図4のように例えば「代入文」、「if文」、「else文」等のプログラムソースに記述するソースコードに対応するように定義する。このため、プログラム解析部104は、プログラムA102の有するソースコードごとに解析を行いながら解析結果情報を出力する解析手段である。
また、付加情報解析部108を詳しく説明すると、プログラム解析部104が解析を行っているプログラムAのソースコードに対応する文法定義番号をプログラム解析部104から受け取り、付加情報記憶部107を検索してその文法定義番号に対応する付加情報と位置情報とを取得する。取得した付加情報と位置情報とをプログラム解析部104に出力する。
プログラム解析部104は、付加情報解析部108から位置情報と付加情報とを入力して、位置情報に従い解析結果情報に付加情報を挿入する。
図1のプログラム変換実行計算機101は、図2に示す構成をした計算機システムである。図2において、プログラム変換実行計算機101は、システムユニット200、CRT(Cathode Ray Tube)表示装置141、キーボード(K/B)142、マウス143、コンパクトディスク装置(CDD)186、プリンタ装置187を備え、これらはケーブルで接続されている。
図3は、実施の形態1におけるプログラム変換実行計算機のハードウェア構成図である。図3において、プログラム変換実行計算機101は、プログラムを実行するCPU(Central Processing Unit)137を備えている。CPU137は、バス138を介してROM139、RAM140、通信ボード144、CRT表示装置141、K/B142、マウス143、FDD(Flexible Disk Drive)145、磁気ディスク装置146、CDD186、プリンタ装置187と接続されている。RAMは、揮発性メモリの一例である。ROM、FDD、CDD、磁気ディスク装置、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。例えば、K/B142、FDD145などは、情報入力部の一例である。また、例えば、CRT表示装置141などは、出力部の一例である。磁気ディスク装置146には、オペレーティングシステム(OS)147、ウィンドウシステム148、プログラム群149、ファイル群150が記憶されている。プログラム群は、CPU137、OS147、ウィンドウシステム148により実行される。
上記プログラム群149には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPUにより読み出され実行される。ファイル群150には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」、「〜の解析結果」として説明するものが、「〜ファイル」として記憶されている。また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ROM139に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
図6は、この実施の形態のプログラム変換実行計算機の動作を示すフローチャート図である。図6では、プログラムAを変換する場合に付加情報を読み込んで、プログラムAに挿入すべき付加情報を判定して、判定の結果に基づいて挿入すべき付加情報をプログラムAに挿入してプログラムA’を生成する処理の流れを説明する。このフローチャートを用いてプログラムA102からプログラムA’103へ変換する流れを示す。なお、S101の処理を行なう前にS100の前準備処理で、構文解析情報記憶部104aへの構文解析情報の登録処理と、付加情報記憶部107への付加情報と位置情報との登録処理とを図2の入力装置を用いて行なう。或いは、他の計算機システムで作成したものをFDD145やCDD186に記憶させてこのプログラム変換実行計算機101で使用することも可能である。
プログラム解析部104がプログラムA102の全ステップを読み込んで、図2のメモリ(バッファでも良い)に保持する(S101)。そして、プログラム解析部104にて、プログラムA102のソースコードについて1ステップずつ、そのステップの構文について構文解析情報記憶部104aに記憶した構文解析情報に従って解析して、解析結果情報を生成する(S102)。次にS102で解析を行った構文に対して付加情報が定義されているかをチェックする(S103)。このチェックは付加情報解析部108が行なう。付加情報解析部108は、S102でプログラム解析部104が解析に使用した構文解析情報の文法定義番号を受け取り、受け取った文法定義番号が付加情報記憶部107に記憶されているか検索する。これは、構文解析情報記憶部104aと付加情報記憶部107とは互いに文法定義番号を記憶しているためである。付加情報解析部108は、同じ文法定義番号を検索できた場合には(S103,Yes)、その文法定義番号に対応する付加情報と位置情報とを取得して、プログラム解析部104に渡す。プログラム解析部104は、付加情報と位置情報とを受け取り、付加情報を付加情報の意味する内容に変換して位置情報の出力位置に従って解析結果情報に変換した付加情報を含めて出力する(S105)。付加情報の意味する内容に変換するとは、例えば図5の文法定義番号が「17」の「Log Val(lhs)」は、指定した変数の値を出力するという指定なので「Log(lhs);」に変換する。そして、出力位置が「後」であるので、文法定義番号「17」の「代入文」の解析結果情報の後にこの「Log(lhs);」をS102で生成した解析結果情報に含めてファイル群150に出力する。S103のチェックで、付加情報がなければS102で生成した解析結果情報をファイル群150へ出力する(S104)。プログラムA102の全ステップについて解析を行ったかどうかチェックを行う(S106)。全ステップの解析が終了していない場合は(S106,Yes)、S102より処理を繰り返す。全ステップの解析を終えた場合(S106,No)、プログラム変換部106は、ファイル群150に出力した解析結果情報(この解析結果情報は付加情報を含む場合と含まない場合とがある)から解析結果情報が挿入されたプログラムA’を生成して(S110)、ファイル群150に出力する(S109)。
上記したS100の構文解析情報記憶部への登録は、構文解析情報記憶工程に対応し、付加情報記憶部への登録は、付加情報記憶工程に対応する。また、S101〜S106は、解析工程に対応し、S109,S110はプログラム変換工程に対応する。
また、各工程を実行するプログラムはプログラム群149に記憶され、このプログラムは、構文解析情報記憶工程を実行する構文解析情報記憶処理と、付加情報記憶工程を実行する付加情報記憶処理と、解析工程を実行する解析処理と、プログラム変換工程を実行するプログラム変換処理とを有している。
以上の処理がプログラム変換実行計算機101による、プログラムA’の自動生成処理である。例えば、図7に示すプログラムAをプログラム解析部104が解析すると、代入式20の後に付加情報を挿入した解析結果情報を生成する。そして、この生成された解析結果情報からプログラム変換部106が図8に示すプログラムA’103を生成する。図8のプログラムA’103は、代入式20の後に「Log(X)」が挿入されている。このように、プログラム変換実行計算機101は、プログラムAからプログラムA’を自動生成する。
次に、上記したyacc/lex(「yacc」は「yet another compiler−compiler」の略称、「lex」は「a lexical analyzer generator」の略称)は、プログラムジェネレータの1つであり、構文解析をするプログラムを生成するものである。ここでは、yacc/lexを使用してあらかじめ生成された構文解析プログラムについて、簡単にその一例を説明する。図9は、IF文に関連する文法定義の例を示す図である。図9において、文法定義は、文法定義情報202と対応構文情報203とを有する。図9の文法定義からyacc/lexを使用して構文解析プログラムを作成すると、図10、図11のような内容のプログラムが作成される。図10の「Nodep」で示される構造体は、解析した結果の情報を保持する処理を定義するものであり、図11に「Nodep」に対応する解析結果情報を保持するプログラムを示す。このプログラム変換実行計算機101のプログラム解析部104は、図10,図11に示したような解析プログラムを使用して、プログラムAを解析する。図12は、プログラムAを解析して生成した解析結果情報の一例を示す図である。
以上述べてきたように本実施例によれば、プログラム変換を行う際に、変換対象となるプログラムを解析する際に使用する構文解析情報に対応して、プログラムに挿入する情報の定義を行う。また、プログラムの解析時に挿入する位置を取得し、変換時に挿入する処理のソースコードを同時に組み込むことによって、デバッグ機能をプログラムに追加することを容易に実現する。また、プログラム構成については詳細に把握している必要もないため、変換元のプログラムの構成について知識がない場合でも、解析作業を行わずにデバッグ情報の挿入が可能である。このことは、プログラムの作成者でないものがプログラムのテストを行う際に、プログラムの処理内容を深く理解していなくても容易にプログラムのデバッグ情報を挿入して、テスト用のプログラムに変換できる。また、だれがテスト用のプログラムを作成しても変換もとのプログラムが同じであれば、同じテスト用プログラムに変換できる。このため、誰がプログラムテストを行っても一定の水準のプログラムテストを行うことができる効果がある。
実施の形態2.
この実施の形態では、第1のプログラムと第2のプログラムとがそれぞれ異なるプログラム言語である場合について、プログラム変換実行計算機の構成、動作を説明する。
図13は、実施の形態2のプログラム変換実行計算機の構成を示すブロック図である。図13のプログラム変換実行計算機101は、変換元のプログラムAのプログラム言語と、変換後のプログラムBのプログラム言語とが異なるために、中間言語記憶部105を備える点で、図1のプログラム変換実行計算機と異なる。中間言語記憶部105は、異なるプログラム言語に共通の形式に変換された共通形式情報を記憶する共通形式情報記憶部の一例である。プログラム解析部104は、解析結果情報をそのまま出力するのではなく、プログラムAのプログラム言語とプログラムBのプログラム言語との間で共通の形式に変換して、変換後の共通形式情報を中間言語記憶部105に出力する点が実施の形態1と異なる。また、プログラム変換部106は、中間言語記憶部105から共通形式情報を入力して、共通形式情報をプログラムB103aのプログラム言語で構文が定義されたソースコードに変換する。
実施の形態1との動作の違いを図14のフローチャートに従い説明する。図14では、S100〜S105、S109は図6のS100〜S105、S109と同じ処理を行い、S106の後、プログラム解析部104は、ファイル群150に出力した解析結果情報を読み出して共通の形式に変換して、中間言語記憶部105に共通形式情報を出力する(S107)。図15に中間言語記憶部105に出力した共通形式情報に変換した付加情報を含む解析結果情報の一例を示す。そして、プログラム変換部106は、中間言語記憶部105から共通形式情報を入力して、共通形式情報をプログラムB103aのプログラム言語に変換する(S108)。図16に共通形式情報からプログラムB103aのプログラム言語に変換した一例を示す。
以上のように、プログラム変換実行計算機は、異なるプログラム言語間でデバッグ情報を挿入することが可能である。このため、処理内容は同じであるが、異なるプログラム言語に変換する場合、自動でプログラム言語を変更できるとともに、変換後のプログラムに対してデバッグ情報が自動で挿入されるので、動作確認が容易に行える効果がある。
実施の形態3.
この実施の形態では、付加情報記憶部が記憶した付加情報のうちプログラムに挿入する付加情報の選択を行うプログラム変換実行計算機について説明する。
図17は、この実施の形態のプログラム変換実行計算機の構成を示すブロック図である。図17のプログラム変換実行計算機101は、付加情報記憶部107が記憶する付加情報のうち、プログラムA102に挿入する付加情報を選択する選択付加情報を記憶する選択付加情報記憶部401を備える点で、図1のプログラム変換実行計算機と異なる。
選択付加情報記憶部401について説明する。図18は、実施の形態3の選択付加情報記憶部401が記憶する選択付加情報の一例を示す。図18において、選択付加情報記憶部401は、選択付加情報502と、形式変換情報503と、出力情報504と、説明505とを有する。図19は、図18の選択付加情報に対応する付加情報記憶部107が記憶する付加情報の一例である。付加情報記憶部107は、図19のように1つの文法定義番号に対応して複数の付加情報(付加情報206と付加情報602)とを記憶する。また、出力位置は付加情報毎に対応させるため、図19の記載上は付加情報の一部となっているが、文法定義番号201と出力位置204の組と、文法定義番号201と出力位置603の組とのそれぞれを、位置情報と考える。選択付加情報記憶部401の選択付加情報502は、付加情報記憶部107の複数の付加情報、ここでは付加情報206(Log)と付加情報602(Comment)とのうち少なくともいずれか一方をプログラムA102に挿入する付加情報として選択するものを指定する。図18の例では、選択付加情報502には「Log」と「Comment」とが指定されている。すなわち、プログラムA102には「Log」と「Comment」とを挿入することを示している。
また、選択付加情報記憶部401の形式変換情報503は、プログラムA102に挿入する付加情報の構文を定義する。また、出力情報504は、付加情報記憶部107の出力情報205と出力情報604に対応するものであり、出力情報205や出力情報604に指定した情報を形式変換情報503で指定した構文で出力する際に置き換えの対応を定義する。例えば、形式変換情報503の「//comment」の「comment」部分は、出力情報504の「comment」によって出力情報604の「Comment」に指定した内容と関係付けられて「//Str(logical_expr)+“チェック”」と出力される。なお、「Str(logical_expr)+“チェック”」は、プログラム解析部104によってプログラムA102の中で使用している「Str(logical_expr)に対応する情報と置き換えられる。
図20は、プログラム変換実行計算機の動作を示すフローチャート図である。図20のS100〜S110は、図6のS100〜S110と同様の処理である。図20では、S101の後に、付加情報解析部108が選択付加情報記憶部401が記憶する選択付加情報502と一致する付加情報を付加情報記憶部107から検索して(S202)、一致する付加情報の出力情報205や出力情報604と、文法定義番号201と、出力位置204や出力位置603と、形式変換情報503と、出力情報504を取得してファイル群150に保持する(S203)。また、S103で構文解析情報の文法定義番号201と同じ文法定義番号の付加情報があるかどうかを確認する際には、付加情報解析部108は、付加情報記憶部107を検索するのではなく、S203でファイル群150に保持した情報を検索する。また、S103が「Yes」の時、プログラム解析部104は、付加情報206や付加情報602を形式変換情報503に基づいて変換して、変換したものを付加情報として解析結果情報に含めて出力する。
例えば、付加情報602の「Comment」に対するプログラム解析部104の処理を説明する。付加情報602の「Comment」は出力情報504の「Comment」と一致するため、この出力情報504の「Comment」に対する形式変換情報503の「//comment」に従い付加情報602の「Comment」に指定された文字列をcommentとして「//comment」で解析結果情報に含めて出力する。プログラムA102が図7であり、構文解析情報が図4であるとすると、出力情報604の「logical_expr+“チェック”」は、文法定義番号201「18」から図4の構文解析情報を見るとif文の条件式であることがわかる。この結果、「logical_expr」の部分の文字列に“チェック”の文字列を追加した文字列をCommentとしてif文の「前」に出力する。例えば図7のプログラムA102は「IF A = 1 THEN」であり対応構文情報203は「IF logical_expr THEN」あるので、「logical_expr」の部分には「A = 1」が対応していることがわかる。この結果、プログラム解析部104は、プログラムA102の「IF A = 1 THEN」の前に「//A = 1 チェック」を出力する。
以上、述べてきたように本実施例によれば、変換元のプログラムに挿入する付加情報を選択付加情報によって選択可能にした。このため、構文定義に対して複数の付加情報を定義しても、デバッグする内容やデバッグの条件によって、適宜付加情報を変更や追加の選択ができる。このため、デバッグする内容やデバッグの条件に対応して付加情報を用意する手間を省くことができる効果がある。また、プログラムAに付加情報を挿入してプログラムA’を作成して、プログラムA’を実行し、その後、実行した結果によって付加情報の内容を変更、追加して、別の新たなプログラムA’を容易に作成できる効果がある。
実施の形態4.
この実施の形態では、部品情報記憶部が記憶する部品情報を参照することを定義した付加情報を変換元のプログラムに挿入するプログラム変換実行計算機の一例を説明する。
図21は、この実施の形態のプログラム変換実行計算機の構成を示すブロック図である。図19において、プログラム変換実行計算機101が、実行部700と、部品情報記憶部701とを備えた点が図13のプログラム変換実行計算機101と異なる点である。実行部700は、プログラムB103aを実行する。また、部品情報記憶部701は、プログラムBを実行することによって参照される部品情報(部品群)を記憶する。すなわち、プログラムBには、部品情報記憶部701が記憶した部品情報を参照する付加情報が挿入されている。このプログラムBに挿入された部品情報を参照するための付加情報は、付加情報記憶部107及び選択付加情報記憶部401とにそれぞれ定義されている。
例えば、部品情報は、プログラム関数であり、部品情報を参照するための付加情報は、プログラム関数を呼び出すための構文を定義するものである。図22に、この実施の形態の付加情報記憶部107が記憶した付加情報の一例を示す。また、図23に、この実施の形態の選択付加情報記憶部401が記憶した選択付加情報の一例を示す。図22において、付加情報記憶部107は、付加情報902として「Time」を有する。「Time」は、部品情報記憶部701が記憶する時間測定部品702と関連しており、付加情報として時間測定部品702を呼び出すソースコードをプログラムAに挿入することを示している。挿入する位置は、文法定義番号201と出力位置とにより決定される。
また、図23において、選択付加情報記憶部401は、上記図18と同様に付加情報記憶部107が記憶する複数の付加情報からプログラムAに挿入する付加情報を選択する選択付加情報502を記憶する。選択付加情報502には、「Time」が定義されているので、付加情報902は付加情報解析部108によって選択される。また、出力情報504と出力情報904とは関連しており、出力情報804の「,」で区切られた値が出力情報904の「,」で区切れた変数に対応する。形式変換情報803の「getTimelog」は、部品情報記憶部701が記憶する時間測定部品702を呼び出す関数名であり、プログラム解析部104によって、「getTimelog」の後に記述された引数は、出力情報804と出力情報904との関連によって出力情報904の値に置き換えられてプログラムAに挿入される。以下に、時間測定部品702について詳細に説明する。
時間測定部品702は、説明805で定義されているように時間を測定するための部品である。時間測定部品702は部品情報記憶部701に記憶されており、プログラムBから呼び出されて実行される。この時間測定部品702は、「getTimelog(No,Info,record)」という引数(インタフェース)を持つ部品で「No=1、Info=start」「No=2、Info=end」で、設定されたプログラムが実行された時刻を測定し、「No=3、Info=Total」で、設定されたstartからendまでにかかった時間を計算する。3つめの引数recordには、時間測定のためのファイルに対して、取得した時間の出力を行うか否かを「True(出力する)」と「False(出力しない)」とのいずれかを指定する。この部品情報を用いたソースコードをプログラムAへ付加する方法は、選択付加情報記憶部401に定義している。図23によると、選択付加情報502に「Time」と設定し、形式変換情報503に、時間測定部品702の関数名と引数(インタフェース)とを「getTimelog(No,Info,record)」と定義している。また、出力情報504にこの関数の引数は「No,Info,record」の3つであることを設定する。
「Time」の選択付加情報502に対応する付加情報を図22に定義した。図22の付加情報902には「Time」が定義されており、この項目は文法定義番号201が「30」の項目に対して出力情報905、出力情報906、出力情報907の3つを設定している。文法定義番号201が「30」に対する文法定義情報202は図4より関数に対する処理であることがわかる。また、対応構文情報203は図4から「fname(expr_list)」である。プログラム解析部104が、図4に示した内容を記憶した構文解析情報記憶部104aと、図22に示した内容を記憶した付加情報記憶部107と、図23に示した内容を記憶した選択付加情報記憶部401とを使用して、図24のプログラムA1001を解析して付加情報を挿入し、図24のプログラムB1002を生成する処理を説明する。
プログラム解析部104は、解析した結果、プログラムAのソースコードに関数が定義されていることを判定すると、付加情報記憶部107が記憶する位置情報に従い付加情報を解析結果除情報に含める。プログラム解析部104は、プログラムA1001の構文情報1001aの「FuncA(par1,par2)」は関数の呼び出しを行う構文情報であるので、図22の付加情報902より構文情報1001aの「前」に「getTimelog(1,“start”,True);」を追加する。そして、構文情報1001aの「後」に「getTimelog(2,“end”,True);」を追加し、続けて「後」に「getTimelog(3,“Total”,True);」を追加する。プログラム変換部106は、上記した3つの付加情報が含まれた解析結果情報から、図24のプログラムB1002を生成する。
図24のプログラムB1002は、プログラム変換部106が生成して出力した。プログラムB1002では、「FuncA(par1, par2)」という関数の前には付加情報1002aの「getTimelog(1,“start”,True);」、関数の後には付加情報1002bの「getTimelog(2,“end”,True);」と、付加情報1002cの「getTimelog(3,“Total”,True);」が挿入されている。そしてプログラムB1002を実行部700が実行すると、時間測定ファイル1003がファイル群150に出力される。プログラムBには「start」「end」「Total」の3つの値を出力することが定義されているため、それぞれに対応してスタート出力1003a、エンド出力1003b、合計出力1003cの3つの値が出力される。
以上述べてきたように本実施例によれば、部品情報記憶部に部品情報を予め用意し、その部品情報を参照するための付加情報を付加情報記憶部に定義することにより、ユーザが用意した部品情報、例えば所定の処理を行わせる関数を、既存のプログラムの構成を解析する必要なく追加できる効果がある。また、任意の部品情報を付加情報として挿入することが可能なため、デバッグコード出力や性能検証のための時間測定などの目的だけでなく、プログラムAに対して新たに追加したい機能を部品情報として部品情報記憶部に記憶しておくとともに、付加情報記憶部にその部品情報を参照する付加情報を定義しておけば、新たな機能の追加を付加情報の挿入という形で容易に実現できる効果がある。また、実行部を備えることによって、生成したプログラムB(第2のプログラムの例)をすぐに実行できるので、新たに生成したプログラムBを検証できる効果がある。
実施の形態5.
この実施の形態では、付加情報の挿入を行うかどうかを判断する条件式を付加情報に対応して設定して、条件式を判断して付加情報を挿入するプログラム変換実行計算機の一例を説明する。
図25は、この実施の形態の付加情報記憶部107が記憶した付加情報の一例を示す図である。図26は、この実施の形態のプログラムAとプログラムBの一例を示す図である。なお、この実施の形態のプログラム変換実行計算機の構成は、図13であるものとする。図25において、付加情報記憶部107は、条件式情報1102を有する付加情報206を記憶する点が、図5,図19,図22と異なる点である。図25では、例えば、文法定義番号201が「18」に対応する付加情報が条件式情報を有している。条件式情報1102には「if(Str(logical_expr).Mid(“Sum”)>0)」と定義され、出力情報205には「Str(logical_expr)+“:TRUE”」と定義してある。プログラム解析部104は、条件式情報「if(Str(logical_expr).Mid(“Sum”)>0)」を以下のように解釈する。
図4によると、構文解析情報記憶部104aが記憶する文法定義番号「18」に対応する対応構文情報203は「IF logical_expr THEN」である。このため、プログラム解析部104は、プログラムA1201の「if」文の「logical_expr」に該当する部分の構文情報が文字列「“Sun”」と一致する文字列が含まれているか確認して、含まれていた場合に、このIF文の後にデバッグコードとして「Log」を使用して「logical_expr」に対応する部分の構文情報を文字列で出力するとともに文字列「“TRUE”」を続けて出力する付加情報をIF文の解析結果情報に含める。
図26のプログラムA1201には、2つのIF文がある。1つめは「IF A=0 THEN」であり、もうひとつは「IF Sum > 1000 THEN」である。上記したようにはプログラム解析部104は、「if(Str(logical_expr).Mid(“Sum”)>0)」と「Str(logical_expr)+“:TRUE”」とについて、「if」文の「logical_expr」に該当する部分の構文情報が文字列「“Sun”」と一致する文字列が含まれているか確認する。含まれていた場合に、このIF文の後にデバッグコードとして「Log」を使用して「logical_expr」に対応する部分の構文情報を文字列で出力するとともに文字列「“TRUE”」を続けて出力する付加情報をIF文の解析結果情報に含める、と解釈する。このため、1つ目の「IF A=0 THEN」には文字列「“Sum”」が含まれていないので、付加情報の挿入は行わない。2つ目の「IF Sum > 1000 THEN」には、文字列「“Sum”」が含まれているので、付加情報としてデバッグコード「条件式の文字列+“:TRUE”」を解析結果情報に含めて出力する。この結果、プログラム変換部106は、変換後のプログラムB1202に示すように「if (Sum > 1000)の後に、付加情報1202aの「Log(“Sum>1000”+“:TRUE”)」を出力する。
なお、図26のプログラムAとプログラムBとは異なるプログラム言語を使用して構文情報が定義されているが、同じプログラム言語であってもかまわない。
以上述べてきたように本実施例によれば、付加情報を挿入する場合に、付加情報を挿入するか否かを判定させる条件式情報を付加情報が有することによって、変換元の第1のプログラムの所定の種類の構文情報に対して付加情報を挿入するわけでなく、所定の種類の構文情報が条件式情報と適合する場合にだけ付加情報を挿入できる効果がある。これにより、さらに変換元の第1のプログラムに対して詳細な付加情報の挿入判定を容易に行うことができる効果がある。この結果、ユーザはプログラムの内容を把握することなく、プログラム変換実行計算機が付加情報の挿入の有無を自動的に判定して、無駄な付加情報の挿入を行わず、必要とする箇所に対してのみ挿入ができる効果がある。
実施の形態6.
この実施の形態では、第2のプログラムを異なるプログラム言語で複数生成するプログラム変換実行計算機について説明する。
図27は、この実施の形態のプログラム変換実行計算機のブロック図を示す図である。図27のプログラム変換実行計算機101は、プログラムA102からプログラム言語がそれぞれ異なるプログラムA’103とプログラムB103aとを生成する。このため、変換後のプログラムのプログラム言語を指定する変換後のプログラム言語の指定情報1304を入力する変換選択部1301を備える。また、プログラム変換部106は、プログラム言語毎に対応する変換部を第1の変換部1302、第2の変換部1303と複数有する。プログラム解析部104は、変換後のプログラム言語を意識することなく解析結果情報を共通の形式に変換して中間言語記憶部105に出力する。プログラム変換実行計算機101の備えるほかの要素は、図13と同様であるものとする。
以下に、変換後のプログラム言語の指定情報を入力する例について説明する。上記したように図27のプログラム変換部106は、プログラム言語毎の変換部を備えている。このため、変換選択部1301は、プログラム変換部106が備える変換部が変換できるプログラム言語をリスト形式でCRT表示装置141に表示し、リストの中から所定のプログラム言語をユーザに選択させる。また、選択は複数できるものとする。第1の変換部1302に対応するプログラム言語を選択されると、変換選択部1301はそのことをプログラム変換部106に通知する。プログラム変換部106は、この通知を受けて第1の変換部1302を起動する。起動された第1の変換部1302は、中間言語記憶部105から共通の形式に変換された解析結果情報を入力して、解析結果情報から自己の対応しているプログラム言語(プログラムBのプログラム言語)の構文規則に従いプログラムB103aを生成する。さらに、第2の変換部1303に対応するプログラム言語も同時に選択されていると、変換選択部1301はそのことをプログラム変換部106に通知する。プログラム変換部106は、この通知を受けて第2の変換部1303を起動する。起動された第2の変換部1303は、中間言語記憶部105から共通の形式に変換された解析結果情報を入力して、解析結果情報から自己の対応しているプログラム言語(プログラムA’のプログラム言語)の構文規則に従いプログラムA’を生成する。
プログラムA’とプログラムBとを生成する処理は、同時に並行処理で行っても、1つの生成処理が終了してから次の生成処理を開始しても、いずれでもかまわない。また、変換後のプログラム言語の指定情報は、1つであっても複数であってもかまわない。
図28に、この実施の形態のプログラムA,プログラムA’,プログラムBの一例を示す。図28からわかるように、プログラムA’,プログラムBとは、構文の定義の仕方が異なるだけで、処理の内容は同じである。プログラムA1101がプログラムA’へ変換された場合は、プログラムA’の文法やロジックなどは入力したプログラムAと同じである。プログラムAと同じプログラム言語のプログラムA’を生成する目的は、例えば付加情報を挿入することによってプログラムAに対して新たな処理機能を追加することである。これは、変換元のプログラムがもともと有していた処理機能の検証をデバッグコードなどの追加によって行うだけでなく、新たな機能の追加を行うことを可能にしている。また、デバッグコードや性能測定などを行う付加情報を挿入することによって同じプログラムについて変換前、変換後のプログラムをそれぞれ実行して実行結果を比較して、プログラムの検証を変換前と変換後とで容易に比較することが可能である。
また、プログラムA1101がプログラムBに変換する目的は、例えば、プログラムA1101を、プログラム変換実行計算機101とは異なる別の計算機で実行する場合に、別の計算機がプログラムBのプログラム言語で定義されたものでなければ実行することが出来ない場合、プログラムA1101をプログラムB1401に変換する。また、付加情報としてデバッグコードが挿入されるので、プログラム言語を変更しただけであっても変換後のプログラムについて実行結果を容易に検証できる。
また、プログラムA’1402とプログラムB1401とには、同じ内容の付加情報が同じ位置に挿入されている。このため、プログラムA’1402とプログラムB1401とをそれぞれ実行することによってプログラム言語の違いによる処理性能を比較することが容易に行える。
以上述べてきたように本実施例によれば、変換後のプログラムのプログラム言語を選択できるようにしたことによって、変換の目的、例えば、新たな処理機能を追加した変換後のプログラムを生成したり、プログラムの実行結果を検証するためにデバッグコードを挿入したプログラムに変換したり、異なる実行環境でプログラムを実行するためにプログラムを変換したり、プログラム言語の違いによってプログラムの処理性能を検証したり、等の目的に応じて変換後のプログラムを容易に生成できる効果がある。
実施の形態7.
この実施の形態では、挿入した付加情報が削除可能か否かを指定する削除情報を有する付加情報を記憶する付加情報記憶部を備えるプログラム変換実行計算機を説明する。
図29は、付加情報記憶部107が記憶する付加情報が削除情報を有する例を示した図である。また、この実施の形態のプログラム変換実行計算機は、図13,図27とのいずれの構成でもよい。図29において、付加情報206の「clear」は、削除情報1502であり、「○」が指定されている場合には付加情報が削除可能であることを示している。
図30は、削除情報を有する付加情報をプログラムAに挿入したプログラムBの一例を示した図である。プログラム解析部104は、プログラムA1201を解析した解析結果情報に付加情報を含める際に、削除情報1502に削除可能が設定されているか、或いは、削除不可能が設定されているか確認する。削除可能が設定されていることを確認できた場合には、削除可能であることを示すコメント情報を付加情報に含める。例えば、図29では、文法定義番号201が「17」と「18」にそれぞれ「○」が設定されている。文法定義番号201が「17」の文法定義情報は図4より代入式であることがわかり、文法定義番号201が「18」の文法定義情報は図4よりif文であることがわかる。このため、プログラム解析部104は、代入式の後に挿入する付加情報に削除可能なことを示すコメント情報を含めるとともに、if文の後に挿入する付加情報に削除可能なことを示すコメント情報を含める。すなわち、図30のプログラムB1601のように、代入式「A=A+1;」の後の「Log(“A:”+A);」に続けてコメント情報「//** Add No.17−1 cl」を挿入する。また、if文「if(Sum>1000)」の後の「Log(“Sum>1000”+“:TRUE”);」に続けてコメント情報「//** Add No.18−1 cl」を挿入する。コメント情報としてどのような形式にするか予め決めたフォームを記憶部15に記憶させておき、プログラム解析部104からアクセス可能にしておく。プログラム解析部104は、記憶部15に記憶されたフォームに基づいて削除可能なことを示すコメント情報を生成して付加情報に含める。
以上述べてきたように本実施例によれば、プログラムに挿入する付加情報が削除可能であるか否かを示す削除情報を付加情報に記憶するようにした。このため、付加情報をプログラムに挿入する際に、削除可能か否かを示すコメント情報を付加情報に含めることが可能になった。削除可能か否かを示すコメント情報を確認することよって、例えば、プログラムデバッグを目的に挿入された付加情報は、デバッグ作業が終了した後に、削除可能か否かを示すコメント情報を確認して、容易に削除を行うことができる効果がある。
実施の形態8.
この実施の形態では、プログラムに挿入された付加情報が削除可能であるか否かを自動的に判定して、削除可能である場合に、対応する付加情報をプログラムから削除するプログラム変換実行計算機の一例を説明する。
図31は、この実施の形態のプログラム変換実行計算機の構成を示すブロック図である。図31のプログラム変換実行計算機101は、付加情報削除部16を備える点が、図13,図27と異なる。他の要素は、図13,図27と同様である。付加情報削除部16は、プログラム中のコメント文を検索して、検索できたコメント文が付加情報を削除できることを示しているか否かを確認する。確認の結果、削除できることを示している場合には、そのコメント文がつけられている付加情報を削除する。すなわち、挿入した全ての付加情報に対して付加情報を削除できることを示すコメント情報が付けられていると、付加情報削除部16は全ての付加情報を削除することになり、変換後のプログラムを自動で変換前のプログラムにもどすことができる。
図31において、プログラム変換実行計算機101は、付加情報削除部16によって、自己が作成した付加情報を挿入したプログラムBを入力する。例えば、プログラムBは図32のプログラムB1601である。付加情報削除部16は、プログラムB1601から例えば「//**」で始まるコメント文を検索する。コメント文が「//**」で始まることは、構文規則で決まっていることであり、「//**」以外の文字や記号によってコメント文を表す場合には、付加情報削除部16は、「//**」以外の文字や記号を検索する。
「//**」で始まるコメント文を検索できたら、付加情報削除部16は、その検索できたコメント文の内容をさらに検索して、コメント文の中に削除可能であることを示す例えば「“cl”」という文字があるか否かを判定する。「“cl”」の文字を発見できた場合には、そのコメント文を含む1つのステップを削除する。付加情報削除部16は、プログラムB1601の全てのステップについてコメント文の検索と、「“cl”」の検索とを行う。例えば、図32のプログラムB1601では、付加情報削除部16は、はじめにコメント文1601aを検索する。コメント文1601aには図32に示すように「“cl”」が含まれている。このため、付加情報削除部16は、コメント文1601aとともにそのコメント文の前にある「Log(“A:”+A);」を削除する。続いて、付加情報削除部16は、コメント文1601bを検索する。コメント文1601bには図32に示すように「“cl”」が含まれている。このため、付加情報削除部16は、コメント文1601bとともにそのコメント文の前にある「Log(“Sum>1000”+“TRUE”);」を削除する。削除は、そのステップを実質的に消すことを指すが、「Log〜」の前に「//**」をつけてコメント文にして、そのステップを機能的に無効にしてもかまわない。
以上述べてきたように本実施例によれば、付加情報の挿入を伴ったプログラム変換の処理において、付加情報の挿入がプログラムの検証後にも必要であるか必要でないかを、検証用プログラムに変換する前に挿入する付加情報毎に決めておき、必要・不必要を示すコメント情報をその付加情報とともに一緒に検証用のプログラムに出力しておく。このことにより、検証を行って、挿入された付加情報が不必要になった時に、付加情報を一括して削除することが可能である。したがって、検証用プログラムから本番用プログラムへと移行する処理を、自動で実行することができ、本番用のシステム環境の準備を効率を良く行うことが出きる効果がある。
また、付加情報毎に削除可能、削除不可を示すので、例えば付加情報を挿入した目的がプログラムの検証目的の場合の付加情報と、新機能の追加が目的である付加情報とが1つのプログラム中に混在していても、前者の目的の付加情報には削除可能を示すコメント情報をつけて、後者の目的の付加情報には削除不可を示すコメント情報をつければ、検証終了時に前者の目的の付加情報だけを自動的に削除できる。このため、付加情報を挿入した目的に合わせて付加情報の削除を行える効果がある。
実施の形態9.
上記した実施の形態3〜8で説明した実施例では、変換元のプログラムと変換後のプログラムとのプログラム言語は、同じである場合と異なる場合とのいずれの場合にも実施可能である。例えば、実施の形態3,4では、変換元のプログラムと変換後のプログラムとのプログラム言語は、同じである場合を説明したが、異なる場合には、プログラム変換実行計算機101は中間言語記憶部105を備え、プログラム解析部104は、解析結果情報を中間言語記憶部105に出力し、プログラム変換部106は、中間言語記憶部105から解析結果情報を入力してプログラムBを生成する。また、例えば、実施の形態6,8では、変換元のプログラムと変換後のプログラムとのプログラム言語は、異なる場合を説明したが、同じ場合には、プログラム変換実行計算機101は、解析結果情報をプログラム変換部106に対して出力し、プログラム変換部106は、入力した解析結果情報からプログラムA’を生成する。
実施の形態1におけるプログラム変換実行計算機の構成を示すブロック図である。 図1のプログラム変換実行計算機101の計算機システムの構成を示す図である。 実施の形態1におけるプログラム変換実行計算機のハードウェア構成図である。 実施の形態1の構文解析情報記憶部104aが記憶する構文解析情報の一例を示す図である。 実施の形態1の付加情報記憶部107が記憶する付加情報の一例を示す図である。 実施の形態1のプログラム変換実行計算機の動作を示すフローチャート図である。 実施の形態1のプログラムAの一例を示す図である。 実施の形態1のプログラムA’の一例を示す図である。 IF文に関連する文法定義の例を示す図である。 図9に対応する構文解析プログラムの一例を示す図である。 図10に対応する解析結果情報を保持するプログラムの一例を示す図である。 プログラムAを解析して生成した解析結果情報の一例を示す図である。 実施の形態2のプログラム変換実行計算機の構成を示すブロック図である。 実施の形態2のプログラム変換実行計算機の動作を示すフローチャート図である。 実施の形態2の中間言語記憶部105に記憶した共通形式情報の一例を示す図である。 実施の形態2のプログラムBの一例を示す図である。 実施の形態3のプログラム変換実行計算機の構成を示すブロック図である。 実施の形態3の選択付加情報記憶部401が記憶する選択付加情報の一例を示す図である。 実施の形態3の付加情報記憶部107が記憶する付加情報の一例を示す。 実施の形態3のプログラム変換実行計算機の動作を示すフローチャート図である。 実施の形態4のプログラム変換実行計算機の構成を示すブロック図である。 実施の形態4の付加情報記憶部107が記憶する付加情報の一例を示す図である。 実施の形態4の選択付加情報記憶部401が記憶する選択付加情報の一例を示す。 実施の形態4のプログラムA,プログラムBの一例を示す図である。 実施の形態5の付加情報記憶部107が記憶する付加情報の一例を示す図である。 実施の形態5のプログラムA,プログラムBの一例を示す図である。 実施の形態6のプログラム変換実行計算機の構成を示すブロック図である。 実施の形態6のプログラムA,プログラムA’,プログラムBの一例を示す図である。 実施の形態7の付加情報記憶部が記憶する付加情報が削除情報を有する例を示した図である。 実施の形態7のプログラムA,プログラムBの一例を示す図である。 実施の形態8のプログラム変換実行計算機の構成を示すブロック図である。 実施の形態8のプログラムA,プログラムBの一例を示す図である。
符号の説明
14 解析部、15 記憶部、16 付加情報削除部、20 代入式、101 プログラム変換実行計算機、102,1001,1101,1201,2001 プログラムA、103,1402 プログラムA’、103a,1002,1202,1401,1601 プログラムB、104 プログラム解析部、104a 構文解析情報記憶部、105 中間言語記憶部、106 プログラム変換部、107 付加情報記憶部、108 付加情報解析部、137 CPU、138 バス、139 ROM、140 RAM、141 CRT表示装置、142 K/B、143 マウス、144 通信ボード、145 FDD、146 磁気ディスク装置、147 OS、148 ウィンドウシステム、149 プログラム群、150 ファイル群、186 CDD、187 プリンタ装置、188 スキャナ装置、100 シュミレーションシステム、200 システムユニット、201 文法定義番号、202 文法定義情報、203 対応構文情報、204,603,903 出力位置、205,604,904 出力情報、206,602,902 付加情報、310 FAX機、320 電話器、401 選択付加情報記憶部、500 ウェブサーバ、501 インターネット、502 選択付加情報、503 形式変換情報、504,804 出力情報、505,805 説明、700 実行部、701 部品情報記憶部、702 時間測定部品、902,1202a 付加情報、905〜907 出力情報、1001a 構文情報、1003 時間測定ファイル、1003a スタート出力、1003b エンド出力、1003c 合計出力、1102 条件式情報、1301 変換選択部、1302 第1の変換部、1303 第2の変換部、1304 変換後のプログラム言語の指定情報、1502 削除情報、1601a,1601b コメント文、2002 構文解析結果情報。

Claims (11)

  1. 所定のプログラムの構文規則に基づいて定義された第1のプログラムに対して所定の付加情報を挿入して第2のプログラムに変換するプログラム変換実行計算機において、
    所定のプログラムの構文規則に基づく文法の種類を定義する文法定義情報と、上記文法定義情報を識別する文法定義識別情報と、上記文法定義情報に対応する構文を定義する対応構文情報とを構文解析情報として記憶する構文解析情報記憶部と、
    上記付加情報と付加情報を挿入する位置情報とを対応して記憶する付加情報記憶部と、
    上記第1のプログラムを入力して、入力した第1のプログラムを上記構文解析情報記憶部が記憶した構文解析情報を用いて解析して解析結果情報を生成するとともに、解析に使用した構文解析情報の文法定義識別情報に基づいて上記付加情報記憶部が記憶する位置情報を検索して、上記文法定義識別情報と適合する位置情報を検索できた場合に付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、上記文法定義識別情報と適合する位置情報を検索できなかった場合に、上記解析結果情報を出力する解析部と、
    上記解析部が出力した解析結果情報を入力して、入力した解析結果情報から第2のプログラムを生成するプログラム変換部と
    を備えたことを特徴とするプログラム変換実行計算機。
  2. 上記第1のプログラムと第2のプログラムとは、異なるプログラム言語の構文規則に基づいて定義され、
    上記プログラム変換実行計算機は、上記解析結果情報と上記付加情報とを上記異なるプログラミング言語間で共通の形式に変換した共通形式情報として記憶する共通形式情報記憶部を備え、
    上記解析部は、上記解析結果情報を上記共通形式情報に変換して上記共通形式情報記憶部に出力し、
    上記プログラム変換部は、上記共通形式情報記憶部が記憶した共通形式情報から第2のプログラムを生成することを特徴とする請求項1記載のプログラム変換実行計算機。
  3. 上記付加情報記憶部は、上記位置情報に対応する上記付加情報を複数記憶し、
    上記プログラム変換実行計算機は、上記付加情報記憶部が記憶した複数の付加情報から上記第1のプログラムに挿入する付加情報を選択させる選択付加情報を記憶する選択付加情報記憶部を備え、
    上記解析部は、上記解析に使用した構文解析情報の文法定義識別情報に基づいて上記付加情報記憶部を検索する場合、上記選択付加情報記憶部が記憶する選択付加情報と一致する付加情報の位置情報が上記文法定義識別情報と適合するか否かを判定する
    ことを特徴とする請求項1または2記載のプログラム変換実行計算機。
  4. 上記選択付加情報記憶部は、上記選択付加情報に対応させて上記付加情報を所定の形式に変換させるための形式変換情報を記憶し、
    上記解析部は、上記付加情報を出力する場合、上記付加情報に基づいて上記選択付加情報記憶部を検索して上記付加情報に適合する上記選択付加情報に対応する形式変換情報を取得し、取得した形式変換情報に従い上記付加情報を変換し、変換した付加情報を上記解析結果情報に含めて出力する
    ことを特徴とする請求項3記載のプログラム変換実行計算機。
  5. 上記プログラム変換実行計算機は、上記第1のプログラムに挿入する所定の付加情報によって参照することを定義された部品情報を記憶する部品記憶部を備え、
    上記選択付加情報記憶部が記憶する形式変換情報は、上記付加情報を上記部品記憶部が記憶する部品情報を参照する形式に変換するための部品参照情報を有し、
    上記解析部は、上記付加情報を上記解析結果情報に含めて出力する場合、上記付加情報を上記形式変換情報の部品参照情報に従い変換し、変換した付加情報を上記解析結果情報に含めて出力し、
    上記プログラム変換部は、上記解析結果情報に上記部品情報を参照する形式に変換された付加情報が含まれている場合、上記部品記憶部が記憶した部品情報を参照する上記第2のプログラムを生成し、
    上記プログラム変換実行計算機は、上記プログラム変換部が生成した第2のプログラムを実行して上記部品情報記憶部が記憶する部品情報を参照する実行部を備えた
    ことを特徴とする請求項4記載のプログラム変換実行計算機。
  6. 上記付加情報記憶部が記憶する付加情報は、上記第1のプログラムの条件式を挿入する条件式情報を有し、
    上記解析部は、上記文法定義識別情報と適合する位置情報を検索できた場合に上記条件式情報を有する付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、
    上記プログラム変換部は、上記解析結果情報に上記条件式情報を有する付加情報が含まれている場合、上記条件式情報から条件式を生成して、生成した条件式を有する第2のプログラムを生成する
    ことを特徴とする請求項1記載のプログラム変換実行計算機。
  7. 上記プログラム変換実行計算機は、上記第2のプログラムのプログラム言語を指定して選択させるプログラム言語選択情報を入力して、入力したプログラム言語選択情報を上記プログラム変換部に対して出力して、プログラム変換部に対して第2のプログラムのプログラム言語を選択させる変換選択部を備え、
    上記プログラム変換部は、上記共通形式情報記憶部が記憶した共通形式情報から上記第2のプログラムを生成する場合に、上記第1のプログラムのプログラム言語と同じプログラム言語のプログラムに変換する第1のプログラム変換部と、上記第1のプログラムのプログラム言語とは異なる別のプログラム言語のプログラムに変換する第2のプログラム変換部とを備えて、上記変換選択部からプログラム言語選択情報を入力して、入力したプログラム言語選択情報に基づいて上記第1のプログラム選択部と第2のプログラム選択部とのいずれか一方を選択して動作させる
    ことを特徴とする請求項2記載のプログラム変換実行計算機。
  8. 上記付加情報記憶部が記憶する付加情報は、上記第2のプログラムに挿入された付加情報を削除することと削除しないことのいずれか一方を示す削除情報を有し、
    上記解析部は、上記文法定義識別情報と適合する位置情報を検索できた場合に上記削除情報を有する付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、
    上記プログラム変換部は、上記解析結果情報に上記削除情報を有する付加情報が含まれている場合、上記削除情報に基づくコメント文を生成して、生成したコメント文を上記付加情報に対応させて文第2のプログラムを生成する
    ことを特徴とする請求項1記載のプログラム変換実行計算機。
  9. 上記プログラム変換実行計算機は、上記プログラム変換部が生成した第2のプログラムを入力して、入力した第2のプログラムに上記付加情報に対応するコメント文から付加情報を削除することと削除しないことのいずれか一方を判定して、削除することを判定した場合にコメント文に対応する付加情報を削除する付加情報削除部を備えた
    ことを特徴とする請求項8記載のプログラム変換実行計算機。
  10. 所定のプログラムの構文規則に基づいて定義された第1のプログラムに対して所定の付加情報を挿入して第2のプログラムに変換することを計算機によって実行するプログラム変換実行方法において、
    所定のプログラムの構文規則に基づく文法の種類を定義する文法定義情報と、上記文法定義情報を識別する文法定義識別情報と、上記文法定義情報に対応する構文を定義する対応構文情報とを構文解析情報として記憶部に記憶する構文解析情報記憶工程と、
    上記付加情報と付加情報を挿入する位置情報とを対応して記憶部に記憶する付加情報記憶工程と、
    上記第1のプログラムを入力して、入力した第1のプログラムを上記構文解析情報記憶工程によって記憶部に記憶した構文解析情報を用いて解析して解析結果情報を生成するとともに、解析に使用した構文解析情報の文法定義識別情報に基づいて上記付加情報記憶工程によって記憶部に記憶した位置情報を検索して、上記文法定義識別情報と適合する位置情報を検索できた場合に付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、上記文法定義識別情報と適合する位置情報を検索できなかった場合に、上記解析結果情報を出力する解析工程と、
    上解析工程によって出力した解析結果情報を入力して、入力した解析結果情報から第2のプログラムを生成するプログラム変換工程と
    を有することを特徴とするプログラム変換実行方法。
  11. 所定のプログラムの構文規則に基づいて定義された第1のプログラムに対して所定の付加情報を挿入して第2のプログラムに変換することをコンピュータに実行させるプログラムにおいて、
    所定のプログラムの構文規則に基づく文法の種類を定義する文法定義情報と、上記文法定義情報を識別する文法定義識別情報と、上記文法定義情報に対応する構文を定義する対応構文情報とを構文解析情報として記憶部に記憶する構文解析情報記憶処理と、
    上記付加情報と付加情報を挿入する位置情報とを対応して記憶部に記憶する付加情報記憶処理と、
    上記第1のプログラムを入力して、入力した第1のプログラムを上記構文解析情報記憶処理によって記憶部に記憶した構文解析情報を用いて解析して解析結果情報を生成するとともに、解析に使用した構文解析情報の文法定義識別情報に基づいて上記付加情報記憶処理によって記憶部に記憶した位置情報を検索して、上記文法定義識別情報と適合する位置情報を検索できた場合に付加情報を取得し、取得した付加情報を上記解析結果情報に含めて出力し、上記文法定義識別情報と適合する位置情報を検索できなかった場合に、上記解析結果情報を出力する解析処理と、
    上解析処理によって出力した解析結果情報を入力して、入力した解析結果情報から第2のプログラムを生成するプログラム変換処理と
    をコンピュータに実行させることを特徴とするプログラム。
JP2004208278A 2004-07-15 2004-07-15 プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム Pending JP2006031331A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004208278A JP2006031331A (ja) 2004-07-15 2004-07-15 プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004208278A JP2006031331A (ja) 2004-07-15 2004-07-15 プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム

Publications (1)

Publication Number Publication Date
JP2006031331A true JP2006031331A (ja) 2006-02-02

Family

ID=35897608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004208278A Pending JP2006031331A (ja) 2004-07-15 2004-07-15 プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム

Country Status (1)

Country Link
JP (1) JP2006031331A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013080406A (ja) * 2011-10-05 2013-05-02 Fujitsu Ltd コンパイル装置、情報処理システム、コンパイル方法、コンパイルプログラム、記録媒体
US8635694B2 (en) 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
JP2017215783A (ja) * 2016-05-31 2017-12-07 住友セメントシステム開発株式会社 テスト装置およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635694B2 (en) 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
JP2013080406A (ja) * 2011-10-05 2013-05-02 Fujitsu Ltd コンパイル装置、情報処理システム、コンパイル方法、コンパイルプログラム、記録媒体
JP2017215783A (ja) * 2016-05-31 2017-12-07 住友セメントシステム開発株式会社 テスト装置およびプログラム

Similar Documents

Publication Publication Date Title
US9251046B2 (en) Method and system for generating and processing black box test cases
US7996819B2 (en) Generating functional test scripts
KR100857862B1 (ko) 파일 영역 정보와 변이 규칙을 이용한 파일 변이 방법 및그 시스템
US9170918B2 (en) Model verification system, model verification method, and recording medium
US20080195377A1 (en) Method, device, and program product for verifying translation in resource file
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
US20070061113A1 (en) Enabling Test Script Play Back in Different Locales
US20050188323A1 (en) Template creation apparatus and creation method
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
US20050137844A1 (en) Method for generating a language-independent regression test script
JP2004341671A (ja) 情報処理システム、制御方法、制御プログラム、及び記録媒体
CN113157597A (zh) 结构解析方法、装置、电子设备和存储介质
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
US7284235B2 (en) Creation of content versions using content layers
JP2008299723A (ja) プログラム検証方法、プログラム検証装置
JP3494376B1 (ja) プログラム解析装置およびプログラム
US20060064570A1 (en) Method and apparatus for automatically generating test data for code testing purposes
JP2006031331A (ja) プログラム変換実行計算機、及び、プログラム変換実行方法、プログラム
CN115599388A (zh) 一种api接口文档生成方法、存储介质及电子设备
JP5404721B2 (ja) シナリオテストのテスト項目生成装置及び方法及びプログラム
CN113760291A (zh) 日志输出的方法和装置
GB2397905A (en) Method for automatically generating and ordering test scripts
JP2006338399A (ja) プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体
JP6748357B2 (ja) 解析装置、解析プログラムおよび解析方法
JP4698943B2 (ja) プログラム生産方法、プログラム生産装置、プログラム自動変換方法、およびプログラム