(57)【特許請求の範囲】
【請求項１】
処理装置と、主記憶装置と、表示装置と、入力装置と、外部記憶装置を有するコンピュータシステムにおいて前記処理装置が、前記外部記憶装置から入力されたソースプログラムを前記主記憶装置に格納されたコンパイラあるいはインタプリタによりオブジェクトプログラムに翻訳する翻訳処理を行い出力したエラーメッセージを、前記表示装置に表示するエラー情報表示方法であって、
前記処理装置は、前記翻訳処理において出力された、文章とデータ型名が混在するエラーメッセージを構文解析して構文木データを生成し、該生成した構文木データに基づいて、文書中のデータ型名を短い記号に置換して前記表示装置に表示するとともに、該置換された文章中のデータ型名を文章と分離して前記表示装置に表示することを特徴とするエラー情報表示方法。
【請求項２】
請求項１記載のエラー情報表示方法において、
前記処理装置は、前記表示装置に前記データ型名の表示をするとき、前記構文木データにおける構造ノードのツリー構造に基づき該データ型名をツリー状に構成して前記表示装置に表示することを特徴とするエラー情報表示方法。
【請求項３】
処理装置と、主記憶装置と、外部記憶装置を有するコンピュータシステムにおいて前記処理装置が、前記外部記憶装置から入力されたソースプログラムを前記主記憶装置に格納されたコンパイラあるいはインタプリタによりオブジェクトプログラムに翻訳する翻訳処理を行い出力したエラーメッセージを、表示するためのエラー情報表示装置であって、
前記翻訳処理で出力された文章とデータ型名が混在するエラーメッセージを入力し、該入力したエラーメッセージを構文解析して構文木データを生成する手段と、
該生成した構文木データを入力し、該構文木データに基づいて、文書中のデータ型名を短い記号に置換して表示するとともに、該置換された文章中のデータ型名を文章と分離して表示する表示手段を有することを特徴とするエラー情報表示装置。
【請求項４】
請求項３記載のエラー情報表示装置において、
前記表示手段は、前記データ型名の表示をするとき、前記構文木データにおける構造ノードのツリー構造に基づき該データ型名をツリー状に構成して表示することを特徴とするエラー情報表示装置。
【請求項５】
処理装置と、主記憶装置と、表示装置と、入力装置と、外部記憶装置を有するコンピュータシステムにおいて前記処理装置が、前記外部記憶装置から入力されたソースプログラムを前記主記憶装置に格納されたコンパイラあるいはインタプリタによりオブジェクトプログラムに翻訳する翻訳処理を行い出力したエラーメッセージを、前記表示装置に表示するエラー情報表示プログラムであって、前記翻訳処理において出力された、文章とデータ型名が混在するエラーメッセージを構文解析して構文木データを生成する手順と、該生成した構文木データに基づいて、文書中のデータ型名を短い記号に置換して前記表示装置に表示するとともに、該置換された文章中のデータ型名を文章と分離して前記表示装置に表示する手順を実行させるためのエラー情報表示プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンパイラやインタプリタなどのプログラミング言語処理システムに係わり、特に前記プログラミング言語処理システムがソースプログラムの解析処理時にエラーを検出したときに、エラーメッセージを理解容易な型で表示するエラー情報表示方法に関する。
【０００２】
【従来の技術】
近年、プログラミング言語として、Ｃ＋＋言語などの、ユーザ定義データ型を持つ、型付けの強いプログラミング言語が多く用いられている。
ユーザ定義データ型とは、整数や文字列などの基本的なデータ型を組み合わせて、プログラム開発者が新たに定義するデータ型のことである。
また、型付けの強いプログラミング言語とは、値の代入時にデータ型が厳密に一致しない場合にエラーとなるプログラミング言語である。
このようなプログラミング言語で記述されたソースプログラムは、コンパイラによってコンパイルされ、コンピュータ上で実行可能な形式のオブジェクトプログラムへと変換される。
コンパイラは、コンパイル時にソースプログラム中のエラーを検出すると、エラーメッセージを出力して、エラーの種類やエラーの検出されたソースプログラム上の箇所などのエラー情報をプログラム開発者に対して表示する。
プログラム開発者は、エラーメッセージを読んで、適切なソースプログラム修正方法を判断し、ソースプログラムを修正する必要がある。
型付けの強いプログラミング言語では、コンパイラによって検出されるエラーの多くは、代入文における左辺と右辺のデータ型の不一致をはじめとする、データ型に関連するエラーとなる。
【０００３】
さらに、データ型を複雑に組み合わせたユーザ定義データ型が用いられると、データ型名が複雑な構造を持った長い名前となることがある。
Ｃ＋＋言語のプログラムにおいて、テンプレート型と呼ばれるユーザ定義データ型が用いられた場合には、この傾向は顕著になる。Ｃ＋＋言語では、文献ａ：「Ｔｈｅ Ｃ＋＋ ｐｒｏｇｒａｍｍｉｎｇ ｌａｎｇｕａｇｅ ｔｈｉｒｄ ｅｄｉｔｉｏｎ」（Ｂ．Ｓｔｒｏｕｓｔｒｕｐ著、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ社刊）の３２７頁〜３５４頁に記述されているように、データ型をパラメタとして、テンプレート型と呼ばれるユーザ定義データ型を定義することができる。
テンプレート型名は、パラメタとして与えられたデータ型の名前を入れ子状に含む名前となるため、入れ子状の複雑な構造を持った長い名前となることがある。
コンパイル時にテンプレート型に関連するエラーが発生すると、エラーメッセージにはこの長いテンプレート型名が含まれることになる。
その結果、ユーザ定義データ型を持つ、型付けの強いプログラミング言語においては、コンパイル時に出力されるエラーメッセージは、データ型名として複雑な構造を持った長い名前を含むことが多くなる。
従来技術では、このような長い名前を含むエラーメッセージを、単なるテキストとしてそのまま表示していた。
本発明で適用される既存の「エラーメッセージ」は、「エラーの発生したファイル名」「エラーの種類を表す記号」「エラーの説明文」の３要素をコロンで結合した構造を有している。このような構造を持ったエラーメッセージを出力する既存のＣ++言語処理系としては、例えば、Ｍicrosoft Ｖisual Ｃ++4.1が存在しており、次の２つの文献に記載がある。
（１）Ｍicrosoft Ｖisual Ｃ++4.1 付属オンラインマニュアル
特に、include_alias の頁
（２）Ｖisual Ｃ++ 実線プログラミング／田島孝行著、工学社、ISBN4-87593-218-9、４６頁、図「ＣＣolorＳtaticの初期化」
なお、前記「エラーの説明文」として、データ型名として複雑な構造を持った長い名前を含みうるものとしては、例えば、Ｍicrosoft Ｖisual Ｃ++4.1のエラーＣ2664にみられる「'function':number番目の引数を'type1'から'type2'に変換できません。」といったものが存在しており、これについては前記（１）の文献（特に、コンパイラ  エラーＣ2664 の頁）に記載がある。
【０００４】
【発明が解決しようとする課題】
しかし、従来技術では、次の理由により、プログラム開発者がエラーメッセージを読んでプログラムの修正方法を判断する効率が著しく低下するという問題が生じる。
（１）データ型名が長く、エラーメッセージの大部分を占めるため、エラーメッセージ全体を文章として把握することが困難となる。そのため、エラーメッセージ全体の意味を理解することが困難となる。
（２）データ型名が長く複雑なため、データ型名の構造を把握することが困難である。そのため、特にデータ型の不一致に起因するエラーにおいて、エラーの原因となったデータ型の不一致部分を発見することが困難となる。
本発明は、前記問題を解消するためのものであり、次の課題を解決することを目的とする。
（１）長い名前をデータ型名として含むエラーメッセージにおいて、エラーメッセージ全体の意味をプログラム開発者が容易に理解可能な形式で表示するエラー情報表示方法の提供。
（２）複雑な構造を持った長い名前をデータ型名として含むエラーメッセージにおいて、エラーメッセージに含まれるデータ型名の構造を、プログラム開発者が容易に理解可能な形式で表示するエラー情報表示方法の提供。
【０００５】
【課題を解決するための手段】
前記目的を達成するため、本発明は、
ソースプログラムをオブジェクトプログラムに翻訳する翻訳処理において出力されるエラーメッセージのエラー情報表示方法であり、
前記翻訳処理において出力される文章とデータ型名が混在するエラーメッセージを構文解析して構文木データを生成し、
該生成した構文木データにおける各子ノードのノード種別を判定し、
該判定により文字列ノードなら文章を表示し、構造ノードならデータ型名を表示することにより前記文章と前記データ型名を分離して表示するようにしている。
また、前記データ型名の表示をするとき、前記構文木データにおける構造ノードのツリー構造に基づき該データ型名をツリー状に構成して表示するようにしている。
【０００６】
【発明の実施の形態】
以下、本発明の一実施例を詳細に説明する。
本実施例においては、本発明が提供するエラー情報表示方法を、Ｃ＋＋言語用コンパイラを操作するためのＧＵＩ（グラフィカルユーザインタフェース）を提供するプログラムであるＧＵＩフロントエンドの一部として実現している。
プログラム開発者は、このＧＵＩフロントエンドを操作することにより、コンパイラの入力となるソースプログラムの作成および編集を行なうことができる。
また、このＧＵＩフロントエンドを操作してコンパイルを指示することにより、コンパイラを起動し、ソースプログラムをコンパイルすることができる。
本実施例におけるＧＵＩフロントエンドは、コンパイル時にコンパイラがエラーを検出すると、エラーメッセージに含まれるデータ型名を抽出し、ツリー状に整形して表示することを特徴としている。
プログラム開発者は、このＧＵＩフロントエンドを使用することにより、コンパイラの出力するエラーメッセージをツリー状に整形した形で参照することができる。
そのため、エラーメッセージを単なるテキストとして表示する場合に比べて、エラーメッセージ全体の意味を理解することが容易となるとともに、エラーメッセージに含まれるデータ型名の構造を理解することが容易となり、適切なソースプログラム修正方法を容易に判断することが可能となる。
【０００７】
以下、図面を用いて本実施例を詳細に説明する。
図１は、本実施例における、ＧＵＩフロントエンドを説明するための図である。
ＧＵＩフロントエンド１００は、プログラム開発者の操作によってコンパイルを実行し、コンパイラの出力したエラーメッセージをツリー状に整形表示するＧＵＩプログラムであり、エラーメッセージを構文解析して構文木を出力するエラーメッセージ構文解析モジュール１０２、構文木をツリー状に整形表示するエラー情報整形表示モジュール１０３を有する。
プログラム開発者は、このＧＵＩフロントエンドを操作して、ソースプログラムをコンパイルし、その結果として出力されたエラーメッセージをツリー状に整形表示した形で参照する。
【０００８】
コンパイラ１０１は、ソースプログラムをコンパイルしてエラーメッセージを出力する従来のコンパイラであり、ＧＵＩフロントエンド１００から起動され、Ｃ＋＋言語で記述されたソースプログラム２０１を読み込み、コンパイルを実行し、オブジェクトプログラム２０２を出力する。
また、コンパイル時にソースプログラム中のエラーを検出すると、エラー情報を表わすテキストデータであるエラーメッセージ３０１を出力する。
エラーメッセージ構文解析モジュール１０２は、コンパイラの出力したエラーメッセージを構文解析するモジュールであり、エラーメッセージ３０１を入力とし、そのエラーメッセージを構文解析し、その解析処理結果を保持する構文木データ３０２を出力する。
エラー情報整形表示モジュール１０３は、エラーメッセージの構文解析結果をツリー状に整形表示するモジュールであり、構文木データ３０２を入力とし、その内容を構文木の構造に従ってツリー状に整形表示する。
以上のモジュール構成によれば、プログラム開発者の操作によってコンパイルを実行し、コンパイラの出力したエラーメッセージをツリー状に整形表示するＧＵＩフロントエンドが実現可能である。
【０００９】
図２は、ＧＵＩフロントエンド１００の表示画面を示す図である。
ＧＵＩフロントエンド表示画面５００は、ＧＵＩフロントエンド１００の表示画面であり、メニュー領域５０１、ソースプログラム編集領域５０２、エラー情報表示領域５０３を有する。
メニュー領域５０１は、プログラム開発者がＧＵＩフロントエンドに対する操作を指示する領域である。プログラム開発者は、この領域に表示されているメニュー項目を選択することにより、ソースプログラムの作成や、ソースプログラムのコンパイルなどの操作を指示する。
ソースプログラム編集領域５０２は、ソースプログラムの内容を表示するとともに、プログラム開発者がソースプログラムの編集操作を行なう領域である。
エラー情報表示領域５０３は、コンパイルの結果出力されたエラーメッセージをツリー状に整形表示する領域である。
以上の構成の表示画面によれば、プログラム開発者が、ソースプログラムを作成および編集でき、またコンパイラを起動してソースプログラムをコンパイルでき、またコンパイルの結果出力されたエラーメッセージを整形された形で参照することのできるＧＵＩフロントエンドを提供することが可能である。
【００１０】
次に、本実施例において、ＧＵＩフロントエンドがコンパイラの出力したエラーメッセージをツリー状に整形表示する動作について詳細に説明する。
図３は、プログラム開発者がＧＵＩフロントエンド１００を操作してコンパイルを指示したときの、ＧＵＩフロントエンド１００の処理手順を示すＰＡＤ図である。
ステップ６０１では、コンパイラ１０１を起動し、その結果としてエラーメッセージ３０１を受け取る。
ステップ６０２では、エラーメッセージ構文解析モジュール１０２を起動し、エラーメッセージ３０１を渡し、その結果として構文木データ３０２を受け取る。
ステップ６０３では、エラー情報整形表示モジュール１０３を起動し、構文木データ３０２を渡す。
以上の手順により、ＧＵＩフロントエンドは、ソースプログラムをコンパイルし、その結果としてエラーメッセージをツリー状に整形表示する動作を実現可能である。
【００１１】
図４は、構文木データ３０２のデータ構造を示す図である。
構文木データ３０２は、エラーメッセージの構文解析結果を保持するデータであり、ツリー状に構成された、エラーメッセージの各構文要素を表わすデータであるノード３０３を有する。なお、ノードを示す符号３０３は上位のノードの１つにしか記載しておらず、他の下位のノードには符号３０３を記載していないが、これは記載を省略したものである。
これらのノードには次の２つの種別が存在する。
１つはエラーメッセージ中の部分文字列を表わす文字列ノードであり、文字列を保持する。
もう１つはエラーメッセージ中の構造を持つ構文要素を表わす構造ノードであり、複数のノードを子ノードとして順序付きで保持する。
構文木のルートとなる構造ノードはエラーメッセージ全体を表わし、ルート以外の構造ノードはデータ型名を表わす。
【００１２】
ノード３０３は、エラーメッセージの各構文要素を表わすデータであり、ノード種別３０３１、文字列３０３２を有するとともに、子ノード３０３３の順序付きリストを有する。
ノード種別３０３１は、ノード３０３の種別を表わす値であり、文字列ノードを表わす値「Ｄ」と、構造ノードを表わす値「Ｓ」のいずれかの値を格納する。
文字列３０３２は、ノード３０３が表わす、エラーメッセージ中の部分文字列である。ノード３０３のノード種別が文字列ノードである場合にのみ使用される。
子ノード３０３３は、ノード３０３の子ノードを指すポインタであり、ノード３０３内に順序付きリストとして複数保持される。ノード３０３のノード種別が構造ノードである場合にのみ使用される。
以上のデータ構造によれば、エラーメッセージの構文解析結果を保持することが可能である。
【００１３】
図５は、エラーメッセージ構文解析モジュール１０２が、エラーメッセージの一例としてのエラーメッセージ３０１を構文解析処理して、構文木データ３０２を出力する様子を示す図である。
なお、本図において、構文木データ３０２を構成するノード３０３のうち、実線で示したノードは構造ノードであり、破線で示したノードは文字列ノードである。
また、文字列ノードの内側に示した文字列は、各ノードの保持する文字列３０３２の内容である。
エラーメッセージ構文解析モジュール１０２での構文解析処理には、例えば文献ｂ：「Ｃｏｍｐｉｌｅｒｓ Ｐｒｉｎｃｉｐｌｅｓ，Ｔｅｃｈｎｉｑｕｅｓ，ａｎｄ Ｔｏｏｌｓ」（Ａ．Ｖ．Ａｈｏら著、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ社刊）の１８１頁〜１８２頁に記述されている再帰下降パーサが使用可能である。
具体的には、文字「’」に着目してエラーメッセージ中のデータ型名を認識し、また文字「＜」、「，」、「＞」に着目してデータ型名に入れ子状に含まれるデータ型名を認識する再帰下降パーサが使用可能である。
このように、エラーメッセージ構文解析モジュール１０２は、エラーメッセージ３０１を構文解析して、構文木データ３０２を出力する。
【００１４】
図６は、エラー情報整形表示モジュール１０３が、図５に示した内容の構文木データ３０２を整形表示したときの、エラー情報表示領域５０３の表示内容を示す図である。
ツリー５０３１は、エラーメッセージの構造を表わす画面上の図形であり、複数のノード５０３２をツリー状に構成して表示したものである。ツリー５０３１の構造は、構文木データ３０２中の構造ノードに着目したツリー構造に対応している。
ノード５０３２は、エラーメッセージの各構文要素を表わす画面上の図形であり、ツリー５０３１の構成要素である。各ノード５０３２は、構文木データ３０２中の各構造ノードに対応している。
ラベル５０３３は、ノード５０３２の表わすエラーメッセージまたはデータ型名を、その中に含まれるデータ型名を短い記号で置き換えた短縮形式で表わす画面上の文字列であり、各ノード５０３２に付随して表示される。
図において、上側に記されたノードのＡ<Ｔ１>におけるＴ１はその下位のノードのＢを指しており、このＡ<Ｔ１>はＡ<Ｂ>を意味している。
また、下側に記されたＡ<Ｔ１>におけるＴ１はその下位のノードのＣ<Ｔ１，Ｔ２>を指しており、また、Ｃ<Ｔ１，Ｔ２>におけるＴ１はその下位のノードの内の上側に記されたノードのＤを指し、Ｔ２はその下位のノードの内の下側に記されたノードのＥを指しており、これにより、Ｃ<Ｔ１，Ｔ２>はＣ<Ｄ，Ｅ>を意味し、さらに、下側に記されたＡ<Ｔ１>はＡ<Ｃ<Ｄ，Ｅ>>を意味する。
このように、エラー情報整形表示モジュール１０３は、構文木データ３０２を、構文木の構造に従ったツリー状に整形表示する。
その結果、エラーメッセージに含まれるデータ型名がエラーメッセージから分離して表示され、またデータ型名がその構造に従ってツリー状に表示されるため、プログラム作成者にとって、エラーメッセージ全体の意味およびデータ型名の構造を容易に理解可能となる。
【００１５】
図７は、エラー情報整形表示モジュール１０３の構成を示す図である。
エラー情報整形表示モジュール１０３は、構文木をツリー状に整形表示するエラー情報整形表示ルーチン１０３１と、エラー情報整形表示ルーチン１０３１から呼び出されて、構文木の各ノードの表わすエラーメッセージまたはデータ型名を短縮形式で表示するラベル表示ルーチン１０３２を有する。
エラー情報整形表示ルーチン１０３１は、構文木データ３０２を入力とし、構文木データ３０２をツリー状に整形表示するルーチンである。
構文木データ３０２の各ノード３０３を画面上でツリー状に構成して表示し、また各ノード３０３に対してラベル表示ルーチン１０３２を呼び出すことにより、それらのノードの表わすエラーメッセージまたはデータ型名を短縮形式で表示する。
構文木データ３０２の各ノード３０３を画面上でツリー状に構成して表示する処理は、ツリー構造を持ったデータをその構造に対応したツリー状に表示する一般的な方法を用いればよい。
各ノード３０３に対してラベル表示ルーチン１０３２を呼び出す処理は、ツリー構造を持ったデータの各ノードについて特定の処理を行なう一般的な方法を用いればよい。
ラベル表示ルーチン１０３２は、ノード３０３を入力とし、ノード３０３の表わすエラーメッセージまたはデータ型名を短縮形式で表示するルーチンである。
以上の構成によれば、構文木データ３０２を図６に示すようなツリー状に整形表示することが可能である。
【００１６】
図８は、ノード３０３を入力とし、ノード３０３の表わすエラーメッセージまたはデータ型名を短縮形式で表示する、ラベル表示ルーチン１０３２の処理手順を示すＰＡＤ図である。
ステップ６１１では、ノード３０３の子ノード３０３３各々について順番に、ステップ６１２を実行する。
ステップ６１２では、子ノード３０３３が指しているノード３０３のノード種別３０３１の値を判定し、文字列ノードを表わす「Ｄ」ならステップ６１３を、構造ノードを表わす「Ｓ」ならステップ６１４を実行する。
ステップ６１３では、子ノード３０３３の指すノード３０３の文字列３０３２を表示する。なお、ステップ６１２での判定により、ステップ６１３の実行対象となる、子ノード３０３３の指すノード３０３は常に文字列ノードである。
ステップ６１４では、短い記号を表示する。なお、ステップ６１２での判定により、ステップ６１４の実行対象となる、子ノード３０３３の指すノード３０３は常に構造ノードである。
以上の手順によれば、ノード３０３の表わすエラーメッセージまたはデータ型名を、その中に含まれるデータ型名を短い記号で置き換えた短縮形式で表示することが可能である。
【００１７】
次に、具体的なＣ＋＋プログラムの例を用いて、本実施例におけるＧＵＩフロントエンドのエラーメッセージ整形表示動作について説明する。
図９は、前述の従来技術の項で記載した文献ａの４２７頁〜６８７頁に記述されているＣ＋＋標準ライブラリを用いて記述されたソースプログラム２０１の一例を示す図である。
変数宣言文２０１１では、Ｃ＋＋標準ライブラリの提供するテンプレート型へのポインタ型の変数ｐ１を、ポインタの指す領域の値を変更してはならないことを意味するｃｏｎｓｔ修飾子を付けて宣言している。
変数宣言文２０１２では、変数宣言文２０１１と同じテンプレート型へのポインタ型の変数ｐ２を、ｃｏｎｓｔ修飾子を付けずに宣言している。
ｃｏｎｓｔ修飾子の有無のため、ｐ１とｐ２は異なるデータ型となる。
また、代入文の左辺と右辺のデータ型が異なる場合にデータ型を一致させるためにコンパイラが自動的に行なう暗黙の型変換は、ｃｏｎｓｔ修飾子の付いたポインタ型からｃｏｎｓｔ修飾子の付かないポインタ型への代入には適用されない。
そのため、ｐ１からｐ２への代入は型の不一致エラーとなる。
代入文２０１３では、ｐ１からｐ２への代入を行なっている。コンパイラは、この代入文をデータ型の不一致エラーとして検出する。
ソースプログラム２０１は、型の不一致エラーを含んでいるため、このソースプログラムをコンパイルすると、コンパイラは型の不一致エラーを検出し、エラーメッセージを出力する。
出力されるエラーメッセージは図１０のようになる。
【００１８】
図１０は、図９のソースプログラムのコンパイル時に、コンパイラが出力するエラーメッセージ３０１の一例を示す図である。
データ型名部分３０１１は、エラーメッセージ３０２中に含まれるデータ型名を表わす文字列である。
データ型名部分３０１２は、データ型名部分３０１１と同様に、エラーメッセージ３０２中に含まれるデータ型名を表わす文字列である。データ型名部分３０１２の内容は、データ型名部分３０１１から先頭の文字列ｃｏｎｓｔを取り除いた文字列と等しくなっている。
このように、Ｃ＋＋標準ライブラリの提供するテンプレート型のように、長く複雑な名前を持つデータ型の不一致エラーがあった場合、コンパイラの出力するエラーメッセージをそのまま表示しても、データ型名を表わす文字列がエラーメッセージの大部分を占めるため、プログラム開発者がエラーメッセージを文章として把握することが困難である。
また、データ型名が長く複雑なため、エラーの原因となったデータ型のわずかな不一致部分を発見することが困難である。
【００１９】
本発明によれば、図１０のような理解が困難なエラーメッセージであっても、図１１に示すようにツリー状に整形表示され、容易に理解可能となる。
図１１は、ＧＵＩフロントエンドのエラー表示領域５０４に、図１０のエラーメッセージを整形表示したときの表示内容を示したものである。
この表示内容によれば、エラーメッセージに含まれる長いデータ型名がエラーメッセージから分離して表示されており、また複雑な構造を持った長いデータ型名の構造がツリー状に表示されているため、エラーメッセージ全体の意味が容易に理解可能であるとともに、ｃｏｎｓｔ修飾子の有無というデータ型名の相違点を容易に発見することが可能である。
【００２０】
以上説明したように、本発明を適用したＧＵＩフロントエンドによれば、複雑な構造を持った長い名前をデータ型名として含むエラーメッセージを、エラーメッセージ全体の意味をプログラム開発者が容易に理解可能であるとともに、データ型名の構造をプログラム開発者が容易に理解可能な形式で表示することができる。
【００２１】
図１２は、本発明を実現するコンピュータシステムのハードウェア構成の一例を示す図である。
コンピュータシステム９００１は、ＧＵＩフロントエンドなどの各種プログラムを実行するためのＣＰＵ９００２、ＣＰＵが実行するプログラムや一時データを格納するための主記憶装置９００３、コンパイラの入力となるソースプログラムなどのファイルを格納するための外部記憶装置９００４、プログラム開発者がＧＵＩフロントエンドの表示画面を参照するための表示装置９００５、プログラム開発者がＧＵＩフロントエンドを操作するための入力装置９００６を有する。
主記憶装置９００３には、ＧＵＩフロントエンド１００、コンパイラ１０１がプログラムとして格納されるとともに、一時データを格納するためのワーク領域９０１０が格納される。ワーク領域９０１０には、エラーメッセージ３０１、構文木データ３０２が、ＧＵＩフロントエンドおよびコンパイラによる処理の実行中に格納される。
外部記憶装置９００４には、ソースプログラム２０１、オブジェクトプログラム２０２がファイルとして格納される。
以上の構成のコンピュータシステムによれば、本発明を実現することが可能である。
【００２２】
本実施例においては、プログラミング言語処理システムとしてＣ＋＋言語用コンパイラを用いたが、本発明は、Ｃ＋＋言語以外のプログラミング言語にも適用可能である。また、インタプリタなどコンパイラ以外の種類のプログラミング言語処理システムにも適用可能である。
【００２３】
【発明の効果】
以上説明したように、本発明によれば、
長い名前をデータ型名として含むエラーメッセージにおいて、エラーメッセージ全体の意味をプログラム開発者が容易に理解可能な形式で表示するエラー情報表示方法を提供することができる。
また、複雑な構造を持った長い名前をデータ型名として含むエラーメッセージにおいて、エラーメッセージに含まれるデータ型名の構造を、プログラム開発者が容易に理解可能な形式で表示するエラー情報表示方法を提供することができる。
【図面の簡単な説明】
【図１】本発明を適用したＧＵＩフロントエンドを説明するための図である。
【図２】本発明におけるＧＵＩフロントエンドの表示画面を示す図である。
【図３】本発明におけるＧＵＩフロントエンドの処理手順を示すＰＡＤ図である。
【図４】本発明における構文木データのデータ構造を示す図である。
【図５】本発明におけるエラーメッセージ構文解析モジュールがエラーメッセージを構文解析処理して構文木データを出力する経緯を説明するための図である。
【図６】本発明におけるエラー情報表示領域の表示内容を示す図である。
【図７】本発明におけるエラー情報整形表示モジュールの構成を示す図である。
【図８】本発明におけるラベル表示ルーチンの処理手順を示すＰＡＤ図である。
【図９】Ｃ＋＋標準ライブラリを用いて記述されたソースプログラムの一例を示す図である。
【図１０】本発明におけるコンパイラが出力するエラーメッセージの一例を示す図である。
【図１１】図１０のエラーメッセージの一例を整形表示したときのエラー情報表示領域の表示内容を示す図である。
【図１２】本発明を実現するコンピュータシステムのハードウェア構成の一例を示す図である。
【符号の説明】
１００  ＧＵＩフロントエンド
１０１  コンパイラ
１０２  エラーメッセージ構文解析モジュール
１０３  エラー情報整形表示モジュール
２０１  ソースプログラム
２０２  オブジェクトプログラム
３０１  エラーメッセージ
３０２  構文木データ
３０３  ノード
３０３１  ノード種別
３０３２  文字列
３０３３  子ノード
９００１  コンピュータシステム
９００２  ＣＰＵ
９００３  主記憶装置
９００４  外部記憶装置
９００５  表示装置
９００６  入力装置
９０１０  ワーク領域
【図１】
0004240520.tif 000002
【図２】
0004240520.tif 000003
【図３】
0004240520.tif 000004
【図４】
0004240520.tif 000005
【図５】
0004240520.tif 000006
【図６】
0004240520.tif 000007
【図７】
0004240520.tif 000008
【図８】
0004240520.tif 000009
【図９】
0004240520.tif 000010
【図１０】
0004240520.tif 000011
【図１１】
0004240520.tif 000012
【図１２】
0004240520.tif 000013