JP5293563B2 - 言語変換装置、言語変換方法およびプログラム - Google Patents

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

Info

Publication number
JP5293563B2
JP5293563B2 JP2009250689A JP2009250689A JP5293563B2 JP 5293563 B2 JP5293563 B2 JP 5293563B2 JP 2009250689 A JP2009250689 A JP 2009250689A JP 2009250689 A JP2009250689 A JP 2009250689A JP 5293563 B2 JP5293563 B2 JP 5293563B2
Authority
JP
Japan
Prior art keywords
program
conversion
language
programming language
error
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.)
Expired - Fee Related
Application number
JP2009250689A
Other languages
English (en)
Other versions
JP2011096083A (ja
Inventor
隆史 須山
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.)
Nippon Steel Corp
Original Assignee
Nippon Steel 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 Nippon Steel Corp filed Critical Nippon Steel Corp
Priority to JP2009250689A priority Critical patent/JP5293563B2/ja
Publication of JP2011096083A publication Critical patent/JP2011096083A/ja
Application granted granted Critical
Publication of JP5293563B2 publication Critical patent/JP5293563B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は、言語変換装置、言語変換方法およびプログラムに関する。
プログラムの実行環境、例えばコンピュータハードウェアやオペレーションシステムの更新・変更の変化等に伴い、プログラムを記述する言語の変更が必要となる場合がある。例えば、FortranからC言語へ変換する場合等である。プログラムの記述言語を変更するために、第1のプログラム言語で記述されたプログラム(旧ソース)を第2のプログラム言語で記述されたプログラム(新ソース)に変換するプログラムコンバータが使用される。プログラムコンバータは、例えば図4に示すように、一般に、対応する第1のプログラム言語の命令・予約語等の文字列と第2のプログラム言語の命令・予約語等の文字列とが関連付けて定義された変換ルールに基づいて、旧ソースのプログラムの記述言語の変換し、新ソースを生成する。このような変換ルールは、ユーザによって予め定義されている。プログラムコンバータは、変換ルールの対応関係に基づいて、第1のプログラム言語で記述されたプログラムを第2のプログラム言語で記述されたプログラムに自動変換する。
プログラムコンバータを用いることによって、プログラムの全記述を自動的に他のプログラム言語による記述へ変換できることが理想的であるが、必ずしも全記述を変換できるとは限らない。これは、プログラム言語間において対応させることのできない文字列が存在したり、変換ルールの定義に誤りが存在したりすること等の理由による。プログラムコンバータにより変換されなかった未変換部については、ユーザが手修正を行う必要がある。このため、プログラムを完全に変換するためには多くの時間を要していた。
このような問題を解決するため、例えば、特許文献1には、変換前ソースデータモデルから変換後ソースデータモデルを生成する際に、変換が困難な箇所に要確認タグを埋め込んだ変換後ソースファイルを生成するプログラム変換装置が開示されている。この変換後ソースファイルの要確認タグの部分を適切な記述に置き換えることにより、保守性の高い変換プログラムを効率よく取得することができると記載されている。
特開2006−11756号公報
しかし、上記特許文献1においても、要確認タグの部分を開発者が編集して適切な記述に置き換えなければならず、プログラムを手修正する必要がある。このように、プログラムコンバータによる変換のみでは手修正しなければならない未変換部が存在する場合、未変換部分があるとコンパイルエラーが発生するため、コンパイル前に未変換部分を手修正する必要がある。従来のプログラムコンバータを用いた作業は、例えば図5に示す作業フローに沿って行われる。
まず、プログラムコンバータより、予め作成された変換ルールに基づいて、プログラムの記述言語を自動変換する(ステップS10)。次いで、プログラムコンバータによって変換できなかった未変換部分を手修正し(ステップS11)、すべての修正を終えた段階で変換後プログラムをコンパイルする(ステップS12)。そして、コンパイル時にコンパイルエラーの発生の有無を確認し(ステップS13)、コンパイルエラーが発生している場合には、コンパイルエラーの内容をユーザに通知する(ステップS14)。このときユーザは、コンパイルエラーの内容を参照して、プログラムを手修正する。一方、コンパイルエラーが発生しなかった場合には、正しく言語変換された変換後プログラムが生成されたことになる(ステップS15)。
しかしながら、このような作業フローでは、変換ルールの定義の誤りが発覚するのはステップS12のコンパイル後となる。このため、変換ルールの修正は、ステップS12でのコンパイル後に行われていた。この場合、変換ルールを修正した後、再度ステップS10の処理からやり直すと、コンパイル前に行った未変換部の手修正を再度行わなければならず、作業の手戻りが大きくなりすぎるため、実際にはルールの修正を行わず変換されてプログラムの変換ミス部を手で修正して対応している。
これを解決するため、例えば、未変換部分を手修正する前に、プログラムコンバータにより自動変換された時点での変換後プログラムをコンパイルすると、変換後プログラムの未変換部分は必ずコンパイルエラーとなってしまうため、コンパイルエラーが多発する。また、発生したコンパイルエラーが、未変換部分に起因するものであるのか、あるいは変換ルールの定義の誤りに起因するものであるのか、区別することが困難であり、変換ルールの誤り箇所を発見することは困難である。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能な、新規かつ改良された言語変換装置、言語変換方法およびプログラムを提供することにある。
上記課題を解決するために、本発明のある観点によれば、第1のプログラミング言語で記述されたプログラムを第2のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置であって、予め作成された第1のプログラミング言語から第2のプログラミング言語へ変換する変換ルールに基づいて、第1のプログラミング言語で記述されたプログラムのうち、第1のプログラミング言語から第2のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換部と、自動変換部により第2のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際にコンパイラから出力されたコンパイルエラーに基づいて、変換ルールの誤り箇所を検出する誤り検出部と、誤り検出部により検出された変換ルールの誤り箇所をユーザに通知する通知部と、変換ルールまたはプログラムの修正情報および言語変換装置の操作情報が入力される入力部と、を備えることを特徴とする、言語変換装置が提供される。
本発明によれば、自動変換部は、第1のプログラム言語から第2のプログラム言語へ自動変換できない箇所に対してはコメントアウトして処理が実行されない状態とし、第1のプログラム言語から第2のプログラム言語へ自動変換された箇所のみをコンパイル可能とする。そして、自動変換後プログラムのコンパイルエラーから、変換ルールの定義ミスを検出することにより、効率的に変換ルールの誤り箇所を検出することができる。このように誤り箇所を検出して修正を行うことで変換ルールの精度が向上され、自動変換の精度が高まる。また、自動変換部分のコンパイルエラーがなくなった状態で手修正を行うことで、作業の手戻りを低減することができ、効率的なプログラムの言語変換を行うことができる。
ここで、誤り検出部は、例えば、変換ルールにおける変換後の文字列とコンパイルエラーとなっている文字列とを比較し、これらの文字列が一致する変換ルールの記載箇所を誤り箇所として検出することができる。
また、本発明の言語変換装置は、入力部へ入力されたコメントアウト解除操作情報に基づいて、正常にコンパイルされた自動変換部により第2のプログラミング言語に変換されたプログラムのコメントアウトを外すコメントアウト解除部を備えることもできる。これにより、自動的にコメントアウトを外すことができるので、ユーザの作業負荷を低減させることができる。
通知部は、例えば、表示部に表示された変換ルールの誤り箇所をハイライト表示してユーザに通知するようにしてもよい。このように、ユーザに分かりやすく誤り箇所を通知することで、変更ルールの修正作業を容易にすることができる。
また、上記課題を解決するために、本発明の別の観点によれば、第1のプログラミング言語で記述されたプログラムを第2のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換方法であって、コンピュータが実行する、予め作成された第1のプログラミング言語から第2のプログラミング言語へ変換する変換ルールに基づいて、第1のプログラミング言語で記述されたプログラムのうち、第1のプログラミング言語から第2のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトするステップと、第2のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際にコンパイラから出力されたコンパイルエラーに基づいて、変換ルールの誤り箇所を検出するステップと、出された変換ルールの誤り箇所をユーザに通知するステップと、前記ユーザから入力された修正情報に基づいて変換ルールの誤り箇所を修正するステップと、正常にコンパイルされた第2のプログラミング言語に変換されたプログラムのコメントアウトを外すステップと、コメントアウトが外された未変換部分を前記ユーザが修正した前記プログラムをコンパイルするステップと、を含むことを特徴とする、言語変換方法が提供される。
さらに、上記課題を解決するために、本発明の別の観点によれば、コンピュータに上記の言語変換装置として機能させるためのプログラムが提供される。かかるプログラムは、コンピュータが備える記憶装置に格納され、コンピュータが備えるCPUに読み込まれて実行されることにより、そのコンピュータを上記の言語変換装置として機能させる。また、当該プログラムが記録された、コンピュータで読み取り可能な記録媒体も提供される。記録媒体は、例えば磁気ディスクや光ディスクなどである。
以上説明したように本発明によれば、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能な言語変換装置、言語変換方法およびプログラムを提供することができる。
本発明の実施形態に係る言語変換装置による言語変換処理を示す概念図である。 同実施形態に係る言語変換装置の機能構成を示す機能ブロック図である。 同実施形態に係る言語変換装置を用いた言語変換処理の作業フローを示すフローチャートである。 従来のプログラムコンバータによる言語変換処理を示す概念図である。 従来のプログラムコンバータを用いた作業フローの一例を示すフローチャートである。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
[言語変換装置による言語変換処理の概要]
まず、図1を参照して、本発明の実施形態に係る言語変換装置による言語変換処理の概要について説明する。なお、図1は、本実施形態に係る言語変換装置による言語変換処理を示す概念図である。
本実施形態に係る言語変換装置は、第1のプログラム言語で記述されたプログラムを、変換ルールに基づいて、第2のプログラム言語で記述されたプログラムを生成するプログラムコンバータである。言語変換装置は、言語変換処理を開始すると、変換ルールを参照しながら変換エンジンによりプログラムの言語を変換していく。変換ルールは、第1のプログラム言語と第2のプログラム言語との間の、命令等の予約語、規約、用語等の対応関係を規定したものであり、特定のプログラムだけでなくこれらの言語間における言語変換処理において共通して使用可能な定義情報である。例えば、図1に示すように、第1のプログラム言語で記述された自動変換前プログラムに、「LOOP」、「IF」、「IAI」の文字列が記載されているとする。このとき、変換エンジンは、変換ルールとして定義されている第1のプログラム言語と第2のプログラム言語との対応関係を参照して、第1のプログラム言語での文字列「LOOP」、「IF」、「IAI」に対応する第2のプログラム言語での文字列を取得する。
変換ルールには、第1のプログラム言語と第2のプログラム言語との間で対応関係がある文字列が記載されている。図1の変換ルールでは、第1のプログラム言語の文字列「LOOP」は第2のプログラム言語の文字列「while」に対応し、第1のプログラム言語の文字列「IF」は第2のプログラム言語の文字列「ie」に対応することが規定されている。これにしたがって、変換エンジンは、第1のプログラム言語で記述されたプログラムを第2のプログラム言語で記述されたプログラムに変換する。
ここで、自動変換前プログラムに記載されていた文字列「IAI」は変換ルールに規定されておらず、第2のプログラム言語に変換することができない。変換エンジンは、このような文字列については自動変換することはできない。そこで、本実施形態に係る言語変換装置は、このように自動変換できない部分をコメントアウトする処理を行う。コメントアウトとは、自動変換後プログラムにおいて特定の記号等を用いて、記述された処理が実行されないようにすることである。例えば、図1の自動変換後プログラムに示すように、文字列「IAI」の先頭にコメントアウト記号「//」を追加して「//IAI」とすることにより、文字列「IAI」による処理が実行されないようにすることができる。
なお、コメントアウトされる記述は、変換ルールに規定されていない文字列すべてとしてもよく、図1に示すようにコメントアウトされる文字列を規定した未変換ルールに規定された文字列としてもよい。第1のプログラム言語と第2のプログラム言語との間で対応関係がない文字列は、変換ルールを規定する段階で認識することができる。これらの文字列をコメントアウトされるべき文字列、すなわち自動変換せず未変換のままとする文字列を、未変換ルールとして規定する。変換ルールおよび未変換ルールのいずれにも含まれない記述がある場合には、かかる記述はコメントアウトするものとする。
このようにして、言語変換装置により第1のプログラム言語から第2のプログラム言語に変換された自動変換後プログラムが生成される。そして、ユーザは、コンパイラを用いて自動変換後プログラムをコンパイルし、正常にコンパイルされるか否かを確認する。すなわち、コンパイラによってコンパイルされるのは変換ルールに基づいて変換された記述部分のみであり、変換エンジンによってコメントアウトされた未変換部分はコンパイルの対象外となる。したがって、かかるコンパイルによって発生したコンパイルエラーは、変換ルールの定義の誤りに起因するものであることがわかる。なお、上記ではユーザの指示により自動変換後プログラムをコンパイラに入力してコンパイルするようにした。しかし、言語変換装置が当該自動変換後プログラムを直接にコンパイラ(プログラム)に入力してコンパイルし、コンパイルによって発生したコンパイルエラーを含む情報を受け取るようにしてもよい。その際、言語変換装置に、自動変換後プログラムおよびコンパイルエラーを含む情報をユーザにも通知させてもよい。
自動変換後プログラムのコンパイルにおいてコンパイルエラーが発生した場合には、コンパイルエラーの内容が、コンパイラからのコメント出力によってユーザに通知されるとともに、ルールチェック機構へ出力される。ルールチェック機構は、コンパイルエラーの内容に基づいて、変換ルールの誤り箇所を検出する。検出された変換ルールの誤り箇所はユーザへ通知される。ユーザは、かかる通知を受けて変換ルールを修正し、言語変換装置に、修正後の変換ルールに基づいて自動変換前プログラムの言語変換処理を再度実行させる。こうして、正しく修正された変換ルールに基づいて言語変換された自動変換後プログラムを取得することができる。
例えば、図1の変換ルールにおいて第1のプログラム言語の文字列「IF」は第2のプログラム言語の文字列「ie」に変換すると規定されているが、第1のプログラム言語の文字列「IF」に対応する正しい第2のプログラム言語の文字列は文字列「if」であるとする。誤りを含む変換ルールに基づいて変換エンジンにより自動変換された自動変換後プログラムには、誤った記述が含まれることになり、コンパイラによりコンパイルした際にエラーとして発見される。
コンパイラは、コンパイルエラーが発生した旨とその内容の情報(すなわち、コンパイルエラーが発生した場所とそのエラー種別、コンパイラがエラーと判断した文字列などの情報)とをユーザに通知する。また、コンパイラはコンパイルエラーの内容をルールチェック機構に出力する。ルールチェック機構は、変換ルールにおける、コンパイルエラーとなった第2のプログラム言語の文字列「ie」の規定箇所を検出し、検出された規定箇所を誤り箇所としてユーザに通知する。ユーザへの通知方法としては、例えば、表示部に表示された変換ルールの誤り箇所をハイライト表示して分かりやすく示したり、変換ルールにおける規定位置(例えば行数等)を通知したりすることが考えられる。かかる例では第2のプログラム言語の文字列「ie」の規定箇所がユーザに示される。ユーザは、文字列「ie」を文字列「if」に修正し、変更ルールを更新する。
このような変換エンジンによる自動言語変換処理と、コンパイルエラーに基づく変換ルールの修正処理とをコンパイルエラーが発生しなくなるまで繰り返し、未変換部分の手修正前に変換ルールの誤りを洗い出す。そして、変換ルールに基づいて変換された自動変換後プログラムのコンパイルエラーがなくなったとき、ユーザがコメントアウトされた未変換部分のコメントアウトの処理により追記された記号を外し、未変換部分を第2のプログラム言語により記述して手修正する。そして、修正後のプログラムをコンパイラによりコンパイルして、正常にコンパイルされるか否かを確認する。この段階では、プログラムの全記述内容についてコンパイルされるが、変換ルールにより自動変換された部分については、コンパイルエラーは発生しないことが確認されている。したがって、かかるコンパイルによって発生したコンパイルエラーは、手修正時のミスに起因するものであることがわかる。
コンパイルエラーが発生した場合には、コンパイルエラーが発生した旨とその内容がユーザに通知される。ユーザは、かかる通知を参照してプログラムの誤り部分を修正し、修正後のプログラムをコンパイラにより再度コンパイルする。かかる処理をコンパイルエラーが発生しなくなるまで繰り返して、第1のプログラム言語で記述されたプログラムを第2のプログラム言語で記述されたプログラムへ正しく変換された変換後プログラムが取得される。
以上、本実施形態に係る言語変換装置による言語変換処理の概要について説明した。このような言語変換装置の機能構成および言語変換処理について、以下、図2および図3に基づいて説明する。なお、図2は、本実施形態にかかる言語変換装置100の機能構成を示す機能ブロック図である。図3は、本実施形態にかかる言語変換装置100を用いた言語変換処理の作業フローを示すフローチャートである。
[言語変換装置の機能構成]
本実施形態に係る言語変換装置100は、図2に示すように、入力部110と、自動変換部120と、誤り検出部130と、通知部140と、変換ルール修正部150と、コメントアウト解除部160と、ルール記憶部170とからなる。また、言語変換装置100は、プログラムをコンパイルするコンパイラ200と情報を送受信可能に構成されている。変換対象となる第1のプログラム言語で記述されたプログラムは、言語変換装置100およびコンパイラ200によって参照・更新可能なプログラム記憶部300に記憶されているとする。
入力部110には、例えばキーボートやボタン、マウス等の入力装置(図示せず。)を介してユーザから変換ルールの修正情報や、プログラムの修正情報、当該言語変換装置100の操作情報等の情報が入力されるインタフェースとして機能する。入力部110は、入力された各情報を自動変換部120や、変換ルール修正部150、コメントアウト解除部160へ出力する。
自動変換部120は、後述するルール記憶部170に記憶された変換ルールに基づいて、第1のプログラム言語で記述された自動変換前プログラムを第2のプログラム言語に変換するとともに、変換ルールによって変換できない文字列が規定された未変換ルールに基づいて自動変換できない記述部分をコメントアウトする。自動変換部120は、図1のプログラムコンバータの変換エンジンに対応する。自動変換部120は、このように自動変換前プログラムに対して言語変換およびコメントアウト処理を行って自動変換後プログラムを生成し、自動変換後プログラムをプログラム記憶部300に記憶する。
誤り検出部130は、コンパイラ200から通知された自動変換後プログラムのコンパイルエラーに基づいて、変換ルールの誤り箇所を検出する。誤り検出部130は、図1のルールチェック機構として機能する。誤り検出部130は、コンパイルエラーとなった第2のプログラム言語の文字列をルール記憶部170に記憶された変換ルールから検出し、変換ルールの誤り箇所を通知部140へ出力する。なお、誤り検出部130が、コンパイラがエラーを検出した自動変換後プログラムの問題箇所に適用した変換ルールを検出し、この変換ルールの誤り箇所を通知部140へ出力するようにしてもよい。
通知部140は、外部の出力装置(図示せず。)によってユーザに情報を通知するために、言語変換装置100から出力される情報を出力装置へ送信するインタフェースとして機能する。通知部140は、例えば、誤り検出部130から入力される変換ルールの誤り箇所を示す情報や、コメントアウト解除部160から入力されるコメントアウト解除終了情報、コンパイラ200から入力されたコンパイルエラーの内容等を出力装置へ出力する。なお、通知部140に接続される出力装置としては、例えば液晶ディスプレイや有機ELディスプレイ等の表示装置やスピーカ等の音声出力装置等を用いることができる。
変換ルール修正部150は、ユーザにより入力部110から入力された変換ルールの修正情報に基づいて、ルール記憶部170に記憶された変換ルールの記述を修正して更新する。
コメントアウト解除部160は、ユーザにより入力部110から入力された指示により、自動変換後プログラムにおいてプログラムの記述をコメントアウトするために記載されたコメントアウト記号を削除して、コメントアウトのない、すなわち記述されたすべての処理を実行可能なプログラムにする処理部である。コメントアウト解除部160は、コメントアウト記号(例えば図1に示した「//」等)をプログラムから抽出して削除する。そして、コメントアウト解除部160は、プログラムからコメントアウトを解除する処理を終えると、その旨を通知部140へ出力する。
ルール記憶部170は、変換ルールや未変換ルールを記憶する、例えばEEPROM、EPROMなどの不揮発性メモリや、ハードディスクおよび円盤型磁性体ディスクなどの磁気ディスクなどの記憶媒体である。ルール記憶部170に記憶される変換ルールは、自動変換部120および誤り検出部130により参照されるとともに、修正情報に基づいて、変換ルール修正部150によって修正・更新される。また、本実施形態にかかるルール記憶部170には、第2のプログラム言語へ自動変換することのできない第1のプログラム言語の文字列が規定された未変換ルールに記憶されており、自動変換部120によるプログラムのコメントアウト処理を行う際に参照される。
コンパイラ200は、プログラムをコンパイルする処理部である。コンパイラ200は、入力装置(図示せず。)から入力されたコンパイル実行指示を受けて、プログラム記憶部300に記憶されたコンパイル対象のプログラムをコンパイルする。コンパイラ200は、コンパイルしたプログラムのコンパイルエラーの有無を、出力装置(図示せず。)によりユーザへ通知するとともに、言語変換装置100へ出力する。
プログラム記憶部300は、プログラムを記憶する記憶部であって、例えばEEPROM、EPROMなどの不揮発性メモリや、ハードディスクおよび円盤型磁性体ディスクなどの磁気ディスクなどの記憶媒体である。プログラム記憶部300は、変換対象である第1のプログラム言語で記述されたプログラムや、第2のプログラム言語による記述に変換された変換後プログラム、変換後プログラムが生成されるまでに作業過程で生成される中間プログラム(例えば自動変換後プログラムやコメントアウト解除されたプログラム等)も記憶するものとする。なお、中間プログラムについては、例えば言語記憶装置100に備えられたメモリ(図示せず。)に一時的に記憶しておくようにしてもよい。
[言語変換処理の作業フロー]
このような言語変換装置100を用いることにより、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能となる。言語変換処理の準備段階として、ユーザは、第1のプログラム言語と第2のプログラム言語との対応関係を規定した変換ルールを作成する。また、第2のプログラム言語に変換できない第1のプログラム言語の文字列については、未変換ルールとして規定する。作成された変換ルールおよび未変換ルールは、ルール記憶部170に予め記憶させておく。
本実施形態に係る言語変換装置100を用いた言語変換処理の作業フローは、図3に示すように、まず、プログラムのルールに基づく自動変換を実行する情報が入力部110から入力されると、自動変換部120は、ルール記憶部170に記憶された変換ルールに基づき、第1のプログラム言語で記述されたプログラムを第2のプログラム言語で記述されたプログラムに自動変換する。かかる自動変換処理とともに、自動変換部120は、未変換ルールに基づいて、第2のプログラム言語に変換できない、第1のプログラム言語で記述されたプログラムの記述箇所をコメントアウトする(ステップS100)。このように、自動変換部120によって、第1のプログラム言語から第2のプログラム言語へ自動変換可能な部分については言語変換し、変換できない箇所については当該個所の処理が実行されないようにコメントアウトされた、自動変換後プログラムが生成される。自動変換後プログラムは、プログラム記憶部300に記憶される。
自動変換部120による自動変換処理が完了すると、ユーザは入力装置を用いて、自動変換後プログラムをコンパイルする情報を入力装置(図示せず。)を用いてコンパイラ200へ入力する。コンパイラ200は、かかる情報の入力を受けると、自動変換後プログラムをプログラム記憶部300から取得し、コンパイルを実行する(ステップS102)。そして、コンパイラ200は、コンパイルエラーの有無を出力装置(図示せず。)を用いてユーザへ通知する(ステップS104)。
ここで、自動変換後プログラムでコンパイルエラーが発生している場合、コンパイラ200は、コンパイルエラーの内容を言語変換装置100へ通知する(ステップS106)。コンパイルエラーの内容を受け取った言語変換装置100は、誤り検出部130により、変換ルールの誤り箇所を検出し、検出された当該誤り箇所を、出力装置を用いてユーザへ通知する(ステップS108)。変換ルールの誤り箇所を通知されたユーザは、かかる情報を参照して、変換ルールを訂正する修正情報を入力装置を用いて入力する。修正情報の入力を受けた言語変換装置100は、変換ルール修正部150により、ルール記憶部170に記憶された変換ルールを更新する(ステップS110)。変更ルールが更新されると、ステップS100〜ステップS104の処理を再度実行し、自動変換後プログラムのコンパイルエラーが発生しなくなるまでステップS100〜S110の処理を繰り返す。これにより、変換ルールの誤り箇所を効率的に検出して修正することができ、自動変換可能な記述については確実かつ正確に自動的に言語変換することができる。
次いで、自動変換後プログラムのコンパイルエラーがなくなると、自動変換部120により第1のプログラム言語から第2のプログラム言語へ自動変換されなかった、未変換部の修正を行う。このとき、未変換部はコメントアウトされた状態であるため、処理を実行可能な状態とするため、自動変換後プログラムのコメントアウト記号を削除し、コメント化を無効にする(ステップS112)。かかる処理は、コメントアウト解除部160により一括してコメントアウト記号を削除して行うこともでき、ユーザが手修正によって除去することもできる。コメント化を無効した後、ユーザは、プログラムの未変換部を手修正する(ステップS114)。
その後、未変換部を手修正したプログラムをコンパイラ200によってコンパイルする(ステップS116)。コンパイラ200は、コンパイルエラーの発生の有無を確認し(ステップS118)、コンパイルエラーが発生した場合には、出力装置(図示せず。)を用いてコンパイルエラーが発生した旨とコンパイルエラーの内容をユーザへ通知する(ステップS120)。ユーザは、通知されたコンパイルエラーの内容に基づいてプログラムを手修正し(ステップS122)、再度コンパイルを実行する。そして、プログラムのコンパイルエラーが発生しなくなるまでステップS116〜S122の処理を繰り返し、コンパイルエラーがなくなったとき、第1のプログラム言語で記述されたプログラム(変換前プログラム)から第2のプログラム言語で記述されたプログラム(変換後プログラム)が生成されたことになる(ステップS124)。
以上、本実施形態にかかる言語変換装置100を用いた言語変換処理の作業フローについて説明した。言語変換装置100を用いることにより、自動変換できない箇所に対してはコメントアウトして処理が実行されない状態とし、自動変換された箇所のみをコンパイル可能とする。そして、自動変換後プログラムのコンパイルエラーから、変換ルールの定義ミスを検出することにより、効率的に変換ルールの誤り箇所を検出することができる。このように誤り箇所を検出して修正を行うことで変換ルールの精度が向上され、自動変換の精度が高まる。また、自動変換部分のコンパイルエラーがなくなった状態で手修正を行うことで、作業の手戻りを低減することができ、効率的なプログラムの言語変換を行うことができる。
なお、本実施形態に係る言語変換装置100は、具体的には、CPUや、例えばROM、RAM等の記憶装置を備えたコンピュータ等の情報処理装置により実現することが可能である。この場合、言語変換装置100は、1つの機器により構成されていてもよく、複数の機器により構成されていてもよい。また、言語変換装置100の機能を実現するソフトウェアのプログラムを記録した記憶媒体を、コンピュータ等に供給することによっても実行させることによっても、本発明の目的を達成できる。記憶媒体に記憶されたプログラムは、コンピュータ等の情報処理装置により読み出されて、実行される。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
100 言語変換装置
110 入力部
120 自動変換部
130 誤り検出部
140 通知部
150 変換ルール修正部
160 コメントアウト解除部
170 ルール記憶部
200 コンパイラ
300 プログラム記憶部

Claims (6)

  1. 第1のプログラミング言語で記述されたプログラムを第2のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置であって、
    予め作成された前記第1のプログラミング言語から前記第2のプログラミング言語へ変換する変換ルールに基づいて、前記第1のプログラミング言語で記述されたプログラムのうち、前記第1のプログラミング言語から前記第2のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換部と、
    前記自動変換部により前記第2のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出する誤り検出部と、
    前記誤り検出部により検出された前記変換ルールの誤り箇所をユーザに通知する通知部と、
    前記変換ルールまたは前記プログラムの修正情報および前記言語変換装置の操作情報が入力される入力部と、
    を備えることを特徴とする、言語変換装置。
  2. 前記誤り検出部は、前記変換ルールにおける変換後の文字列とコンパイルエラーとなっている文字列とを比較し、これらの文字列が一致する前記変換ルールの記載箇所を誤り箇所として検出することを特徴とする、請求項1に記載の言語変換装置。
  3. 前記入力部へ入力されたコメントアウト解除操作情報に基づいて、正常にコンパイルされた前記自動変換部により前記第2のプログラミング言語に変換されたプログラムのコメントアウトを外すコメントアウト解除部を備えることを特徴とする、請求項1または2に記載の言語変換装置。
  4. 前記通知部は、表示部に表示された前記変換ルールの誤り箇所をハイライト表示してユーザに通知することを特徴とする、請求項1〜3のいずれか1項に記載の言語変換装置。
  5. 第1のプログラミング言語で記述されたプログラムを第2のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換方法であって、
    コンピュータが実行する、
    予め作成された前記第1のプログラミング言語から前記第2のプログラミング言語へ変換する変換ルールに基づいて、前記第1のプログラミング言語で記述されたプログラムのうち、前記第1のプログラミング言語から前記第2のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトするステップと、
    前記第2のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出するステップと、
    出された前記変換ルールの誤り箇所をユーザに通知するステップと、
    前記ユーザから入力された修正情報に基づいて前記変換ルールの誤り箇所を修正するステップと、
    常にコンパイルされた前記第2のプログラミング言語に変換されたプログラムのコメントアウトを外すステップと、
    前記コメントアウトが外された未変換部分を前記ユーザが修正した前記プログラムをコンパイルするステップと、
    を含むことを特徴とする、言語変換方法。
  6. 第1のプログラミング言語で記述されたプログラムを第2のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置として機能させるためのプログラムであって、
    予め作成された前記第1のプログラミング言語から前記第2のプログラミング言語へ変換する変換ルールに基づいて、前記第1のプログラミング言語で記述されたプログラムのうち、前記第1のプログラミング言語から前記第2のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換手段と、
    前記自動変換手段により前記第2のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出する誤り検出手段と、
    前記誤り検出手段により検出された前記変換ルールの誤り箇所をユーザに通知する通知手段と、
    前記変換ルールまたは前記プログラムの修正情報および前記言語変換装置の操作情報が入力される入力手段と、
    を備えることを特徴とする言語変換装置としてコンピュータを機能させるためのプログラム。
JP2009250689A 2009-10-30 2009-10-30 言語変換装置、言語変換方法およびプログラム Expired - Fee Related JP5293563B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009250689A JP5293563B2 (ja) 2009-10-30 2009-10-30 言語変換装置、言語変換方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009250689A JP5293563B2 (ja) 2009-10-30 2009-10-30 言語変換装置、言語変換方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2011096083A JP2011096083A (ja) 2011-05-12
JP5293563B2 true JP5293563B2 (ja) 2013-09-18

Family

ID=44112904

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009250689A Expired - Fee Related JP5293563B2 (ja) 2009-10-30 2009-10-30 言語変換装置、言語変換方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5293563B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5405684B1 (ja) * 2013-03-28 2014-02-05 株式会社バリュー ソースプログラムのプログラミング言語変換装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5560009A (en) * 1990-09-21 1996-09-24 Hewlett-Packard Company Generating symbolic debug information by merging translation and compiler debug information
JPH0954696A (ja) * 1995-08-18 1997-02-25 Hitachi Ltd プログラム生成方法及びトランスレータ、コンパイラ並びに実行時ライブラリ
JP4724387B2 (ja) * 2004-06-24 2011-07-13 富士通株式会社 プログラム変換プログラム、プログラム変換装置およびプログラム変換方法
JP5038760B2 (ja) * 2007-03-28 2012-10-03 株式会社東芝 ソースコード変換装置及びソースコード変換方法
JP5109646B2 (ja) * 2007-12-21 2012-12-26 Jfeスチール株式会社 プログラムソース変換装置
JP5181788B2 (ja) * 2008-04-01 2013-04-10 新日鐵住金株式会社 ソースプログラムの言語変換装置、方法及びプログラム

Also Published As

Publication number Publication date
JP2011096083A (ja) 2011-05-12

Similar Documents

Publication Publication Date Title
US8117589B2 (en) Metadata driven API development
US9619211B2 (en) Code suggestion in a software development tool
US8627289B2 (en) Detecting configuration problems in an eclipse-based software application
US20160357519A1 (en) Natural Language Engine for Coding and Debugging
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
US20160253157A1 (en) Software refactoring
JP2009176064A (ja) ソフトウェアリファクタリング支援装置および方法
JP5293563B2 (ja) 言語変換装置、言語変換方法およびプログラム
US20130080892A1 (en) Information processing device, gui manipulation assistance method, and computer-readable recording medium
JP2005284785A (ja) プログラム開発装置
US9542182B2 (en) Standardization of variable names in an integrated development environment
JP5942018B1 (ja) ソースコード変換プログラム
JP2008020972A (ja) ソフトウエア解析システム
JP2006079484A (ja) システム移行に伴うソースプログラム変換プログラム
KR101670726B1 (ko) 중간 언어 코드의 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
JPH10293683A (ja) プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体
US8839207B2 (en) Debugging extensible markup language
US20090158250A1 (en) Systems, methods and computer program products for operation history management for hpc programs optimization
JP2011090511A (ja) 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法
JP2024013784A (ja) ソースコード修正支援装置およびソースコード修正支援方法
JP2007265098A (ja) マクロ定義情報取得装置
JP2022028455A (ja) 変換補助プログラム、変換補助方法及び変換補助装置
JP2011053948A (ja) コンパイルエラー処理システム及びプログラム
Wang et al. Creating Data-Driven SAS® Code with CALL EXECUTE

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130416

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: 20130514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130527

R151 Written notification of patent or utility model registration

Ref document number: 5293563

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees