JP2019109687A - プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム - Google Patents

プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム Download PDF

Info

Publication number
JP2019109687A
JP2019109687A JP2017241986A JP2017241986A JP2019109687A JP 2019109687 A JP2019109687 A JP 2019109687A JP 2017241986 A JP2017241986 A JP 2017241986A JP 2017241986 A JP2017241986 A JP 2017241986A JP 2019109687 A JP2019109687 A JP 2019109687A
Authority
JP
Japan
Prior art keywords
execution
unit
source code
language conversion
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.)
Granted
Application number
JP2017241986A
Other languages
English (en)
Other versions
JP7045846B2 (ja
Inventor
塩田 広
Hiroshi Shioda
広 塩田
正人 内田
Masato Uchida
正人 内田
加藤 雅一
Masakazu Kato
雅一 加藤
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.)
Toshiba Industrial Products and Systems Corp
Original Assignee
Toshiba Industrial Products and Systems 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 Toshiba Industrial Products and Systems Corp filed Critical Toshiba Industrial Products and Systems Corp
Priority to JP2017241986A priority Critical patent/JP7045846B2/ja
Publication of JP2019109687A publication Critical patent/JP2019109687A/ja
Application granted granted Critical
Publication of JP7045846B2 publication Critical patent/JP7045846B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ソースコードの整合性を判定することができるプログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムを提供することである。【解決手段】実施形態のプログラミング言語変換支援装置は、第一ソースコード記憶部と、第一実行部と、第二ソースコード記憶部と、第二実行部と、言語変換支援部と、変換ルール記憶部と、実行結果照合部とを持つ。第一ソースコード記憶部は、第一ソースコードを記憶する。第二ソースコード記憶部は、第二ソースコードを記憶する。第一コンパイラ部は、第一ソースコードを第一実行ファイルに変換する。第二コンパイラ部は、第二ソースコードを第二実行ファイルに変換する。第一実行部は、第一実行ファイルを実行する。第二実行部は、第二実行ファイルを実行する。実行結果照合部は、第一実行部及び第二実行部の実行結果を所定の有効桁数で照合する。【選択図】図1

Description

