(57)【要約】【課題】  コンパイル装置で、拡張言語仕様を使用している箇所に関する情報を出力することを目的とする。【解決手段】  コンパイル装置１の構文解析部１１は、ソースプログラム２から非標準仕様である拡張箇所を検出し、拡張箇所に拡張仕様の種別を設定した中間言語５を生成する。拡張言語仕様収集・編集部１３は、中間言語５の拡張箇所のコードを標準仕様で表す変換文字列を生成し、ソースプログラム２での位置、拡張仕様の種別、変換文字列を示すソース情報をソースコンバートリスト６に登録し、中間言語５およびソースコンバートリスト６を参照して、ソースプログラム２の拡張箇所に特定のマークと変換文字列とを挿入した拡張箇所通知情報４を生成、出力する。【選択図】  図１
2014016914.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
処理対象のソースプログラムから非標準仕様である拡張箇所を検出し、前記拡張箇所で使用されている拡張仕様の種別を特定し、前記検出した拡張箇所ごとに特定した拡張仕様の種別を設定した中間言語を生成し、
前記中間言語および該拡張箇所に設定された拡張仕様の種別を参照して、該拡張箇所のコードを標準仕様で表す変換文字列を生成し、
前記拡張箇所ごとに、前記ソースプログラムにおける位置、設定された拡張仕様の種別、生成された変換文字列を示すソース情報をリストに登録し、
前記中間言語および前記リストを参照して、前記ソースプログラムの該当するソースコードに拡張箇所であることを示すマークおよび前記生成された変換文字列を挿入した拡張箇所通知情報を生成し、
前記拡張箇所通知情報を出力する、処理を実行する
ことを特徴とする拡張言語仕様情報提供方法。
【請求項２】
前記コンピュータは、
前記ソースプログラムにおいて拡張言語仕様の使用に関する統計値を算出し、前記統計値を出力する処理を実行する
ことを特徴とする請求項１に記載の拡張言語仕様情報提供方法。
【請求項３】
前記統計値は、前記ソースプログラムにおける前記拡張箇所数、または、前記ソースプログラムの全行数に対する前記拡張箇所数の割合を含む
ことを特徴とする請求項２に記載の拡張言語仕様情報提供方法。
【請求項４】
前記コンピュータは、
前記中間言語からオブジェクトプログラムを生成する際に、ソースコンバートリストを参照して、前記拡張箇所のソースコードを、対応するコンバート文字列をもとに修正する処理を実行する
ことを特徴とする請求項１ないし請求項３に記載の拡張言語仕様情報提供方法。
【請求項５】
コンピュータに、
処理対象のソースプログラムから非標準仕様である拡張箇所を検出し、前記拡張箇所で使用されている拡張仕様の種別を特定し、前記検出した拡張箇所ごとに特定した拡張仕様の種別を設定した中間言語を生成し、
前記中間言語および該拡張箇所に設定された拡張仕様の種別を参照して、該拡張箇所のコードを標準仕様で表す変換文字列を生成し、
前記拡張箇所ごとに、前記ソースプログラムにおける位置、設定された拡張仕様の種別、生成された変換文字列を示すソース情報をリストに登録し、
前記中間言語および前記リストを参照して、前記ソースプログラムの該当するソースコードに拡張箇所であることを示すマークおよび前記生成された変換文字列を挿入した拡張箇所通知情報を生成し、
前記拡張箇所通知情報を出力する、処理を実行させるための
拡張言語仕様情報提供プログラム。
【請求項６】
ソースプログラムをコンパイルするコンパイル装置であって、
処理対象のソースプログラムを取得する処理部と、
前記ソースプログラムから非標準仕様である拡張箇所を検出し、前記拡張箇所で使用されている拡張仕様の種別を特定し、前記検出した拡張箇所ごとに特定した拡張仕様の種別を設定した中間言語を生成する処理部と、
前記中間言語および該拡張箇所に設定された拡張仕様の種別を参照して、該拡張箇所のコードを標準仕様で表す変換文字列を生成し、前記拡張箇所ごとに、前記ソースプログラムにおける位置、設定された拡張仕様の種別、生成された変換文字列を示すソース情報をリストに登録する処理部と、
前記中間言語および前記リストを参照して、前記ソースプログラムの該当するソースコードに拡張箇所であることを示すマークおよび前記生成された変換文字列を挿入した拡張箇所通知情報を生成し、前記拡張箇所通知情報を出力する処理部とを備える
ことを特徴とするコンパイル装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータソフトウェアのソースプログラムのコンパイル処理技術に関する。より詳しくは、コンピュータのソフトウェアのコンパイル処理において、コンパイル処理に関連する情報を出力する技術に関する。
【背景技術】
【０００２】
コンピュータソフトウェアを記述するプログラミング言語（以下、単に言語という）には、ＩＳＯ規格のような標準化規格に基づく言語仕様を超えて独自に拡張した仕様（以下、拡張言語仕様という）を持つものがあり、例えば、配列、構造体、共用体、演算子、文法等の様々な仕様が拡張される。一例として、Ｃ言語およびＣ＋＋言語のようなプログラミング言語には、例えばＩＳＯ規格に準拠する標準仕様の他、ＧＮＵの拡張仕様のように、言語処理系によって独自に拡張した拡張言語仕様がある。
【０００３】
コンパイル装置（コンパイラ）は、ソースプログラムの翻訳機能として、各々の言語仕様に沿って記述されたソースプログラムを翻訳するためのオプションを用意している。例えば、コンパイラは、ＩＳＯ規格に準拠する翻訳処理を行うか、予め設定された拡張言語仕様に基づく翻訳処理を行うかをユーザが選択できるオプションを備え、ユーザが選択したオプションにしたがってソースプログラムの翻訳処理を実行する。または、コンパイラは、ＩＳＯ規格または拡張言語仕様に違反した部分に対して診断メッセージを出力する。診断メッセージが出力された場合には、ユーザは、その内容に応じて適切な修正を行い、コンパイラが、再度翻訳して実行プログラムを作成する。
【０００４】
ところで、ユーザは、ソースプログラムを自ら作成する場合もあるが、オープンソースソフトウェア（ソースコードが無償公開され、コードの改良や再配布が容認されているソフトウェア）のプログラムのように、既に世の中に流通しているものを利用したい場合があり、オープンソースのプログラムの翻訳および実行プログラム生成が必要となる。
【０００５】
しかし、オープンソースのプログラムは、ＩＳＯ規格に規定された仕様だけで記述されているものは少なく、何らかの拡張言語仕様が使用されている場合が多い。そのため、拡張言語仕様である可能性が高いオープンソースのプログラムを移植または改造等して再利用する場合に、そのままではコンパイラで翻訳することができないことが多い。
【０００６】
コンパイラがオープンソースのプログラムを翻訳できなかった場合に、利用者は、コンパイラが出力する診断メッセージに基づいて、ソースプログラムの翻訳されなかった部分を手作業で修正する必要、もしくは、再利用したいオープンソースのプログラムに適したコンパイラのオプション機能を見つけだす必要がある。
【０００７】
例えば、Ｃ言語のソースプログラムを入力し、例えばＫ＆Ｒ仕様とＡＮＳＩ標準仕様とで相違するパターンを検出し、指定に応じたソース自動修正を行い、検出情報を出力するプログラム検査方法が知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−３１２３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
プログラミング言語の拡張言語仕様がサポートする範囲は、言語処理系ごと、または、バージョンごとによってまちまちである。そのため、他の言語処理系で開発されたプログラムを移植または改造する場合に、次のような課題がある。
【００１０】
・  拡張言語仕様の使用が、プログラムの移植性や可搬性の妨げになる。
【００１１】
・  ソースプログラム内で、どのような拡張言語仕様が使用されているか判らない。
【００１２】
・  診断メッセージの内容（翻訳不可な部分を示す情報）だけでは、翻訳不可が、拡張言語仕様の使用による原因であるかどうかを確定できない。
【００１３】
・  拡張言語仕様から標準規格（ＩＳＯ規格準拠）のプログラムへの書き替え作業に手間がかかる。
【００１４】
さらに、オープンソースのプログラムの翻訳を行いたいシステムエンジニア（ＳＥ）が、プログラムの拡張言語仕様の知識を持っていない場合や、コンパイラが診断メッセージを出力しプログラムの翻訳を完了しなかった場合には、システムエンジニア自身では課題を解決できず、コンパイラの開発元に翻訳できない原因の調査を依頼してくることがある。
【００１５】
そのため、どのような拡張言語仕様であるかが不明なオープンソースのプログラムが処理対象となる場合に、コンパイラが、ソースプログラムが、標準仕様（ＩＳＯ規格）や特定の拡張言語仕様に違反したことを表す診断メッセージを出力する機能だけではなく、拡張言語仕様が使用されている箇所や仕様の内容を理解させる手助けとなる機能を備えることが求められている。
【００１６】
１つの側面では、本発明は、ソースプログラムの拡張言語仕様に関する情報を出力できる拡張言語仕様情報提供方法、拡張言語仕様情報提供プログラム、さらには、前記の拡張言語仕様情報の提供機能を有するコンパイル装置を実現することを目的とする。
【課題を解決するための手段】
【００１７】
一態様の拡張言語仕様情報提供方法は、コンピュータが、（１）処理対象のソースプログラムから非標準仕様である拡張箇所を検出し、前記拡張箇所で使用されている拡張仕様の種別を特定し、前記検出した拡張箇所ごとに特定した拡張仕様の種別を設定した中間言語を生成し、（２）前記中間言語および該拡張箇所に設定された拡張仕様の種別を参照して、該拡張箇所のコードを標準仕様で表す変換文字列を生成し、（３）前記拡張箇所ごとに、前記ソースプログラムにおける位置、設定された拡張仕様の種別、生成された変換文字列を示すソース情報をリストに登録し、（４）前記中間言語および前記リストを参照して、前記ソースプログラムの該当するソースコードに拡張箇所であることを示すマークおよび前記生成された変換文字列を挿入した拡張箇所通知情報を生成し、（５）前記拡張箇所通知情報を出力する、処理を実行するものである。
【００１８】
また、本発明の別の態様として開示する拡張言語仕様情報提供プログラムは、コンピュータに、上記の拡張言語仕様情報提供方法により実現される処理を実行させるためのものである。また、本発明の別の態様として開示するコンパイル装置は、上記の拡張言語仕様情報提供方法により実現される機能を有し、コンパイル処理を実行する装置である。
【発明の効果】
【００１９】
一態様によれば、ソースプログラムで使用されている拡張言語仕様に関する情報をユーザに提供することができ、ソースプログラムの標準仕様へのコンバートが容易に行えるようになる。
【図面の簡単な説明】
【００２０】
【図１】一実施例におけるコンパイル装置のブロック構成例を示す図である。
【図２】一実施例におけるソースコンバートリストの例を示す図である。
【図３】一実施例における拡張箇所通知情報の例を示す図である。
【図４】一実施例における統計情報の例を示す図である。
【図５】コンパイル装置の処理フローチャート例を示す図である。
【図６】コンパイル装置が実施されるコンピュータ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の一態様として開示するコンパイル装置について説明する。
【００２２】
図１は、一実施例におけるコンパイル装置のブロック構成例を示す図である。実線が制御の流れを、点線がデータの流れを表す。
【００２３】
本実施例において、コンパイル装置１は、Ｃ言語／Ｃ＋＋言語のコンパイル処理を実行するものとし、入力したソースプログラム２を翻訳してオブジェクトプログラム３を生成、出力する。さらに、コンパイル装置１は、ソースプログラム２に関する情報の１つとして、ソースプログラム２で拡張言語仕様が使用されている箇所（拡張箇所）を示す拡張箇所通知情報４を生成、出力する。
【００２４】
コンパイル装置１は、構文解析部１１、拡張言語仕様収集・編集部１３、リスティング部１５、および出力生成部１７を備える。
【００２５】
構文解析部１１は、処理対象とするソースプログラム２を取得し、構文解析処理を行い、構文解析結果を示す内部情報である中間言語５を生成する。
【００２６】
構文解析部１１は、予め、拡張言語仕様の種別を示す種別情報を保持し、ソースプログラム２を解析して中間言語５を生成する際に、ソースプログラム２の標準仕様に該当しない箇所（拡張箇所）を検出し、検出した拡張箇所に、拡張言語仕様を使用していることを示すフラグを設定する。さらに、構文解析部１１は、種別情報をもとに、検出した拡張箇所で使用されている拡張言語仕様の種別を特定する。種別情報は、拡張言語仕様で記述される要素の種別を示し、一例として、変数、関数、文、式等ごとに拡張言語仕様の種別が設定されているものとする。
【００２７】
拡張言語仕様収集・編集部１３は、中間言語５からフラグをもとに抽出した拡張箇所ごとに、拡張箇所のコードを、標準仕様（ＩＳＯ規格準拠の仕様）に基づいて表す場合の展開に変換する。変換後の記述をコンバート文字列と呼ぶ。
【００２８】
拡張言語仕様収集・編集部１３は、拡張言語仕様の種別ごとに、拡張言語仕様での記述を標準仕様での記述へ変換する規則を保持している。拡張言語仕様は、標準仕様（ＩＳＯ規格）をベースとした拡張であるため、拡張言語仕様の記述の多くは標準仕様で記述することが可能である。拡張言語仕様収集・編集部１３は、拡張言語仕様での記述をＩＳＯ規格での記述に変換する規則を保持し、拡張箇所の種別にもとづいて拡張箇所の記述からコンバート文字列を生成する。
【００２９】
拡張言語仕様収集・編集部１３は、中間言語５から検出された各拡張箇所について、ソースプログラム２での位置、拡張言語仕様の種別、生成されたコンバート文字列とを示すソース情報を、内部リストであるソースコンバートリスト６に登録する。
【００３０】
リスティング部１５は、ソースプログラム２およびソースコンバートリスト６を参照して、ソースプログラム２の拡張言語仕様を使用している箇所（拡張箇所）に、拡張言語を使用していることを示すマークを設定し、その行の次行に、コンバート文字列を挿入した付加した拡張箇所通知情報４を生成し、コンパイル装置１に接続するディスプレイ画面、プリンタ等に出力する。
【００３１】
さらに、リスティング部１５は、ソースプログラム２で使用されている拡張言語仕様に関する統計値として、拡張箇所の全数、拡張言語仕様の種別ごとの拡張箇所数、拡張箇所のソースプログラム２の全行数に対する割合等を計算し、計算した統計値を含む統計情報７を出力する。
【００３２】
出力生成部１７は、構文解析部１１が生成した中間言語５をもとに、実行プログラムであるオブジェクトプログラム３を生成し、出力する。
【００３３】
出力生成部１７は、ソースプログラム２に対するソースコンバートリスト６が作成されている場合に、中間言語５およびソースコンバートリスト６を参照して、中間言語５の拡張言語仕様が使用されている箇所のコードに必要な修正を施し、出力用コードを生成する。ソースプログラム２に対するソースコンバートリスト６が作成されていない場合に、出力生成部１７は、中間言語５の拡張言語仕様が使用されている箇所は、拡張言語仕様のままのコードを出力用コードとする。
【００３４】
図２は、ソースコンバートリスト６の例を示す図である。
【００３５】
ソースコンバートリスト６は、中間言語５のコンバートした拡張箇所のソース情報である。詳しくは、ソースコンバートリスト６は、中間言語５で拡張言語仕様が使用されているとして検出し、コンバート文字列を生成した箇所（拡張箇所）のソース情報をリスティングしたデータである。
【００３６】
各拡張箇所のソース情報は、「ソースファイル名」、「行番号」、「拡張仕様種別」、「コンバート文字列」の情報を含む。ソースファイル名は、ソースプログラム２を識別する情報である。行番号は、ソースプログラム２における拡張箇所の位置を示す情報である。拡張仕様種別は、拡張箇所が使用している拡張言語仕様の種別を示す情報である。コンバート文字列は、拡張箇所のコードを、標準仕様（ＩＳＯ規格の仕様）で表す場合の文字列である。
【００３７】
拡張言語仕様収集・編集部１３は、中間言語５の各拡張箇所に対するコンバート文字列を、以下の手順で生成する。
【００３８】
（１）  拡張箇所が変数である場合
例えば、拡張仕様種別が「Ａｎｏｎｙｍｏｕｓ  ｕｎｉｏｎ」である場合に、変数名またはメンバ名が指定されていない共用体に対して、“＿＿ＡＮＯＮＹＭＯＵＳ＿ＵＮＩＯＮ＿”と通し番号を表す数字“ｎ”とを結合した文字列を生成し、変数名またはメンバ名に相当する位置に挿入する。
【００３９】
（２）  拡張箇所が関数である場合
例えば、拡張仕様種別が「Ｂｕｉｌｔｉｎ  Ｃ  ｆｕｎｃｔｉｏｎ」の場合に、関数名から“＿＿ｂｕｉｌｔｉｎ＿”を除去した文字列を生成し、元の関数名と置き換える。
【００４０】
（３）  拡張箇所が文である場合
例えば、拡張仕様種別が「Ｃａｓｅ  ｒａｎｇｅ」の場合に、下限値から上限値までの値を持つｃａｓｅラベルが連続している文字列を生成し、元の範囲指定のｃａｓｅラベルと置き換える。
【００４１】
（４）  拡張箇所が式である場合
例えば、拡張仕様種別が「Ｃｏｎｄｉｔｉｏｎａｌ」の場合に、条件演算子の１項（“？”の左辺）と同じものを条件演算子の２項（“？”と“：”との間）に挿入する。
【００４２】
図２に例示するソースコンバートリスト６では、例えば、上から第１番目のソース情報は、拡張箇所が、ファイル名“ｔｅｓｔ．ｃ”のソースプログラム２の“第６行目”に位置し、拡張言語仕様の種別が「Ａｎｏｎｙｍｏｕｓ  ｕｎｉｏｎ」であることを示している。さらに、拡張言語仕様収集・編集部１３による上記（１）に例示する処理により、コンバート文字列として、“｝＿ＡＮＯＮＹＭＯＵＳ＿ＵＮＩＯＮ＿１”が生成されたことを示している。
【００４３】
また、第４番目のソース情報は、拡張箇所が、ファイル名“ｔｅｓｔ．ｃ”のソースプログラム２の“第２３行目”に位置し、拡張言語仕様の種別が「Ｂｕｉｌｔｉｎ  Ｃ  ｆｕｎｃｔｉｏｎ」であること、および、上記（２）に例示する処理により、コンバート文字列として、“ｒｅｔｕｒｎ  ｓｔｒｃｍｐ（ｓｔｒ１、  ｓｔｒ２）；”が生成されたことを示している。
【００４４】
図３は、拡張箇所通知情報４の例を示す図である。
【００４５】
図３に例示する拡張箇所通知情報４は、図２に示すソースコンバートリスト６に対応するものであり、コンパイル装置１に接続するディスプレイ画面で表示されている場合の例である。
【００４６】
図３に例示する拡張箇所通知情報４では、ソースコンバートリスト６の「行番号」をもとに、該当する箇所（拡張箇所）に、拡張言語仕様が使用されていることを示す文字“ｅ”が設定される。さらに、その次行に、ソースコンバートリスト６の「コンバート文字列」をもとに、標準仕様（ＩＳＯ規格）で表記した場合のソースコードを出力している。
【００４７】
図３の例では、ファイル名“ｔｅｓｔ．ｃ”のソースプログラム２において、第６、１４、１６、２３、３２、４０行目が、拡張箇所である。各拡張箇所は、ソースプログラム２の拡張言語仕様そのままの記述と、挿入されたコンバート文字列による標準仕様の記述とが表示される。
【００４８】
これにより、ソースプログラム２で使用されている拡張言語仕様の箇所、および、拡張言語仕様の特徴を把握することができると共に、標準仕様（ＩＳＯ規格）により記述する方法を理解することができる。
【００４９】
図４は、統計情報の例を示す図である。
【００５０】
統計情報７は、ソースプログラム２における拡張言語仕様の使われ方を統計的に示す情報であり、ソースプログラム２がどの程度拡張言語仕様を使用しているかを知ることができる。
【００５１】
図４に例示する統計情報７は、ソースプログラム２の全行数を示す「Ｔｏｔａｌ  ｌｉｎｅ」、拡張箇所数および全行数に対する割合を示す「Ｅｘｔｅｎｓｉｏｎｓ  ｌｉｎｅ」を含む。「Ｅｘｔｅｎｓｉｏｎｓ  ｌｉｎｅ」は、さらに、拡張言語仕様の種別ごとに、該当する拡張箇所数および全行数に対する割合を示している。
【００５２】
例えば、図４の統計情報７では、ソースプログラム２の全行数は“３３”であり、拡張箇所に該当する行数は“６”であり、その割合は“１８％”であることを示している。また、確証言語仕様の１種別の「ａｎｏｎｙｍｏｕｓ  ｕｎｉｏｎ」に分類される拡張箇所に該当する行数は“３”であり、その割合は“９％”、第６番目、１４番目、１６番目の行であることを示している。
【００５３】
統計情報７により、拡張言語仕様が使用されるソースプログラム２を標準仕様（ＩＳＯ規格）準拠のコンパイラ装置（Ｃ／Ｃ＋＋コンパイラ）でコンパイル処理する場合の移植の容易性を把握することができる。
【００５４】
図５は、コンパイル装置１の処理フローチャート例を示す図である。
【００５５】
ステップＳ１：  コンパイル装置１の構文解析部１１は、ソースプログラム２を読み込み、構文解析を行い、中間言語５を生成する。
【００５６】
ステップＳ２：  コンパイル装置１のユーザインタフェース（図１に図示しない）において、ユーザからリスティングオプションの選択の有無が判断される。リスティングオプションが選択されていれば（ステップＳ２の“あり”）、ステップＳ３〜Ｓ７の処理が実行される。リスティングオプションが選択されていなければ（ステップＳ２の“なし”）、ステップＳ８の処理が実行される。
【００５７】
ステップＳ３：  構文解析部１１は、構文解析の結果から、中間言語５の拡張言語仕様が使われた箇所（拡張箇所）に、拡張言語仕様が使用されていることを示すフラグと、使用された拡張言語仕様の種別とを設定する。
【００５８】
ステップＳ４：  拡張言語仕様収集・編集部１３は、ソースプログラム２および中間言語５から、フラグをもとに、拡張箇所の情報を収集する。
【００５９】
ステップＳ５:  拡張言語仕様収集・編集部１３は、拡張言語仕様の種別をもとに、拡張箇所のコードを、ＩＳＯ規格に変換した場合の標記であるコンバート文字列を生成して、ソースコンバートリスト６に登録する。
【００６０】
ステップＳ６：  拡張言語仕様収集・編集部１３は、ソースプログラム２のソースコードの全行数に対する拡張箇所の個数（行数）、拡張言語仕様の使用率を算出する。
【００６１】
ステップＳ７：  リスティング部１５は、ソースプログラム２およびソースコンバートリスト６をもとに、ソースプログラム２の拡張箇所に、拡張言語仕様を使用したことを示すマーク（文字ｅ）およびコンバート文字列を挿入して生成した拡張箇所通知情報４をディスプレイ画面等に出力する。さらに、リスティング部１５は、ソースプログラム２の全行数、拡張箇所の行番号、拡張箇所の個数、使用率等を含む統計情報７をディスプレイ画面等に出力する。
【００６２】
ステップＳ８：  出力生成部１７は、中間言語５から出力用のオブジェクトプログラム３を生成する。出力生成部１７は、中間言語５に対しソースコンバートリスト６が生成されている場合に、ソースコンバートリスト６を参照して、中間言語５にフラグが設定された拡張箇所のコードを、コンバート文字列をもとに修正して、オブジェクトプログラム３を生成する。また、出力生成部１７は、中間言語５に対しソースコンバートリスト６が生成されていない場合に、中間言語５の拡張言語仕様が使用されている部分を、拡張言語仕様のままにしてオブジェクトプログラム３を生成する。
【００６３】
以上説明したコンパイル装置１は、図１に示す処理部を備える専用ハードウェアまたは、コンピュータ１００により実施することができる。
【００６４】
図６は、コンパイル装置１が実施されるコンピュータのハードウェア構成例を示す図である。
【００６５】
コンパイル装置１が実施されるコンピュータ１００は、ＣＰＵ１０１、メモリ１０２、表示装置１０３が接続された表示制御部１０４、ハードディスク等の記憶装置１０５、入力装置１０６、およびネットワーク接続のための通信制御部１０７が、バス１０８に接続されている。
【００６６】
オペレーティングシステムおよびコンパイル装置１を実施するプログラムが記憶装置１０５に格納されており、ＣＰＵ１０１により実行される際には記憶装置１０５からメモリ１０２に読み出される。ＣＰＵ１０１はオペレーティングシステムおよびコンパイル装置１が実行する処理内容に応じて表示制御部１０４、通信制御部１０７を制御して所定の動作を行わせる。
【００６７】
コンパイル装置１の処理対象のソースプログラム２は、記憶装置１０５または通信制御部１０７を介してアクセスできる他コンピュータ装置の記憶装置に格納されている。
【００６８】
コンパイル装置１の実行時には、処理途中のデータは主としてメモリ１０２に格納されるが、記憶装置１０５に格納されるようにしてもよい。コンピュータ１００は、上述のＣＰＵ１０１、メモリ１０２などのハードウェアとオペレーティングシステムおよびコンパイル装置１の構成要素を実現するプログラムとが有機的に協働することにより、上記説明したような各種の機能を実現する。
【００６９】
コンパイル装置１を実現するプログラムは、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ等やフレキシブルディスク等の記録媒体に格納されていてもよい。
【００７０】
なお、コンパイル装置１を構成する要素は、任意の組合せで実現されてもよい。複数の構成要素が１つの部材として実現されてもよく、１つの構成要素が複数の部材から構成されてもよい。また、コンパイル装置１は、上述した実施形態に限定されず、本発明の要旨を逸脱しない範囲において各種の改良および変更を行ってもよいことは当然である。
【００７１】
例えば、上記実施の形態において、コンパイラ装置１はＣ言語、Ｃ＋＋言語を対象としているが、Ｆｏｒｔｒａｎ等の他言語のコンパイラ処理についても開示するコンパイラ装置１を適用して実施することが可能である。
【００７２】
以上説明したコンパイル装置１は、以下に挙げる効果が期待される。
【００７３】
・  コンパイル装置１によれば、ソースプログラムに拡張言語仕様が使用されている箇所に特定のマークを付けるため、ユーザは、ソースプログラム内で拡張言語仕様が使用されている部分を容易に明確にすることができる。
【００７４】
・  コンパイル装置１によれば、ソースプログラムの拡張箇所を、標準仕様（ＩＳＯ規格仕様）で表した場合の展開を出力するため、ユーザが拡張言語仕様を理解する一助になる。
【００７５】
・  コンパイル装置１が出力する、ソースプログラムの拡張箇所を標準仕様で表した記述を利用することにより、ユーザは、ソースプログラムに含まれる拡張言語仕様の修正作業の負荷を軽減することができる。
【００７６】
・  さらに、ユーザは、ソースプログラムの移植性・可搬性を考えたコーディング・修正ができる。
【００７７】
・  コンパイル装置１が出力する拡張言語仕様情報では、ソースプログラムとともにコンバート文字列を表示するため、コンバートした部分に関する情報の閲覧性に優れる。
【００７８】
・  コンパイル装置１が出力する拡張言語仕様統計情報により、ソースプログラムの移植性・可搬性を客観的に評価することができる。
【００７９】
・  コンパイル装置１は、外部ツール、例えばワークベンチと呼ばれるプログラミング作業用の種々のプログラムツール、と連携することも可能である。
【００８０】
以上の効果により、コンパイル装置１の開発元にとって、コンパイル装置１のオプションのデフォルト状態において翻訳が可能であれば、拡張言語仕様に対するサポートの軽減につながる。コンパイル装置１をプログラム開発者に提供することにより、その効果が期待できる。
【００８１】
プログラムは、ＩＳＯ規格等の標準仕様の範囲で記述することができれば、移植性・可搬性を高めることができる。よって、開示するコンパイル装置１により標準仕様へのコンバートが容易になれば、拡張言語仕様を含むプログラムが、より多くの他のコンパイル装置でも翻訳可能となり、より広く流通させることができる。
【符号の説明】
【００８２】
１  コンパイル装置
１１  構文解析部
１３  拡張言語仕様収集・編集部
１５  リスティング部
１７  出力生成部
２  ソースプログラム
３  オブジェクトプログラム
４  拡張箇所通知情報
５  中間言語
６  ソースコンバートリスト
７  統計情報
【図１】
2014016914.tif 000003
【図２】
2014016914.tif 000004
【図３】
2014016914.tif 000005
【図４】
2014016914.tif 000006
【図５】
2014016914.tif 000007
【図６】
2014016914.tif 000008