(57)【要約】【課題】手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能な言語変換装置を提供する。【解決手段】本発明の言語変換装置は、第１のプログラミング言語から第２のプログラミング言語へ変換する変換ルールに基づいて、第１のプログラミング言語で記述されたプログラムのうち、第１のプログラミング言語から第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換部と、自動変換部により第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際にコンパイラから出力されたコンパイルエラーに基づいて、変換ルールの誤り箇所を検出する誤り検出部と、誤り検出部により検出された変換ルールの誤り箇所をユーザに通知する通知部と、変換ルールまたはプログラムの修正情報および言語変換装置の操作情報が入力される入力部とを備える。【選択図】図１
2011096083.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラミング言語で記述されたプログラムを第２のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置であって、
予め作成された前記第１のプログラミング言語から前記第２のプログラミング言語へ変換する変換ルールに基づいて、前記第１のプログラミング言語で記述されたプログラムのうち、前記第１のプログラミング言語から前記第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換部と、
前記自動変換部により前記第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出する誤り検出部と、
前記誤り検出部により検出された前記変換ルールの誤り箇所をユーザに通知する通知部と、
前記変換ルールまたは前記プログラムの修正情報および前記言語変換装置の操作情報が入力される入力部と、
を備えることを特徴とする、言語変換装置。
【請求項２】
前記誤り検出部は、前記変換ルールにおける変換後の文字列とコンパイルエラーとなっている文字列とを比較し、これらの文字列が一致する前記変換ルールの記載箇所を誤り箇所として検出することを特徴とする、請求項１に記載の言語変換装置。
【請求項３】
前記入力部へ入力されたコメントアウト解除操作情報に基づいて、正常にコンパイルされた前記自動変換部により前記第２のプログラミング言語に変換されたプログラムのコメントアウトを外すコメントアウト解除部を備えることを特徴とする、請求項１または２に記載の言語変換装置。
【請求項４】
前記通知部は、表示部に表示された前記変換ルールの誤り箇所をハイライト表示してユーザに通知することを特徴とする、請求項１〜３のいずれか１項に記載の言語変換装置。
【請求項５】
第１のプログラミング言語で記述されたプログラムを第２のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換方法であって、
予め作成された前記第１のプログラミング言語から前記第２のプログラミング言語へ変換する変換ルールに基づいて、前記第１のプログラミング言語で記述されたプログラムのうち、前記第１のプログラミング言語から前記第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトするステップと、
前記第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出するステップと、
前記誤り検出部により検出された前記変換ルールの誤り箇所をユーザに通知するステップと、
前記変換ルールの誤り箇所を修正するステップと、
前記正常にコンパイルされた前記第２のプログラミング言語に変換されたプログラムのコメントアウトを外すステップと、
前記コメントアウトが外された未変換部分を修正するステップと、
を含むことを特徴とする、言語変換方法。
【請求項６】
第１のプログラミング言語で記述されたプログラムを第２のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置として機能させるためのプログラムであって、
予め作成された前記第１のプログラミング言語から前記第２のプログラミング言語へ変換する変換ルールに基づいて、前記第１のプログラミング言語で記述されたプログラムのうち、前記第１のプログラミング言語から前記第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換手段と、
前記自動変換手段により前記第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際に前記コンパイラから出力されたコンパイルエラーに基づいて、前記変換ルールの誤り箇所を検出する誤り検出手段と、
前記誤り検出手段により検出された前記変換ルールの誤り箇所をユーザに通知する通知手段と、
前記変換ルールまたは前記プログラムの修正情報および前記言語変換装置の操作情報が入力される入力手段と、
を備えることを特徴とする、言語変換装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、言語変換装置、言語変換方法およびプログラムに関する。
【背景技術】
【０００２】
プログラムの実行環境、例えばコンピュータハードウェアやオペレーションシステムの更新・変更の変化等に伴い、プログラムを記述する言語の変更が必要となる場合がある。例えば、ＦｏｒｔｒａｎからＣ言語へ変換する場合等である。プログラムの記述言語を変更するために、第１のプログラム言語で記述されたプログラム（旧ソース）を第２のプログラム言語で記述されたプログラム（新ソース）に変換するプログラムコンバータが使用される。プログラムコンバータは、例えば図４に示すように、一般に、対応する第１のプログラム言語の命令・予約語等の文字列と第２のプログラム言語の命令・予約語等の文字列とが関連付けて定義された変換ルールに基づいて、旧ソースのプログラムの記述言語の変換し、新ソースを生成する。このような変換ルールは、ユーザによって予め定義されている。プログラムコンバータは、変換ルールの対応関係に基づいて、第１のプログラム言語で記述されたプログラムを第２のプログラム言語で記述されたプログラムに自動変換する。
【０００３】
プログラムコンバータを用いることによって、プログラムの全記述を自動的に他のプログラム言語による記述へ変換できることが理想的であるが、必ずしも全記述を変換できるとは限らない。これは、プログラム言語間において対応させることのできない文字列が存在したり、変換ルールの定義に誤りが存在したりすること等の理由による。プログラムコンバータにより変換されなかった未変換部については、ユーザが手修正を行う必要がある。このため、プログラムを完全に変換するためには多くの時間を要していた。
【０００４】
このような問題を解決するため、例えば、特許文献１には、変換前ソースデータモデルから変換後ソースデータモデルを生成する際に、変換が困難な箇所に要確認タグを埋め込んだ変換後ソースファイルを生成するプログラム変換装置が開示されている。この変換後ソースファイルの要確認タグの部分を適切な記述に置き換えることにより、保守性の高い変換プログラムを効率よく取得することができると記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１１７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１においても、要確認タグの部分を開発者が編集して適切な記述に置き換えなければならず、プログラムを手修正する必要がある。このように、プログラムコンバータによる変換のみでは手修正しなければならない未変換部が存在する場合、未変換部分があるとコンパイルエラーが発生するため、コンパイル前に未変換部分を手修正する必要がある。従来のプログラムコンバータを用いた作業は、例えば図５に示す作業フローに沿って行われる。
【０００７】
まず、プログラムコンバータより、予め作成された変換ルールに基づいて、プログラムの記述言語を自動変換する（ステップＳ１０）。次いで、プログラムコンバータによって変換できなかった未変換部分を手修正し（ステップＳ１１）、すべての修正を終えた段階で変換後プログラムをコンパイルする（ステップＳ１２）。そして、コンパイル時にコンパイルエラーの発生の有無を確認し（ステップＳ１３）、コンパイルエラーが発生している場合には、コンパイルエラーの内容をユーザに通知する（ステップＳ１４）。このときユーザは、コンパイルエラーの内容を参照して、プログラムを手修正する。一方、コンパイルエラーが発生しなかった場合には、正しく言語変換された変換後プログラムが生成されたことになる（ステップＳ１５）。
【０００８】
しかしながら、このような作業フローでは、変換ルールの定義の誤りが発覚するのはステップＳ１２のコンパイル後となる。このため、変換ルールの修正は、ステップＳ１２でのコンパイル後に行われていた。この場合、変換ルールを修正した後、再度ステップＳ１０の処理からやり直すと、コンパイル前に行った未変換部の手修正を再度行わなければならず、作業の手戻りが大きくなりすぎるため、実際にはルールの修正を行わず変換されてプログラムの変換ミス部を手で修正して対応している。
【０００９】
これを解決するため、例えば、未変換部分を手修正する前に、プログラムコンバータにより自動変換された時点での変換後プログラムをコンパイルすると、変換後プログラムの未変換部分は必ずコンパイルエラーとなってしまうため、コンパイルエラーが多発する。また、発生したコンパイルエラーが、未変換部分に起因するものであるのか、あるいは変換ルールの定義の誤りに起因するものであるのか、区別することが困難であり、変換ルールの誤り箇所を発見することは困難である。
【００１０】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能な、新規かつ改良された言語変換装置、言語変換方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、第１のプログラミング言語で記述されたプログラムを第２のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換装置であって、予め作成された第１のプログラミング言語から第２のプログラミング言語へ変換する変換ルールに基づいて、第１のプログラミング言語で記述されたプログラムのうち、第１のプログラミング言語から第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトする自動変換部と、自動変換部により第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際にコンパイラから出力されたコンパイルエラーに基づいて、変換ルールの誤り箇所を検出する誤り検出部と、誤り検出部により検出された変換ルールの誤り箇所をユーザに通知する通知部と、変換ルールまたはプログラムの修正情報および言語変換装置の操作情報が入力される入力部と、を備えることを特徴とする、言語変換装置が提供される。
【００１２】
本発明によれば、自動変換部は、第１のプログラム言語から第２のプログラム言語へ自動変換できない箇所に対してはコメントアウトして処理が実行されない状態とし、第１のプログラム言語から第２のプログラム言語へ自動変換された箇所のみをコンパイル可能とする。そして、自動変換後プログラムのコンパイルエラーから、変換ルールの定義ミスを検出することにより、効率的に変換ルールの誤り箇所を検出することができる。このように誤り箇所を検出して修正を行うことで変換ルールの精度が向上され、自動変換の精度が高まる。また、自動変換部分のコンパイルエラーがなくなった状態で手修正を行うことで、作業の手戻りを低減することができ、効率的なプログラムの言語変換を行うことができる。
【００１３】
ここで、誤り検出部は、例えば、変換ルールにおける変換後の文字列とコンパイルエラーとなっている文字列とを比較し、これらの文字列が一致する変換ルールの記載箇所を誤り箇所として検出することができる。
【００１４】
また、本発明の言語変換装置は、入力部へ入力されたコメントアウト解除操作情報に基づいて、正常にコンパイルされた自動変換部により第２のプログラミング言語に変換されたプログラムのコメントアウトを外すコメントアウト解除部を備えることもできる。これにより、自動的にコメントアウトを外すことができるので、ユーザの作業負荷を低減させることができる。
【００１５】
通知部は、例えば、表示部に表示された変換ルールの誤り箇所をハイライト表示してユーザに通知するようにしてもよい。このように、ユーザに分かりやすく誤り箇所を通知することで、変更ルールの修正作業を容易にすることができる。
【００１６】
また、上記課題を解決するために、本発明の別の観点によれば、第１のプログラミング言語で記述されたプログラムを第２のプログラミング言語で記述されたプログラムに変換する際にコンパイラを用いるプログラムの言語変換方法であって、予め作成された第１のプログラミング言語から第２のプログラミング言語へ変換する変換ルールに基づいて、第１のプログラミング言語で記述されたプログラムのうち、第１のプログラミング言語から第２のプログラミング言語に変換可能な部分は自動変換し、自動変換できない部分はコメントアウトするステップと、第２のプログラミング言語に変換されたプログラムをコンパイラによりコンパイルした際にコンパイラから出力されたコンパイルエラーに基づいて、変換ルールの誤り箇所を検出するステップと、誤り検出部により検出された変換ルールの誤り箇所をユーザに通知するステップと、変換ルールの誤り箇所を修正するステップと、正常にコンパイルされた第２のプログラミング言語に変換されたプログラムのコメントアウトを外すステップと、コメントアウトが外された未変換部分を修正するステップと、を含むことを特徴とする、言語変換方法が提供される。
【００１７】
さらに、上記課題を解決するために、本発明の別の観点によれば、コンピュータに上記の言語変換装置として機能させるためのプログラムが提供される。かかるプログラムは、コンピュータが備える記憶装置に格納され、コンピュータが備えるＣＰＵに読み込まれて実行されることにより、そのコンピュータを上記の言語変換装置として機能させる。また、当該プログラムが記録された、コンピュータで読み取り可能な記録媒体も提供される。記録媒体は、例えば磁気ディスクや光ディスクなどである。
【発明の効果】
【００１８】
以上説明したように本発明によれば、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能な言語変換装置、言語変換方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る言語変換装置による言語変換処理を示す概念図である。
【図２】同実施形態に係る言語変換装置の機能構成を示す機能ブロック図である。
【図３】同実施形態に係る言語変換装置を用いた言語変換処理の作業フローを示すフローチャートである。
【図４】従来のプログラムコンバータによる言語変換処理を示す概念図である。
【図５】従来のプログラムコンバータを用いた作業フローの一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２１】
［言語変換装置による言語変換処理の概要］
まず、図１を参照して、本発明の実施形態に係る言語変換装置による言語変換処理の概要について説明する。なお、図１は、本実施形態に係る言語変換装置による言語変換処理を示す概念図である。
【００２２】
本実施形態に係る言語変換装置は、第１のプログラム言語で記述されたプログラムを、変換ルールに基づいて、第２のプログラム言語で記述されたプログラムを生成するプログラムコンバータである。言語変換装置は、言語変換処理を開始すると、変換ルールを参照しながら変換エンジンによりプログラムの言語を変換していく。変換ルールは、第１のプログラム言語と第２のプログラム言語との間の、命令等の予約語、規約、用語等の対応関係を規定したものであり、特定のプログラムだけでなくこれらの言語間における言語変換処理において共通して使用可能な定義情報である。例えば、図１に示すように、第１のプログラム言語で記述された自動変換前プログラムに、「ＬＯＯＰ」、「ＩＦ」、「ＩＡＩ」の文字列が記載されているとする。このとき、変換エンジンは、変換ルールとして定義されている第１のプログラム言語と第２のプログラム言語との対応関係を参照して、第１のプログラム言語での文字列「ＬＯＯＰ」、「ＩＦ」、「ＩＡＩ」に対応する第２のプログラム言語での文字列を取得する。
【００２３】
変換ルールには、第１のプログラム言語と第２のプログラム言語との間で対応関係がある文字列が記載されている。図１の変換ルールでは、第１のプログラム言語の文字列「ＬＯＯＰ」は第２のプログラム言語の文字列「ｗｈｉｌｅ」に対応し、第１のプログラム言語の文字列「ＩＦ」は第２のプログラム言語の文字列「ｉｅ」に対応することが規定されている。これにしたがって、変換エンジンは、第１のプログラム言語で記述されたプログラムを第２のプログラム言語で記述されたプログラムに変換する。
【００２４】
ここで、自動変換前プログラムに記載されていた文字列「ＩＡＩ」は変換ルールに規定されておらず、第２のプログラム言語に変換することができない。変換エンジンは、このような文字列については自動変換することはできない。そこで、本実施形態に係る言語変換装置は、このように自動変換できない部分をコメントアウトする処理を行う。コメントアウトとは、自動変換後プログラムにおいて特定の記号等を用いて、記述された処理が実行されないようにすることである。例えば、図１の自動変換後プログラムに示すように、文字列「ＩＡＩ」の先頭にコメントアウト記号「／／」を追加して「／／ＩＡＩ」とすることにより、文字列「ＩＡＩ」による処理が実行されないようにすることができる。
【００２５】
なお、コメントアウトされる記述は、変換ルールに規定されていない文字列すべてとしてもよく、図１に示すようにコメントアウトされる文字列を規定した未変換ルールに規定された文字列としてもよい。第１のプログラム言語と第２のプログラム言語との間で対応関係がない文字列は、変換ルールを規定する段階で認識することができる。これらの文字列をコメントアウトされるべき文字列、すなわち自動変換せず未変換のままとする文字列を、未変換ルールとして規定する。変換ルールおよび未変換ルールのいずれにも含まれない記述がある場合には、かかる記述はコメントアウトするものとする。
【００２６】
このようにして、言語変換装置により第１のプログラム言語から第２のプログラム言語に変換された自動変換後プログラムが生成される。そして、ユーザは、コンパイラを用いて自動変換後プログラムをコンパイルし、正常にコンパイルされるか否かを確認する。すなわち、コンパイラによってコンパイルされるのは変換ルールに基づいて変換された記述部分のみであり、変換エンジンによってコメントアウトされた未変換部分はコンパイルの対象外となる。したがって、かかるコンパイルによって発生したコンパイルエラーは、変換ルールの定義の誤りに起因するものであることがわかる。なお、上記ではユーザの指示により自動変換後プログラムをコンパイラに入力してコンパイルするようにした。しかし、言語変換装置が当該自動変換後プログラムを直接にコンパイラ（プログラム）に入力してコンパイルし、コンパイルによって発生したコンパイルエラーを含む情報を受け取るようにしてもよい。その際、言語変換装置に、自動変換後プログラムおよびコンパイルエラーを含む情報をユーザにも通知させてもよい。
【００２７】
自動変換後プログラムのコンパイルにおいてコンパイルエラーが発生した場合には、コンパイルエラーの内容が、コンパイラからのコメント出力によってユーザに通知されるとともに、ルールチェック機構へ出力される。ルールチェック機構は、コンパイルエラーの内容に基づいて、変換ルールの誤り箇所を検出する。検出された変換ルールの誤り箇所はユーザへ通知される。ユーザは、かかる通知を受けて変換ルールを修正し、言語変換装置に、修正後の変換ルールに基づいて自動変換前プログラムの言語変換処理を再度実行させる。こうして、正しく修正された変換ルールに基づいて言語変換された自動変換後プログラムを取得することができる。
【００２８】
例えば、図１の変換ルールにおいて第１のプログラム言語の文字列「ＩＦ」は第２のプログラム言語の文字列「ｉｅ」に変換すると規定されているが、第１のプログラム言語の文字列「ＩＦ」に対応する正しい第２のプログラム言語の文字列は文字列「ｉｆ」であるとする。誤りを含む変換ルールに基づいて変換エンジンにより自動変換された自動変換後プログラムには、誤った記述が含まれることになり、コンパイラによりコンパイルした際にエラーとして発見される。
【００２９】
コンパイラは、コンパイルエラーが発生した旨とその内容の情報（すなわち、コンパイルエラーが発生した場所とそのエラー種別、コンパイラがエラーと判断した文字列などの情報）とをユーザに通知する。また、コンパイラはコンパイルエラーの内容をルールチェック機構に出力する。ルールチェック機構は、変換ルールにおける、コンパイルエラーとなった第２のプログラム言語の文字列「ｉｅ」の規定箇所を検出し、検出された規定箇所を誤り箇所としてユーザに通知する。ユーザへの通知方法としては、例えば、表示部に表示された変換ルールの誤り箇所をハイライト表示して分かりやすく示したり、変換ルールにおける規定位置（例えば行数等）を通知したりすることが考えられる。かかる例では第２のプログラム言語の文字列「ｉｅ」の規定箇所がユーザに示される。ユーザは、文字列「ｉｅ」を文字列「ｉｆ」に修正し、変更ルールを更新する。
【００３０】
このような変換エンジンによる自動言語変換処理と、コンパイルエラーに基づく変換ルールの修正処理とをコンパイルエラーが発生しなくなるまで繰り返し、未変換部分の手修正前に変換ルールの誤りを洗い出す。そして、変換ルールに基づいて変換された自動変換後プログラムのコンパイルエラーがなくなったとき、ユーザがコメントアウトされた未変換部分のコメントアウトの処理により追記された記号を外し、未変換部分を第２のプログラム言語により記述して手修正する。そして、修正後のプログラムをコンパイラによりコンパイルして、正常にコンパイルされるか否かを確認する。この段階では、プログラムの全記述内容についてコンパイルされるが、変換ルールにより自動変換された部分については、コンパイルエラーは発生しないことが確認されている。したがって、かかるコンパイルによって発生したコンパイルエラーは、手修正時のミスに起因するものであることがわかる。
【００３１】
コンパイルエラーが発生した場合には、コンパイルエラーが発生した旨とその内容がユーザに通知される。ユーザは、かかる通知を参照してプログラムの誤り部分を修正し、修正後のプログラムをコンパイラにより再度コンパイルする。かかる処理をコンパイルエラーが発生しなくなるまで繰り返して、第１のプログラム言語で記述されたプログラムを第２のプログラム言語で記述されたプログラムへ正しく変換された変換後プログラムが取得される。
【００３２】
以上、本実施形態に係る言語変換装置による言語変換処理の概要について説明した。このような言語変換装置の機能構成および言語変換処理について、以下、図２および図３に基づいて説明する。なお、図２は、本実施形態にかかる言語変換装置１００の機能構成を示す機能ブロック図である。図３は、本実施形態にかかる言語変換装置１００を用いた言語変換処理の作業フローを示すフローチャートである。
【００３３】
［言語変換装置の機能構成］
本実施形態に係る言語変換装置１００は、図２に示すように、入力部１１０と、自動変換部１２０と、誤り検出部１３０と、通知部１４０と、変換ルール修正部１５０と、コメントアウト解除部１６０と、ルール記憶部１７０とからなる。また、言語変換装置１００は、プログラムをコンパイルするコンパイラ２００と情報を送受信可能に構成されている。変換対象となる第１のプログラム言語で記述されたプログラムは、言語変換装置１００およびコンパイラ２００によって参照・更新可能なプログラム記憶部３００に記憶されているとする。
【００３４】
入力部１１０には、例えばキーボートやボタン、マウス等の入力装置（図示せず。）を介してユーザから変換ルールの修正情報や、プログラムの修正情報、当該言語変換装置１００の操作情報等の情報が入力されるインタフェースとして機能する。入力部１１０は、入力された各情報を自動変換部１２０や、変換ルール修正部１５０、コメントアウト解除部１６０へ出力する。
【００３５】
自動変換部１２０は、後述するルール記憶部１７０に記憶された変換ルールに基づいて、第１のプログラム言語で記述された自動変換前プログラムを第２のプログラム言語に変換するとともに、変換ルールによって変換できない文字列が規定された未変換ルールに基づいて自動変換できない記述部分をコメントアウトする。自動変換部１２０は、図１のプログラムコンバータの変換エンジンに対応する。自動変換部１２０は、このように自動変換前プログラムに対して言語変換およびコメントアウト処理を行って自動変換後プログラムを生成し、自動変換後プログラムをプログラム記憶部３００に記憶する。
【００３６】
誤り検出部１３０は、コンパイラ２００から通知された自動変換後プログラムのコンパイルエラーに基づいて、変換ルールの誤り箇所を検出する。誤り検出部１３０は、図１のルールチェック機構として機能する。誤り検出部１３０は、コンパイルエラーとなった第２のプログラム言語の文字列をルール記憶部１７０に記憶された変換ルールから検出し、変換ルールの誤り箇所を通知部１４０へ出力する。なお、誤り検出部１３０が、コンパイラがエラーを検出した自動変換後プログラムの問題箇所に適用した変換ルールを検出し、この変換ルールの誤り箇所を通知部１４０へ出力するようにしてもよい。
【００３７】
通知部１４０は、外部の出力装置（図示せず。）によってユーザに情報を通知するために、言語変換装置１００から出力される情報を出力装置へ送信するインタフェースとして機能する。通知部１４０は、例えば、誤り検出部１３０から入力される変換ルールの誤り箇所を示す情報や、コメントアウト解除部１６０から入力されるコメントアウト解除終了情報、コンパイラ２００から入力されたコンパイルエラーの内容等を出力装置へ出力する。なお、通知部１４０に接続される出力装置としては、例えば液晶ディスプレイや有機ＥＬディスプレイ等の表示装置やスピーカ等の音声出力装置等を用いることができる。
【００３８】
変換ルール修正部１５０は、ユーザにより入力部１１０から入力された変換ルールの修正情報に基づいて、ルール記憶部１７０に記憶された変換ルールの記述を修正して更新する。
【００３９】
コメントアウト解除部１６０は、ユーザにより入力部１１０から入力された指示により、自動変換後プログラムにおいてプログラムの記述をコメントアウトするために記載されたコメントアウト記号を削除して、コメントアウトのない、すなわち記述されたすべての処理を実行可能なプログラムにする処理部である。コメントアウト解除部１６０は、コメントアウト記号（例えば図１に示した「／／」等）をプログラムから抽出して削除する。そして、コメントアウト解除部１６０は、プログラムからコメントアウトを解除する処理を終えると、その旨を通知部１４０へ出力する。
【００４０】
ルール記憶部１７０は、変換ルールや未変換ルールを記憶する、例えばＥＥＰＲＯＭ、ＥＰＲＯＭなどの不揮発性メモリや、ハードディスクおよび円盤型磁性体ディスクなどの磁気ディスクなどの記憶媒体である。ルール記憶部１７０に記憶される変換ルールは、自動変換部１２０および誤り検出部１３０により参照されるとともに、修正情報に基づいて、変換ルール修正部１５０によって修正・更新される。また、本実施形態にかかるルール記憶部１７０には、第２のプログラム言語へ自動変換することのできない第１のプログラム言語の文字列が規定された未変換ルールに記憶されており、自動変換部１２０によるプログラムのコメントアウト処理を行う際に参照される。
【００４１】
コンパイラ２００は、プログラムをコンパイルする処理部である。コンパイラ２００は、入力装置（図示せず。）から入力されたコンパイル実行指示を受けて、プログラム記憶部３００に記憶されたコンパイル対象のプログラムをコンパイルする。コンパイラ２００は、コンパイルしたプログラムのコンパイルエラーの有無を、出力装置（図示せず。）によりユーザへ通知するとともに、言語変換装置１００へ出力する。
【００４２】
プログラム記憶部３００は、プログラムを記憶する記憶部であって、例えばＥＥＰＲＯＭ、ＥＰＲＯＭなどの不揮発性メモリや、ハードディスクおよび円盤型磁性体ディスクなどの磁気ディスクなどの記憶媒体である。プログラム記憶部３００は、変換対象である第１のプログラム言語で記述されたプログラムや、第２のプログラム言語による記述に変換された変換後プログラム、変換後プログラムが生成されるまでに作業過程で生成される中間プログラム（例えば自動変換後プログラムやコメントアウト解除されたプログラム等）も記憶するものとする。なお、中間プログラムについては、例えば言語記憶装置１００に備えられたメモリ（図示せず。）に一時的に記憶しておくようにしてもよい。
【００４３】
［言語変換処理の作業フロー］
このような言語変換装置１００を用いることにより、手修正前に変換ルールの誤り箇所を的確に検出し、プログラムの言語変換処理を効率よく行うことが可能となる。言語変換処理の準備段階として、ユーザは、第１のプログラム言語と第２のプログラム言語との対応関係を規定した変換ルールを作成する。また、第２のプログラム言語に変換できない第１のプログラム言語の文字列については、未変換ルールとして規定する。作成された変換ルールおよび未変換ルールは、ルール記憶部１７０に予め記憶させておく。
【００４４】
本実施形態に係る言語変換装置１００を用いた言語変換処理の作業フローは、図３に示すように、まず、プログラムのルールに基づく自動変換を実行する情報が入力部１１０から入力されると、自動変換部１２０は、ルール記憶部１７０に記憶された変換ルールに基づき、第１のプログラム言語で記述されたプログラムを第２のプログラム言語で記述されたプログラムに自動変換する。かかる自動変換処理とともに、自動変換部１２０は、未変換ルールに基づいて、第２のプログラム言語に変換できない、第１のプログラム言語で記述されたプログラムの記述箇所をコメントアウトする（ステップＳ１００）。このように、自動変換部１２０によって、第１のプログラム言語から第２のプログラム言語へ自動変換可能な部分については言語変換し、変換できない箇所については当該個所の処理が実行されないようにコメントアウトされた、自動変換後プログラムが生成される。自動変換後プログラムは、プログラム記憶部３００に記憶される。
【００４５】
自動変換部１２０による自動変換処理が完了すると、ユーザは入力装置を用いて、自動変換後プログラムをコンパイルする情報を入力装置（図示せず。）を用いてコンパイラ２００へ入力する。コンパイラ２００は、かかる情報の入力を受けると、自動変換後プログラムをプログラム記憶部３００から取得し、コンパイルを実行する（ステップＳ１０２）。そして、コンパイラ２００は、コンパイルエラーの有無を出力装置（図示せず。）を用いてユーザへ通知する（ステップＳ１０４）。
【００４６】
ここで、自動変換後プログラムでコンパイルエラーが発生している場合、コンパイラ２００は、コンパイルエラーの内容を言語変換装置１００へ通知する（ステップＳ１０６）。コンパイルエラーの内容を受け取った言語変換装置１００は、誤り検出部１３０により、変換ルールの誤り箇所を検出し、検出された当該誤り箇所を、出力装置を用いてユーザへ通知する（ステップＳ１０８）。変換ルールの誤り箇所を通知されたユーザは、かかる情報を参照して、変換ルールを訂正する修正情報を入力装置を用いて入力する。修正情報の入力を受けた言語変換装置１００は、変換ルール修正部１５０により、ルール記憶部１７０に記憶された変換ルールを更新する（ステップＳ１１０）。変更ルールが更新されると、ステップＳ１００〜ステップＳ１０４の処理を再度実行し、自動変換後プログラムのコンパイルエラーが発生しなくなるまでステップＳ１００〜Ｓ１１０の処理を繰り返す。これにより、変換ルールの誤り箇所を効率的に検出して修正することができ、自動変換可能な記述については確実かつ正確に自動的に言語変換することができる。
【００４７】
次いで、自動変換後プログラムのコンパイルエラーがなくなると、自動変換部１２０により第１のプログラム言語から第２のプログラム言語へ自動変換されなかった、未変換部の修正を行う。このとき、未変換部はコメントアウトされた状態であるため、処理を実行可能な状態とするため、自動変換後プログラムのコメントアウト記号を削除し、コメント化を無効にする（ステップＳ１１２）。かかる処理は、コメントアウト解除部１６０により一括してコメントアウト記号を削除して行うこともでき、ユーザが手修正によって除去することもできる。コメント化を無効した後、ユーザは、プログラムの未変換部を手修正する（ステップＳ１１４）。
【００４８】
その後、未変換部を手修正したプログラムをコンパイラ２００によってコンパイルする（ステップＳ１１６）。コンパイラ２００は、コンパイルエラーの発生の有無を確認し（ステップＳ１１８）、コンパイルエラーが発生した場合には、出力装置（図示せず。）を用いてコンパイルエラーが発生した旨とコンパイルエラーの内容をユーザへ通知する（ステップＳ１２０）。ユーザは、通知されたコンパイルエラーの内容に基づいてプログラムを手修正し（ステップＳ１２２）、再度コンパイルを実行する。そして、プログラムのコンパイルエラーが発生しなくなるまでステップＳ１１６〜Ｓ１２２の処理を繰り返し、コンパイルエラーがなくなったとき、第１のプログラム言語で記述されたプログラム（変換前プログラム）から第２のプログラム言語で記述されたプログラム（変換後プログラム）が生成されたことになる（ステップＳ１２４）。
【００４９】
以上、本実施形態にかかる言語変換装置１００を用いた言語変換処理の作業フローについて説明した。言語変換装置１００を用いることにより、自動変換できない箇所に対してはコメントアウトして処理が実行されない状態とし、自動変換された箇所のみをコンパイル可能とする。そして、自動変換後プログラムのコンパイルエラーから、変換ルールの定義ミスを検出することにより、効率的に変換ルールの誤り箇所を検出することができる。このように誤り箇所を検出して修正を行うことで変換ルールの精度が向上され、自動変換の精度が高まる。また、自動変換部分のコンパイルエラーがなくなった状態で手修正を行うことで、作業の手戻りを低減することができ、効率的なプログラムの言語変換を行うことができる。
【００５０】
なお、本実施形態に係る言語変換装置１００は、具体的には、ＣＰＵや、例えばＲＯＭ、ＲＡＭ等の記憶装置を備えたコンピュータ等の情報処理装置により実現することが可能である。この場合、言語変換装置１００は、１つの機器により構成されていてもよく、複数の機器により構成されていてもよい。また、言語変換装置１００の機能を実現するソフトウェアのプログラムを記録した記憶媒体を、コンピュータ等に供給することによっても実行させることによっても、本発明の目的を達成できる。記憶媒体に記憶されたプログラムは、コンピュータ等の情報処理装置により読み出されて、実行される。
【００５１】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００５２】
１００    言語変換装置
１１０    入力部
１２０    自動変換部
１３０    誤り検出部
１４０    通知部
１５０    変換ルール修正部
１６０    コメントアウト解除部
１７０    ルール記憶部
２００    コンパイラ
３００    プログラム記憶部
【図１】
2011096083.tif 000003
【図２】
2011096083.tif 000004
【図３】
2011096083.tif 000005
【図４】
2011096083.tif 000006
【図５】
2011096083.tif 000007