本発明の実施形態は、プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムに関する。
従来、システム開発などでは、科学技術計算に向いている古典的なプログラミング言語が用いられている。例えば、Fortran(フォートラン)などの古典的なプログラミング言語は、現在も大規模な計算を行う分野において用いられていることが多い。しかし、古典的なプログラミング言語は、計算処理言語として高い評価を受けている一方、扱えるIT(Information Technology)技術者が減少しているという課題がある。このため、従来技術では、古典的言語のプログラムソースを、例えばC(シー)などの広く使用されている言語に自動で変換する手法が提案されている。この手法では、あらかじめプログラミング言語変換用の変換規則データファイルに基づき、字句変換、構文変換及び意味変換などが行われる。変換規則データファイルは、Fortranの機能を一旦仕様に変換し、変換された仕様に基づき、Cの機能を構築するための変換規則を持つ。しかし、古典的なプログラミング言語では、長期間の運用によるソースコードの変更が行われていることが多い。このため、変換規則データファイルを用いた変換方法を用いると、変換前後のプログラム間での字面としての対応付けがし難いという場合があった。
特開平5−197560号公報 特開2009−151613号公報
本発明が解決しようとする課題は、ソースコードの整合性を判定することができるプログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラムを提供することである。
実施形態のプログラミング言語変換支援装置は、第一ソースコード記憶部と、第一実行部と、第二ソースコード記憶部と、第二実行部と、言語変換支援部と、変換ルール記憶部と、実行結果照合部とを持つ。第一ソースコード記憶部は、第一ソースコードを記憶する。第二ソースコード記憶部は、第二ソースコードを記憶する。第一コンパイラ部は、前記第一ソースコードを第一実行ファイルに変換する。第二コンパイラ部は、前記第二ソースコードを第二実行ファイルに変換する。第一実行部は、前記第一実行ファイルを実行する。第二実行部は、前記第二実行ファイルを実行する。実行結果照合部は、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する。
第1の実施形態におけるプログラミング言語変換支援装置を示すブロック図。 第1の実施形態における変換規則のデータテーブルの具体例を示すデータ構成図。 第1の実施形態における実行結果の具体例を示すデータ構成図。 第2の実施形態におけるプログラミング言語変換支援装置を示すブロック図。 第2の実施形態における割り込み結果の具体例を示すデータ構成図。 第2の実施形態におけるトレース結果の具体例を示すデータ構成図。
以下、実施形態のプログラミング言語変換支援装置を、図面を参照して説明する。なお以下の説明では、同一又は類似の機能を有する構成に同一の符号を付す。そして、それら構成の重複する説明は省略する場合がある。
(第1の実施形態)
図1は、第1の実施形態におけるプログラミング言語変換支援装置1Aの機能構成を示すブロック図である。プログラミング言語変換支援装置1Aは、プログラムを第一ソースコードから第二ソースコードへ変換するための支援を行うとともに、その変換が正しく行われているか否かを判定する装置である。プログラミング言語変換支援装置1Aは、各ソースコードのモジュールを分析した結果に基づいて言語の変換規則を生成し、第二ソースコードの記述を支援する。また、プログラミング言語変換支援装置1Aは、第一実行部12aと第二実行部15aの出力結果を照合することによって変換の整合性を判定する。なお、以下では例として、第一ソースコードの記述言語をFortranとし、第二ソースコードの記述言語をCとする。ただし、第一ソースコードおよび第二ソースコードのプログラミング言語は何でもよい。例えば、プログラミング言語として、BASICや、アセンブリ言語や、COBOLや、PL/Iや、Lispや、C++や、C#などを用いることができる。
プログラミング言語変換支援装置1Aは、第一ソースコード記憶部10と、第一コンパイラ部11と、第一実行部12aと、第二ソースコード記憶部13と、第二コンパイラ部14と、第二実行部15aと、言語変換支援部16と、変換ルール記憶部17と、実行値出力部18と、実行結果照合部19とを備える。プログラミング言語変換支援装置1Aを構成する各部を、例えば、電子回路を用いて実現することができる。また、コンピューターを用いて各部を実現するようにしてもよい。
第一ソースコード記憶部10は、第一ソースコードをテキストデータとして記憶する。第一ソースコードのFortranは、古くから存在するプログラミング言語であるため、システムによっては、長期間の運用がなされていることが多い。このため、第一ソースコードは、長期間の運用により、ソースコード自体に多くの改変がなされていることも少なくない。そして、運用中の第一ソースコードが変更される場合、第一ソースコード記憶部10は、変更された最新の第一ソースコードを記憶する。
第一コンパイラ部11は、第一ソースコードを第一実行ファイルに変換する。はじめに、第一コンパイラ部11は、第一ソースコード記憶部10に記憶されている第一ソースコードを読み込み、コンパイルする。そして、第一コンパイラ部11は、第一ソースコード内にコンパイルエラーがない場合、コンパイル結果を第一実行ファイルとして生成し、第一実行ファイルを第一実行部12aへ渡す。第一ソースコード内にコンパイルエラーが含まれていた場合、第一コンパイラ部11は、エラー処理を行い、第一実行ファイルを生成せず、コンパイル処理を中止する。
第一実行部12aは、第一コンパイラ部11から渡された第一実行ファイルを実行する。このとき、第一実行部12aは、処理の実行時に入力する実行値を実行値出力部18に渡す。そして、第一実行部12aは、第一実行ファイルの処理が終了すると、実行終了時の各処理変数の値を実行結果照合部19に渡す。
第二ソースコード記憶部13は、第二ソースコードをテキストデータとして記憶する。また、第二ソースコードは、システム運用の開始時は、ユーザーが記述する必要がある。
第二コンパイラ部14は、第二ソースコードを第二実行ファイルに変換する。第二コンパイラ部14は、第二ソースコード記憶部13に記憶されている第二ソースコードを読み込み、コンパイルする。そして、第二コンパイラ部14は、第二ソースコード内にコンパイルエラーがない場合、コンパイル結果を第二実行ファイルとして生成し、第二実行ファイルを第二実行部15aへ渡す。第二ソースコード内にコンパイルエラーが含まれていた場合、第二コンパイラ部14は、エラー処理を行い、第二実行ファイルを生成せず、コンパイル処理を中止する。
第二実行部15aは、第二コンパイラ部14から渡された第二実行ファイルを実行する。このとき、第二実行部15aは、処理の実行時に入力する実行値を、実行値出力部18から受け取る。そして、第二実行部15aは、第二実行ファイルの処理が終了すると、実行終了時の各処理変数の値を実行結果照合部19に渡す。
言語変換支援部16は、第一ソースコードを第二ソースコードに変換するための支援を行う機能を有する。この変換支援の機能として様々な形態があり得る。変換支援機能の一例として、言語変換支援部16は、第一ソースコードに含まれるラベルと第二ソースコードに含まれるラベルとを対応付け、ユーザーが第二ソースコードを記述する際に、第二ソースコードに含まれるラベルの候補を提示する。なお、ラベルとは、モジュール名(サブルーチン名、関数名等)や、変数名等である。具体的には次の通りである。
言語変換支援部16は、変換ルール記憶部17から読み出した変換規則に基づいて、第一ソースコードにおけるモジュール名を第二ソースコードにおけるモジュール名に変換するための支援を行う。そして、言語変換支援部16は、第一ソースコードから第二ソースコードへ言語変換の支援を行う。はじめに、言語変換支援部16は、第一ソースコードと第二ソースコードとを解析し、各ソースコード内で対応するモジュールのペアを変換規則として動的に生成する。そして、言語変換支援部16は、生成した変換規則と各モジュール名を、後述する変換ルール記憶部17に格納する。これによって、言語変換支援部16は、言語変換の際、生成した変換規則を用いて第二ソースコードへの入力補完や自動変換などを行う。本実施形態では、例として、言語変換支援部16は、変換規則を用いた入力補完を行う。また、例として、変換規則に使用されるモジュール名は、Fortranにおけるサブルーチン名と、Cにおける関数名とする。入力補完は、変換規則に基づいて、第一ソースコードのサブルーチン名に対応した第二ソースコードの関数名を第二ソースコードに自動で付与するものである。言語変換支援部16は、変換ルール記憶部17を参照し、変換規則が存在する場合、参照した変換規則を使用し、入力補完を行う。変換規則が存在しない場合、言語変換支援部16は、第二ソースコードに対し入力補完を行わず、第一ソースコードのサブルーチン名を変換ルール記憶部17に格納する。次に、言語変換支援部16は、変換ルール記憶部17に格納したサブルーチン名に対応する第二ソースコードの更新を待つ。次に、第二ソースコード記憶部13内の第二ソースコードが更新されるたび、言語変換支援部16は、第二ソースコードのCに記述された関数の中から第一ソースコードのサブルーチンに対応する関数名を解析する。そして、更新後の最新の第二ソースコードに該当する関数名が存在する場合、言語変換支援部16は、サブルーチン名と関数名を関連付けし、変換規則名を変換ルール記憶部17に格納する。
例えば、ユーザーは、言語変換支援部16の機能を用いて、第一ソースコードに対応する第二ソースコードを、編集、作成する。その際、ユーザーは、第一ソースコードに記述される処理内容の順序と第二ソースコードに記述される処理内容の順序とが同一になるように対応付ける。したがって、仮に第一ソースコード内にバグが内在していても、そのバグが内在したままの状態で第二ソースコードが作成されることもある。
変換ルール記憶部17は、第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名との対応関係を変換規則として記憶する。変換規則とは、変換ルール記憶部17に格納される、第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名とのペアの集合である。また、変換ルール記憶部17は、最初から変換規則データファイルのような変換規則を持たず、言語変換支援部16からの通知により変換規則のデータテーブルを更新する。例として、変換ルール記憶部17は、言語変換支援部16から受信したモジュール名や変換規則名を、第一ソースコードをFortran、第二ソースコードをCとして、変換規則を記憶する。はじめに、第一ソースコードのFortranでは、変換ルール記憶部17は、言語変換支援部16から受信したサブルーチン名を第一ソースコードのモジュール名としてデータテーブルに登録する。次に、変換ルール記憶部17は、言語変換支援部16から受信した関数名を、第二ソースコードのモジュール名として第一ソースコードのモジュール名と関連付けてデータテーブルに登録する。最後に、変換ルール記憶部17は、言語変換支援部16から受信した変換規則名を、対応するモジュールのペアと関連付けて登録する。
実行値出力部18は、第一実行部12aから、処理の実行時に入力する実行値を受け取り、受け取った実行値を第二実行部15aに渡す。なお、プログラミング言語変換支援装置1Aは、リアルタイム処理を行わない。このため、実行値出力部18は、任意のタイミングで第一実行部12aから渡された実行値を第二実行部15aへ渡してよい。また、本実施形態では、後述する実行結果照合部19は、第一実行部12aと第二実行部15aとの実行値が同じであれば結果を判定できる。このため、実行値出力部18は、第二実行部15aから実行値を受け取り、第一実行部12aへ渡すようにしてもよいし、実行値出力部18から実行値を第一実行部12aと第二実行部15aとに渡すようにしてもよい。
実行結果照合部19は、第一実行部12aによる実行結果と第二実行部15aによる実行結果とをそれぞれ受け取り、両者を照合する。具体的には、実行結果照合部19は、第一実行部12aから渡される変数値と、第二実行部15aから渡される変数値とを照合する。なお、実行結果照合部19は、第一実行部12aおよび第二実行部15aから受け取る変数値を照合する際、変数ごとに定められた有効桁数の範囲内において一致しているか否かを判定する。そのため、実行結果照合部19は、第一実行部12aおよび第二実行部15aから、各変数の有効桁数の情報を併せて受け取る。
図2は、第1の実施形態における変換規則のデータテーブルの具体例を示すデータ構成図である。変換規則のデータテーブルは、変換規則名と、第一ソースコードモジュール名と、第二ソースコードモジュール名とを含む。変換規則名は、言語変換支援部16から受信した第一ソースコードモジュール名と第二ソースコードモジュール名を関連付けた変換規則の名称である。なお、変換ルール記憶部のデータテーブルでは、第一ソースコードモジュール名のみが登録されている状態では、変換規則名のデータ項目は空の状態である。第一ソースコードモジュール名は、言語変換支援部16から受信した第一ソースコード内で使用されているサブルーチンなどのモジュール名称である。第二ソースコードモジュール名は、第二ソースコード内で使用されている関数などのモジュールの名称である。
図3は、第1の実施形態における実行結果の具体例を示すデータ構成図である。実行結果のデータテーブルは、変数名と、第一ソースコード出力値と、第二ソースコード出力値を含む。例として、変数名は、第一ソースコードと第二ソースコードとで共通した変数名を表す。また、言語変換支援部16は、第一ソースコードを第二ソースコードに変換する際、同じ処理を行うモジュールに同じ変数名を割り当てるため、共通の変数名として扱うことができる。なお、変数名は、第一ソースコードと第二ソースコードとで共通した名前を使用しなくてもよい。その場合、第一ソースコードと第二ソースコードとで、対応する変数名を同じデータ項目に登録する。第一ソースコード出力値は、第一実行部12aから実行結果照合部19へ渡された各変数の数値を表す。第二ソースコード出力値は、第二実行部15aから実行結果照合部19へ渡された各変数の数値を表す。また、各出力値は、実行動作の終了時に各変数が保持している値で、各処理によって定義される変数値である。
以上、第1の実施形態は、第一ソースコードから第二ソースコードを逐次的に変換し、各ソースコードの実行結果を照合することで、変換後のソースコードの整合性を確かめる効果を持つ。これにより、第1の実施形態は、第一ソースコードから第二ソースコードへの言語変換を逐次的に行うことが可能になる。また、第1の実施形態は、第一ソースコードと第二ソースコードから、対応するモジュールを解析し、変換規則を動的に生成する。このため、言語変換支援部16は、第一ソースコードから第二ソースコードへの変換を効率的に行えるよう支援する。
(第2の実施形態)
次に、第2の実施形態について説明する。なお、前実施形態において既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。
図4は、第2の実施形態におけるプログラミング言語変換支援装置を示すブロック図である。プログラミング言語変換支援装置1Bは、古典的プログラミング言語である第一ソースコードを高級プログラミング言語である第二ソースコードへの変換が正しく行われているか判定し、記述支援を行う装置である。そして、プログラミング言語変換支援装置1Bは、言語の変換規則を各ソースコードのモジュールに基づいて判定し、第二ソースコードの記述を支援する。また、プログラミング言語変換支援装置1Bは、プログラミング言語の変換によって生じる整合性の有無を、出力結果の照合から判定する装置である。また、第2の実施形態は、第1の実施形態と違い、最後まで処理を実行するだけでなく、割込制御によって任意のタイミングで実行結果の変数値を照合し、モジュールの処理順序の整合性を判定する。
プログラミング言語変換支援装置1Bは、第一ソースコード記憶部10と、第一コンパイラ部11と、第一実行部12bと、第二ソースコード記憶部13と、第二コンパイラ部14と、第二実行部15bと、言語変換支援部16と、変換ルール記憶部17と、実行値出力部18と、実行結果照合部19と、割込制御部20と、第一トレース記憶部21と、第二トレース記憶部22と、トレース結果照合部23とを備える。プログラミング言語変換支援装置1Bを構成する各部を、例えば、電子回路を用いて実現することができる。また、コンピューターを用いて各部を実現するようにしてもよい。
第一実行部12bは、第一コンパイラ部11から出力された第一実行ファイルを実行する。このとき、第一実行部12bは、処理の実行時に入力する実行値を実行値出力部18に渡す。また、第一実行部12bは、第一実行ファイルの実行をトレースした結果を第一トレース記憶部21に書き込む。このとき、第一実行部12bは、割込制御部20から割込命令を受信すると、出力結果として、割込時点における各処理変数の値と、各変数名と、割込点情報とを実行結果照合部19に通知する。割込点情報とは、割込命令を受信した時刻ごとに、各変数名と変数値を関連付けて表した情報である。また、第一実行部12bは、第一ソースコードの実行処理のフローを示すため、割込命令を受信するまで、各サブルーチンで処理が実行される毎に、使用されたサブルーチン名と、処理時刻とを後述する第一トレース記憶部21へ通知する。また、割込命令を受信した場合、第一実行部12bは、使用されたモジュール名を「割込処理」、処理時刻を「割込命令を受信した時間」として、第一トレース記憶部21へ通知し、実行処理を一時停止する。なお、本実施形態では、例として割込処理を受信すると、第一実行部12bは実行処理を一時停止するが、処理内容を第一トレース記憶部21へ通知したのち、実行処理を再開してもよい。
第二実行部15bは、第二コンパイラ部14から出力された第二実行ファイルを実行する。このとき、第二実行部15bは、第一実行部12bで実行時に入力した実行値を実行値出力部18から受け取る。また、第二実行部15bは、第二実行ファイルの実行をトレースした結果を第二トレース記憶部22に書き込む。このとき、第二実行部15bは、割込制御部20から割込命令を受信すると、出力結果として、割込時点における各処理変数の値と、各変数名と、割込点情報とを実行結果照合部19に通知する。また、第二実行部15bは、第二ソースコードの実行処理のフローを示すため、割込命令を受信するまで、各関数で処理が実行される毎に、使用された関数名と、処理時刻とを後述する第二トレース記憶部22へ通知する。また、割込命令を受信した場合、第二実行部15bは、使用されたモジュール名を「割込処理」、処理時刻を「割込命令を受信した時間」として、第二トレース記憶部22へ通知し、実行処理を一時停止する。なお、本実施形態では、例として割込処理を受信すると、第二実行部15bは実行処理を一時停止するが、処理内容を第二トレース記憶部22へ通知したのち、実行処理を再開してもよい。
実行結果照合部19は、割込制御部20による割込の時点における、第一実行部12bから出力される変数値と第二実行部15bから出力される変数値とを照合する。また、実行結果照合部19は、照合した結果が誤っていた場合でも、照合した変数の数値と判定結果を、後述するトレース結果照合部23に通知する。割込処理が行われた場合、実行結果照合部19は、割込処理の時点における、第一実行部12bから渡される変数値と、第二実行部15bから渡される変数値とを照合する。割込処理が行われなかった場合、実行結果照合部19は、第1の実施形態と同様に、第一実行部12bから渡される変数値と、第二実行部15bから渡される変数値とを照合する。なお、実行結果照合部19は、第一実行部12bおよび第二実行部15bから受け取る変数値を照合する際、変数ごとに定められた有効桁数の範囲内において一致しているか否かを判定する。そのため、実行結果照合部19は、第一実行部12bおよび第二実行部15bから、各変数の値を受け取る際、割込処理の有無に関わらず、有効桁数の情報を併せて受け取る。
割込制御部20は、第一実行部12bおよび第二実行部15bのそれぞれに対して割込命令(割込信号)を任意のタイミングで通知する。このとき、割込制御部20は、ユーザーが指定した任意のタイミングで、割込指示を受け付ける。また、プログラミング言語変換支援装置1Bは、リアルタイム処理を行わない。このため、割込制御部20は、第一実行部12bと第二実行部15bの処理が開始されるタイミングと、指定された任意の割込処理のタイミングを制御する。なお、例として、割込制御部20は、ユーザーが指定した任意のタイミングで割込指示を受け付けるが、処理のプログラム内で任意の時刻を設定し、その時刻に割込命令を通知するように実装してもよい。
第一トレース記憶部21は、第一実行部12bにおける実行をトレースした結果を記憶する。そして、第一トレース記憶部21は、第一実行部12bから受信したデータをデータテーブルに登録する。第一実行部12bから受信するデータは、処理時刻のデータと、実行された処理の中で使用されたモジュール名である。また、第一トレース記憶部21は、割込処理が行われた場合、第一実行部12bから受信する割込処理命令を、使用されたモジュールとして格納する。割込処理が行われなかった場合、第一トレース記憶部21は、第一実行部12bの処理が終了するまで、第一実行部12bから受信するデータを格納する。
第二トレース記憶部22は、第二実行部15bにおける実行をトレースした結果を記憶する。そして、第二トレース記憶部22は、第二実行部15bから受信したデータをデータテーブルに登録する。第二実行部15bから受信するデータは、処理時刻のデータと、実行された処理の中で使用されたモジュール名である。また、第二トレース記憶部22は、割込処理が行われた場合、第二実行部15bから受信する割込処理命令を、使用されたモジュールとして格納する。割込処理が行われなかった場合、第二トレース記憶部22は、第二実行部15bの処理が終了するまで、第二実行部15bから受信するデータを格納する。
トレース結果照合部23は、割込制御部20による割込の時点における、第一トレース記憶部21と第二トレース記憶部22とを照合して整合性を判定する。トレース結果照合部23は、第一トレース記憶部21と第二トレース記憶部22を参照し、第一実行部12bで処理されたモジュールと、第二実行部15bで処理されたモジュールを順番に比較する。そして、トレース結果照合部23は、変換ルール記憶部17と、モジュールの比較結果とを照合し、呼ばれるモジュールの順序が一致しているか否かを判定する。変換ルール記憶部17の変換規則と、各トレース記憶部内のデータとが照合できない場合、トレース結果照合部23は、エラー処理を行う。このとき、トレース結果照合部23は、エラー処理として、照合できなかった第一処理内容と第二処理内容とを、各モジュールの処理時刻とともに表示する。また、トレース結果照合部23は、実行結果照合部19から受信した変数の判定結果を用いて、未処理の変数と処理済みの変数を区別する。そして、トレース結果照合部23は、処理済みの変数の値を照合し、割込処理までの実行結果が正しいか否かを判定する。
図5は、第2の実施形態における割り込み結果の具体例を示すデータ構成図である。割込処理による実行結果のデータテーブルは、割込点と、変数名と、第一ソースコード出力値と、第二ソースコード出力値を含む。割込点は、各実行部から通知される、割込制御部20が割込命令を通知した時間と、割込命令の回数とが関連付けられた割込名を表す。変数名は、第一ソースコードと第二ソースコードで共通した変数名を表す。第一ソースコード出力値は、第一実行部12bから出力された、割込点での各変数の数値を表す。第二ソースコード出力値は、第二実行部15bから出力された、割込点での各変数の数値を表す。
図6は、第2の実施形態におけるトレース結果の具体例を示すデータ構成図である。トレース結果を示すデータテーブルは、第一ソースコード処理時刻と、第一処理内容と、第二ソースコード処理時刻と、第二処理内容とを備える。第一ソースコード処理時刻は、第一実行部12bで各モジュールの処理が終了した時刻を表す。第一処理内容は、第一実行部12bで処理が終了した際に使用されていたモジュール名を表す。第二ソースコード処理時刻は、第二実行部15bで各モジュールの処理が終了した時刻を表す。第一処理内容は、第二実行部15bで処理が終了した際に使用されていたモジュール名を表す。
以上、第2の実施形態は、第一ソースコードと第二ソースコードを実行するとき、割込制御を行い、各ソースコードの割込処理時点における実行結果の整合性を照合することができる効果を持つ。これにより、第2の実施形態は、第一ソースコードから第二ソースコードへの言語変換をさらに細かく行うことが可能になる。また、第2の実施形態は、第一トレース情報と第二トレース情報から、対応する処理時刻と処理内容を解析し、割込処理までに用いられたモジュールの対応を判定することができる効果を持つ。
以上説明した少なくともひとつの実施形態によれば、プログラミング言語変換支援装置は、各言語のソースコードを実行させ、実行結果の整合性を照合しながら、逐次的に言語変換を行うことができる。また、プログラミング言語変換支援装置は、プログラミング言語の変換規則を最初から保持せず、各言語のソースコードからモジュールを抽出し、関連付けることで変換規則を動的に生成する。そして、プログラミング言語変換支援は、生成された変換規則を使用し、第二ソースコードに対し記述支援を行うことができる。
なお、上述した実施形態におけるプログラミング言語変換支援装置の機能の少なくとも一部をコンピューターで実現するようにしても良い。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM、DVD−ROM、USBメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1A,1B…プログラミング言語変換支援装置、10…第一ソースコード記憶部、11…第一コンパイラ部、12a,12b…第一実行部、13…第二ソースコード記憶部、14…第二コンパイラ部、15a,15b…第二実行部、16…言語変換支援部、17…変換ルール記憶部、18…実行値出力部、19…実行結果照合部、20…割込制御部、21…第一トレース記憶部、22…第二トレース記憶部、23…トレース結果照合部

Claims (7)

  1. 第一ソースコードを記憶する第一ソースコード記憶部と、
    第二ソースコードを記憶する第二ソースコード記憶部と、
    前記第一ソースコードを第一実行ファイルに変換する第一コンパイラ部と、
    前記第二ソースコードを第二実行ファイルに変換する第二コンパイラ部と、
    前記第一実行ファイルを実行する第一実行部と、
    前記第二実行ファイルを実行する第二実行部と、
    前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する実行結果照合部と、
    を備えるプログラミング言語変換支援装置。
  2. 前記第一ソースコードから前記第二ソースコードへの言語変換の支援を行う言語変換支援部、
    をさらに備える請求項1に記載のプログラミング言語変換支援装置。
  3. 第一ソースコードにおけるモジュール名と第二ソースコードにおけるモジュール名との対応関係を変換規則として記憶する変換ルール記憶部、
    をさらに備え、
    前記言語変換支援部は、前記変換ルール記憶部から読み出した前記変換規則に基づいて、前記第一ソースコードにおけるモジュール名を前記第二ソースコードにおけるモジュール名に変換するための支援を行う、
    請求項2に記載のプログラミング言語変換支援装置。
  4. 前記第一実行部および前記第二実行部のそれぞれに対して割込信号を通知する割込制御部、
    をさらに備え、
    前記実行結果照合部は、前記割込制御部による割込の時点における、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを照合する、
    請求項1から3までのいずれか一項に記載のプログラミング言語変換支援装置。
  5. 前記第一実行部における実行をトレースした結果を記憶する第一トレース記憶部と、
    前記第二実行部における実行をトレースした結果を記憶する第二トレース記憶部と、
    前記割込制御部による割込の時点における前記第一トレース記憶部と前記第二トレース記憶部を照合して整合性を判定するトレース結果照合部と、
    をさらに備え、
    前記第一実行部は、前記第一実行ファイルの実行をトレースした結果を前記第一トレース記憶部に書き込み、
    前記第二実行部は、前記第二実行ファイルの実行をトレースした結果を前記第二トレース記憶部に書き込む、
    請求項4に記載のプログラミング言語変換支援装置。
  6. 第一ソースコード記憶部が、第一ソースコードを記憶し、
    第二ソースコード記憶部が、第二ソースコードを記憶し、
    第一コンパイラ部が、前記第一ソースコードを第一実行ファイルに変換し、
    第二コンパイラ部が、前記第二ソースコードを第二実行ファイルに変換し、
    第一実行部が、前記第一実行ファイルを実行し、
    第二実行部が、前記第二実行ファイルを実行し、
    実行結果照合部が、前記第一実行部から出力される変数値と前記第二実行部から出力される変数値とを所定の有効桁数で照合する、
    プログラミング言語変換支援方法。
  7. コンピューターを、
    請求項1から5までのいずれか一項に記載のプログラミング言語変換支援装置
    として機能させるためのプログラム。
JP2017241986A 2017-12-18 2017-12-18 プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム Active JP7045846B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017241986A JP7045846B2 (ja) 2017-12-18 2017-12-18 プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017241986A JP7045846B2 (ja) 2017-12-18 2017-12-18 プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2019109687A true JP2019109687A (ja) 2019-07-04
JP7045846B2 JP7045846B2 (ja) 2022-04-01

Family

ID=67179844

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017241986A Active JP7045846B2 (ja) 2017-12-18 2017-12-18 プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP7045846B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254027A (zh) * 2021-05-20 2021-08-13 西安华讯科技有限责任公司 一种半导体设备控制程序转换方法、系统、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689171A (ja) * 1992-03-26 1994-03-29 Nec Ic Microcomput Syst Ltd プログラムの検査方法
JP2003177923A (ja) * 2001-12-11 2003-06-27 Hitachi Ltd ポーティング支援システムにおける予約語変換方法
JP2003280944A (ja) * 2002-01-15 2003-10-03 Mitsubishi Electric Corp ソフトウェア試験支援装置
JP2009245066A (ja) * 2008-03-31 2009-10-22 Nomura Research Institute Ltd ソフトウェアマイグレーションシステム及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689171A (ja) * 1992-03-26 1994-03-29 Nec Ic Microcomput Syst Ltd プログラムの検査方法
JP2003177923A (ja) * 2001-12-11 2003-06-27 Hitachi Ltd ポーティング支援システムにおける予約語変換方法
JP2003280944A (ja) * 2002-01-15 2003-10-03 Mitsubishi Electric Corp ソフトウェア試験支援装置
JP2009245066A (ja) * 2008-03-31 2009-10-22 Nomura Research Institute Ltd ソフトウェアマイグレーションシステム及び方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254027A (zh) * 2021-05-20 2021-08-13 西安华讯科技有限责任公司 一种半导体设备控制程序转换方法、系统、设备和存储介质
CN113254027B (zh) * 2021-05-20 2024-05-14 西安华讯科技有限责任公司 一种半导体设备控制程序转换方法、系统、设备和存储介质

Also Published As

Publication number Publication date
JP7045846B2 (ja) 2022-04-01

Similar Documents

Publication Publication Date Title
US10545733B2 (en) Code reusability
US10235141B2 (en) Method and system for providing source code suggestion to a user in real-time
Lawall et al. Coccinelle: 10 years of automated evolution in the Linux kernel
US9158538B2 (en) User-extensible rule-based source code modification
US20160357519A1 (en) Natural Language Engine for Coding and Debugging
US11579856B2 (en) Multi-chip compatible compiling method and device
US9122540B2 (en) Transformation of computer programs and eliminating errors
US10592220B2 (en) Metadata-driven binding of converted source code to original source code
US9311077B2 (en) Identification of code changes using language syntax and changeset data
CN110058861B (zh) 源码处理方法及装置、存储介质、电子设备
US9880943B2 (en) Cache management in a multi-threaded environment
US20190179624A1 (en) Software upgrade impact analysis by cognitive services
KR20200071413A (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
JP2019109687A (ja) プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム
US8341607B2 (en) Condensing pattern matcher generation for intermediate language patterns
US20140372982A1 (en) Standardization of variable names in an integrated development environment
CN113260976A (zh) 用于在编译源代码中调度指令技术
CN117075907B (zh) 应用程序编译方法、系统、编译器及存储介质
US20220147539A1 (en) System and method for automatically obtaining data lineage in real time
US20240103854A1 (en) Identifying significant code changes via syntactic representation
TWI696948B (zh) 編譯器最佳化方法
CN114416050A (zh) Swift代码的处理方法、装置、电子设备及存储介质
US9298426B2 (en) Compiler generation of thunking code
US8959493B2 (en) Using range validation in assembly language programming
CN116700731A (zh) 代码编译方法及相关装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220322

R150 Certificate of patent or registration of utility model

Ref document number: 7045846

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150