JP2004206501A - エラーメッセージ出力制御システムと方法およびコンパイラ - Google Patents

エラーメッセージ出力制御システムと方法およびコンパイラ Download PDF

Info

Publication number
JP2004206501A
JP2004206501A JP2002375942A JP2002375942A JP2004206501A JP 2004206501 A JP2004206501 A JP 2004206501A JP 2002375942 A JP2002375942 A JP 2002375942A JP 2002375942 A JP2002375942 A JP 2002375942A JP 2004206501 A JP2004206501 A JP 2004206501A
Authority
JP
Japan
Prior art keywords
error
error message
output
message
information
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.)
Pending
Application number
JP2002375942A
Other languages
English (en)
Inventor
Akihisa Sato
暁久 佐藤
Masahiro Konishi
正洋 小西
Kiyoaki Tamura
清朗 田村
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002375942A priority Critical patent/JP2004206501A/ja
Publication of JP2004206501A publication Critical patent/JP2004206501A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】ソースプログラムのコンパイル時に出力されるエラーメッセージの数を抑止し、ソースプログラム作成者の修正作業負担を軽減する。
【解決手段】外部から入力される出力制御情報に基づき出力許可・不許可となるエラーメッセージを判定し、各エラーメッセージに対して出力許可・不許可を表す情報を設定してエラー情報テーブル6を生成する動作モード判定部2と、コンパイル結果のエラーメッセージを出力するか否かをエラー情報テーブル6を参照して判定するエラー判定部4と、エラー判定部2の判定結果に基づきエラーメッセージの出力を抑止するエラー出力部5とを有し、特定の種類のエラーメッセージの出力を抑止する。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、コンパイラによるプログラムにおけるエラーの検出とエラー内容(メッセージ)の表示技術に係わり、特に、エラー原因の調査を効率化するのに好適なエラーメッセージ出力制御技術に関するものである。
【0002】
【従来の技術】
従来のコンパイラによるプログラムにおけるエラーの検出とエラー内容表示技術として、例えば、特許文献1に記載のものがある。この技術では、コンパイラは、エラーを検出してエラーメッセージを画面出力する際、そのエラーメッセージの出力形態を、エラー重度の段階別に変更することができる。
【0003】
これにより、プログラム作成者は、必要とするエラー重度のエラーだけを容易に認識することが可能であり、エラー原因調査に要する作業負荷を軽減できる。
【0004】
しかし、この技術は、コンパイラが出力するエラーメッセージの出力形態をエラー重度の段階別に変更することはできても、特定のエラーメッセージ出力のみを抑止する効率的な機構を備えていないため、ソースプログラムの修正が不要である事が既知なエラーメッセージも毎回出力され、修正要否を判定する必要があり、作業効率が悪かった。
【0005】
【特許文献1】
特開平05−094271号公報
【0006】
【発明が解決しようとする課題】
解決しようとする問題点は、従来の技術では、ソースプログラムの修正が不要である事が既知なエラーメッセージの出力を効率的に回避することができない点である。
【0007】
本発明の目的は、これら従来技術の課題を解決し、ソースプログラムの修正が必要なエラーに関してのメッセージのみの出力を効率的に制御可能とし、ソースプログラムのエラー原因の調査作業に要する負荷を軽減することである。
【0008】
【課題を解決するための手段】
上記目的を達成するため、本発明では、以下の各構成要素を具備することで、コンパイル処理で検出したエラーのメッセージの内、コンパイル操作時の指示に動的に応じて、特定の種類のエラーメッセージの出力を抑止することを特徴とする。(イ)全てのエラーメッセージのそれぞれを、例えば定義に関するエラーメッセージあるいは参照に関するエラーメッセージ等、種類別に分類し、各エラーメッセージのエラー番号と分類番号とを対応付けた分類テーブル、(ロ)外部(コンパイル操作する操作者等)からの指示情報に対応する分類番号をキーに分類テーブルを参照して、指摘された分類番号が対応付けられた各エラー番号を特定し、特定した各エラー番号を明示したエラー情報テーブルを生成する手段、(ハ)エラー検出したエラーメッセージのエラー番号をキーにエラー情報テーブルを参照して、当該エラー番号がエラー情報テーブルに明示されているか否かにより、エラー検出したエラーメッセージの出力・非出力を決定する手段。そして、このような構成により、例えばソースプログラム中のデータ定義の誤りに起因して、当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するために、エラー情報テーブルにおいて、各エラー番号毎に、定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示するフラグを第1の欄に設定すると共に、定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示するフラグを第2の欄に設定しておき、エラー検出したエラーメッセージのエラー番号をキーに当該エラー情報テーブルを検索して、定義に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した定義用テーブルを生成し、参照に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した参照用テーブルを生成し、参照用テーブルにおいて明示されていても定義用テーブルにおいても明示されているデータ名に対応するエラー番号のエラーメッセージの出力は抑止する。
【0009】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
【0010】
図1は、本発明に係わるエラーメッセージ出力制御システムの第1の構成例を示すブロック図であり、図2は、図1のエラーメッセージ出力制御システムにおける分類テーブルの構成例を示す説明図、図3は、図1のエラーメッセージ出力制御システムにおけるエラー情報テーブルの構成例を示す説明図、図4は、図1のエラーメッセージ出力制御システムにおける関連エラーテーブルの構成例を示す説明図、図5は、図1におけるエラーメッセージ出力制御システムの第1の処理動作例を示すPAD図、図6は、図1におけるエラーメッセージ出力制御システムの第2の処理動作例を示すPAD図、図7は、図1におけるエラーメッセージ出力制御システムの第3の処理動作例を示すPAD図、図8は、図5における第1の処理動作の具体例を示す説明図、図9は、図6における第2の処理動作の具体例を示す説明図、図10は、図7における第3の処理動作の具体例を示す説明図、図11は、図1におけるエラーメッセージ出力制御システムを動作させるコンピュータのハードウェア構成例を示すブロック図、図12は、図1におけるエラーメッセージ出力制御システムを具備したコンパイラの構成例を示すブロック図、図13は、本発明に係わるエラーメッセージ出力制御システムの第2の構成例を示すブロック図である。
【0011】
図11において、21はCRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等からなる表示装置、22はキーボードやマウス等からなる入力装置、23はHDD(Hard Disk Drive)等からなる外部記憶装置、24はCPU(Central Processing Unit)24aや主メモリ24bおよび入出力インタフェース24c等を具備してコンピュータ処理を行なう情報処理装置、25は本発明に係わるプログラムやデータを記録したCD−ROM(Compact Disc-Read OnlyMemory)もしくはDVD(Digital Video Disc/Digital Versatile Disc)等からなる光ディスク、26は光ディスク25に記録されたプログラムおよびデータを読み出すための駆動装置、27はLAN(Local Area Network)カードやモデム等からなる通信装置である。
【0012】
光ディスク25に格納されたプログラムおよびデータを情報処理装置24により駆動装置26を介して外部記憶装置23内にインストールした後、外部記憶装置23から主メモリ24bに読み込みCPU24aで処理することにより、情報処理装置24内に図1に示すエラーメッセージ出力制御システムおよび図12に示すコンパイラの各機能が構成される。
【0013】
例えば、図12に示す構成のコンパイラにおける各処理機能部は、主メモリ24bにロードされたコンパイル用プログラムをCPU24aで処理することにより実現される。
【0014】
図12においては、コンパイラの一般的な構成を示しており、このコンパイラは、読込部1102、字句解析部1103、構文解析部1104、中間語生成部1105、最適化部1106、目的コード生成部1107からなり、ソースプログラム1101を目的プログラム1108に変換(コンパイル)する。
【0015】
以下、その一般的なコンパイル動作を説明する。読込部1102は、ソースプログラム1101を通常レコード単位で読み込む。尚、この読込部1102をコンパイラの一部ではなく、オペレーティングシステムの一部としても良い。
【0016】
字句解析部1103は、読込部1102によりメモリに読み込まれたソースプログラム1101の文字の列を一文字ずつ調べながら基本的要素を切り出し、その結果を、テーブル1109に格納する。
【0017】
構文解析部1104は、字句解析部1103の処理結果をテーブル1109から読み出して、単語から文がどのように構成されているかを調べる。すなわち、プログラムのどの部分が、文法のどの規則に対応するかを解析して、プログラムが文法的に正しい形をしているかどうかを判定する。この構文解析の結果としてソースプログラムに近い形での中間語(解析木)が生成され、テーブル1109に格納される。
【0018】
中間語生成部1105は、構文解析部1104で生成されたソースプログラムに近い形の中間語(解析木)をテーブル1109から読み出して、実行すべき演算の列としての中間語列を生成し、テーブル1109に格納する。尚、中間語生成部1105と構文解析部1104を一緒にし、構文解析して直ちに中間語列を生成する構成としても良い。
【0019】
最適化部1106は、目的プログラム1108を、実行時の効率を良くするものであり、中間語生成部1105で生成された中間語列をテーブル1109から読み出し、当該中間語列の中の無駄なものを削除したり、順序を入れ換える等してテーブル1109に格納する。尚、最適化は、中間語生成部1105や構文解析部1104での処理でも行われる。
【0020】
目的コード生成部1107は、最適化部1106で最適化された中間語をテーブル1109から読み出して、目的プログラム1108を生成する。この目的プログラム1108は、磁気ディスク等の記憶装置・記憶媒体に出力され格納される。
【0021】
このようなコンパイル動作を行う際、コンパイラは、ソースプログラム1101の誤りを検出すると、当該エラーに対応するメッセージ(エラーメッセージ)を出力する。
【0022】
本例のコンパイラでは、このようなエラーメッセージの出力を制御するために、構文解析部1104に、図1における構文解析部1に示すように、エラーメッセージ出力制御システムを設ける。
【0023】
すなわち、図1に示すように、構文解析部1には、動作モード判定部2と、分類テーブル2a、構文規則解析部3、エラー判定部4、エラー出力部5、エラー情報テーブル6、関連エラーテーブル7からなるエラーメッセージ出力制御システムが設けられている。
【0024】
分類テーブル2aは、コンパイラの作成時に人手により予め作成され、当該コンパイラが出力する各エラーメッセージのエラー番号に対して、コンパイラの作成者が分類した各エラーメッセージの種類を特定する分類番号が割り当てられる。図2に示す構成例では、エラー番号「0001」と「0003」に対して、定義に関するエラーメッセージの分類番号「1」が、また、エラー番号「0004」に対しては、参照に関するエラーメッセージの分類番号「2」が対応付けられており、エラー番号「0001」のエラーメッセージは、定義に関するエラーであること、エラー番号「0004」のエラーメッセージは、参照に関するエラーであること等が示されている。
【0025】
動作モード判定部2は、外部から与えられた動作モードを判定し、分類テーブル2aを参照してエラー情報テーブル6を生成する。構文規則解析部3は、入力ソースプログラムが文法上、正しいかを判定する。
【0026】
エラー情報テーブル6は、エラー番号別に、当該エラー番号のエラーメッセージの出力の許可・不許可を明示した情報(ステータス)を保持する。関連エラーテーブル7は、定義用テーブル7aと参照用テーブル7bの2種類あり、それぞれエラー番号とエラー対象のデータ名を保持する。
【0027】
エラー判定部4は、エラー情報テーブル6や関連エラーテーブル7を参照し、動作モードの指定の有無や種類に応じて各エラーメッセージの出力要否を判定する。エラー出力部5は、エラー判定部4の判定に従い、該当するエラーメッセージを出力する。
【0028】
エラー情報テーブル6は、図3に示すように、エラー番号別にステータスを保持するものであり、エラー番号およびステータスを示す欄(A、B、C、D、・・・等)で構成される。ステータスは、動作モードの指定の有無、指定された動作モードの種類、エラーメッセージの属性等を表す。
【0029】
関連エラーテーブル7は、図4に示すように、定義用テーブル7aと参照用テーブル7bの2種類があり、定義用テーブル7aは、データの定義エラーに対して出力されるエラーメッセージのエラー番号とエラー対象のデータ名を保持し、参照用テーブル7bは、データの参照エラーに対して出力されるエラーメッセージのエラー番号とエラー対象のデータ名を保持する。
【0030】
この参照用テーブル7bに登録されているエラー対象のデータ名が、定義用テーブル7aに登録されている場合、そのエラー対象のデータ名に対してデータの参照のエラーメッセージ出力を抑止するために、これらの2つのテーブル(7a,7b)を用いる。
【0031】
以下、このような構成のメッセージ出力制御システムの動作例を、(I)特定の種類のエラーメッセージのみを出力する場合、(II)プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する場合、(III)ソースプログラム中のデータ定義の誤りに起因して、該当データの参照毎に出力されてしまうデータ参照のエラーメッセージを抑止する場合の3つのケースに分けて説明する。
【0032】
まず、(I)特定の種類のエラーメッセージのみを出力する際の動作を説明する。
【0033】
ソースプログラムをコンパイルする際に、特定の種類のエラーメッセージ(この例では、定義に関係のあるエラーメッセージ)のみを出力する動作モードAが指定された場合の例を図5の処理の流れに沿って説明する。
【0034】
まず、図1の動作モード判定部2において、外部からの動作モードAの指定の有無を判定する(ステップ401)。動作モードAの指定があった場合、定義に関係のあるエラーメッセージのみを出力する指定であると判定し、分類テーブル2aを参照して「定義」に関係のあるエラー番号を特定し、エラー情報テーブル6における「定義」に関係のあるエラー番号のステータスA欄をON(「1」)に設定し(ステップ402)、定義に関係しないエラー番号のステータスA欄をOFF(「0」)に設定する(ステップ403)。ここで、エラー情報テーブル6におけるステータスA欄がONの設定状態は、当該エラー番号のエラーメッセージを出力することを表す。
【0035】
次に、構文規則解析部3において、ソースプログラムの構文規則の解析を行い(ステップ404)、構文エラーの有無を判定する(ステップ405)。構文エラーがあった場合、エラー判定部4において、出力すべきエラー番号でエラー情報テーブル6の検索を行い(ステップ406)、そのエラー番号のステータスA欄がON(「1」)であるかOFF(「0」)であるかを判定する(ステップ407)。
【0036】
エラー判定部4における判定結果で、当該エラー番号のA欄がONであれば、エラー出力部5において、エラーメッセージを出力し(ステップ408)、OFFであれば、出力を抑止する(ステップ409)。
【0037】
このような処理により、図8に示すようにして、具体的なエラーメッセージの出力抑止制御が行われる。
【0038】
例えば、図8においては、ソースプログラム中に、「iの定義の誤り(変数iが未定義)」、「ピリオドなしの誤り(〜の後ろにピリオドがない)」、「;なしの誤り(〜の後ろに;がない)」、「jの定義の誤り(変数jは2重に定義できない)」という4つのエラーがあるものとしている。
【0039】
この場合、動作モードA適用前は、コンパイル時に、「変数iは未定義です。(エラー番号:0001)」、「〜の後ろにピリオドがありません。(エラー番号:0006)」、「〜の後ろに;がありません。(エラー番号:0007)」、「変数jは2重に定義できません。(エラー番号:0008)」という4つのエラーメッセージが出力される。
【0040】
しかし、同じソースプログラムを、動作モードAを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部2において、図3に示すエラー情報テーブル6におけるエラー番号「0001」、「0008」のA欄のように、定義に関係のあるエラー番号のステータスA欄をONにし、定義に関係しないエラー番号のステータスA欄をOFFに設定する。
【0041】
この設定状態で、構文規則解析部3において、図8に示すソースプログラム例の様なエラーを検出した場合、図3のエラー情報テーブル6中のエラー番号0001、0008のA欄がONであるので、エラー判定部4およびエラー出力部5の処理により、エラー番号「0001」、「0008」のエラーメッセージ(「変数iは未定義」、「変数jは2重に定義できない」)を出力するが、同エラー情報テーブル6中のエラー番号「0006」、「0007」のA欄はOFFであるので、エラー番号「0006」、「0007」のエラーメッセージは出力しない。
【0042】
このように、図8に示す例のような、従来のコンパイルでは4つのエラーメッセージが出力されるソースプログラムを、動作モードAを指定してコンパイルすると、図8の動作モードA適用後に示すように、「変数iは未定義」、「変数jは2重に定義できない」といった、定義に関する特定の種類(「0001」、「0008」)のエラーメッセージのみを出力するように制御することができる。
【0043】
このようにして、図1に示す構文解析部1の構成とすることにより、外部から与えられる動作モードに応じて、特定の種類のエラーメッセージのみを出力するコンパイラを作成することができる。
【0044】
次に、(II)プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する際の動作を説明する。
【0045】
ソースプログラムをコンパイルする際に、プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する動作モードBが指定された場合の例を図6の処理の流れに沿って説明する。尚、動作モードBにおいては、B(エラー番号1、 エラー番号2、 ...)のように、動作モードBの引数にエラーメッセージの出力を抑止したいエラー番号を指定する。
【0046】
まず、動作モード判定部2により、外部からの動作モードBの指定の有無を判定する(ステップ501)。そして、動作モードBの指定があった場合、特定のエラー番号のエラーメッセージに対する出力抑止が指定されているものと判定し、図3のエラー情報テーブル6において、動作モードBの引数に指定されたエラー番号のステータスB欄をONに設定し(ステップ502)、引数に指定されないエラー番号のステータスB欄をOFFに設定する(ステップ503)。尚、B欄がONの設定状態は、当該エラーメッセージ出力を抑止することを表す。
【0047】
この設定状態で、構文規則解析部3において、ソースプログラムの構文規則の解析を行い(ステップ504)、構文エラーの有無を判定する(ステップ505)。構文エラーがあった場合、エラー判定部4において、出力すべきエラー番号でエラー情報テーブル6の検索を行い(ステップ506)、そのエラー番号のB欄の設定がONであるかOFFであるかを判定する(ステップ507)。
【0048】
エラー判定部4の判定結果において、当該エラー番号のB欄がONの設定であれば、エラー出力部5において、当該エラーメッセージの出力を抑止し(ステップ508)、B欄がOFFの設定であれば、当該エラーメッセージを出力する(ステップ509)。
【0049】
このような処理により、図9に示すようにして、具体的なメッセージ出力制御が行われる。
【0050】
例えば、図9においては、ソースプログラム中に、「誤り1」、「誤り2」、「誤り3」、「誤り4」という4つのエラーがあるものとする。
【0051】
この場合、動作モードB適用前は、コンパイル時に、エラー番号「0002」、「0005」、「0009」、「0010」の4つのエラーメッセージが出力される。
【0052】
しかし、同じソースプログラムを、動作モードBを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部2において、図3に示すエラー情報テーブル6におけるエラー番号「0002」、「0005」のB欄のように、動作モードBの引数に指定されたエラー番号「0002」、「0005」のステータスB欄をONに設定し、引数に指定されないエラー番号のステータスB欄をOFFに設定する。
【0053】
この設定状態で、構文規則解析部3において、図9に示すソースプログラム例の様な4つのエラーを検出した場合、図3のエラー情報テーブル6中のエラー番号0002、0005のB欄がONであるので、エラー判定部4およびエラー出力部5の処理により、エラー番号「0002」、「0005」のエラーメッセージは出力せず、同エラー情報テーブル6中のエラー番号「0009」、「0010」のB欄はOFFであるので、エラー番号「0009」、「0010」のエラーメッセージを出力する。
【0054】
このように、図9に示す例のような、従来のコンパイルでは4つのエラーメッセージが出力されるソースプログラムを、動作モードB(0002,0005)を指定してコンパイルすると、図9の動作モードB適用後に示すように、「エラー番号0002」と「エラー番号0005」のエラーメッセージの出力を抑止することができる。
【0055】
このようにして、図1に示す構文解析部1の構成とすることにより、外部から与えられる動作モードの引数で指定されたエラー番号のエラーメッセージの出力を抑止するコンパイラを作成することができる。
【0056】
この動作モードBをコンパイル時に指定することにより、例えば、ソースプログラムの作成者がそのソースプログラムのコンパイルを行う際、文法上は正しくないがコンパイラが仮定してくれる等により動作として問題がなく、ソースプログラムの修正が不要であることが分かっているエラーに関しては、その出力を抑止することができる。
【0057】
次に、(III)ソースプログラム中のデータ定義の誤りに起因して、該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する際の動作を説明する。
【0058】
ソースプログラムをコンパイルする際に、データ定義の誤りに起因して、該当データの参照毎に出力されるデータ参照のエラーメッセージを抑止する動作モードCが指定された場合の例を図7の処理の流れに沿って説明する。
【0059】
まず、動作モード判定部2により、外部からの動作モードCの指定の有無を判定する(ステップ601)。そして、動作モードCの指定があった場合、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する指定であると判定し、分類テーブル2aを参照して「定義」、「参照」に関係のあるエラー番号を特定し、図3におけるエラー情報テーブル6のステータスC欄、D欄を次の通りに設定する。
【0060】
すなわち、定義・参照に関係のあるエラー番号のステータスC欄をONに設定し(ステップ602)、さらに、定義に関係あるものはD欄をON(ステップ603)、参照に関係あるものはOFFに設定する(ステップ604)。また、定義・参照に関係しないエラー番号のステータスC欄はOFFに設定する(ステップ605)。
【0061】
ここでは、ステータスC欄がONの設定状態は、データの定義または参照に関係のあるエラーメッセージであることを表し、また、ステータスD欄がONの設定状態はデータの定義、OFFの設定状態はデータの参照に関係のあるエラーメッセージであることを表す。
【0062】
このような設定状態で、構文規則解析部3において、ソースプログラムの構文規則の解析を行い(ステップ606)、構文エラーの有無を判定する(ステップ607)。構文エラーがあった場合、エラー判定部4において、エラー情報テーブル6を検索し、そのエラー番号のステータスC欄がONの設定であるかを判定し(ステップ608)、ステータスC欄がON設定であれば、ステータスD欄がON設定であるかを判定する(ステップ609)。
【0063】
エラー判定部4においての判定で、当該エラー番号のステータスC欄およびD欄の両方がON設定になっていれば、関連エラーテーブル7の定義用テーブル7aにエラー番号とエラー対象のデータ名を登録し(ステップ610)、定義のエラーメッセージを出力する(ステップ611)。
【0064】
また、ステータスC欄がON設定で且つD欄がOFF設定になっていれば、関連エラーテーブル7における参照用テーブル7bにエラー番号とエラー対象のデータ名を登録する(ステップ612)。また、ステータスC欄がOFF設定になっていれば、そのエラー番号のエラーメッセージを、そのまま出力する(ステップ613)。
【0065】
エラー判定部4において、まず参照用テーブル7bを検索して(ステップ614)、次に定義用テーブル7aを検索し(ステップ615)、定義用テーブル7aに同じデータ名が登録されているか否か判定する(ステップ616)。
【0066】
定義用テーブル7aに同じデータ名が登録されていれば、参照のエラーメッセージの出力は抑止するが(ステップ617)、同じデータ名が登録されていなければ、エラー出力部5において、参照のエラーメッセージを出力する(ステップ618)。
【0067】
このような処理により、図10に示すようにして、具体的なメッセージ出力制御が行われる。
【0068】
例えば、図10においては、ソースプログラム中に、「data1の定義の誤り」、「data2の定義の誤り」の箇所があり、さらに、この定義の誤りがある「data1」と「data2」を参照する箇所が4つ(「data1の参照」、「data2の参照」、「data1の参照」、「data1の参照」)あるものとする。
【0069】
この場合、エラー番号0003を「xxx(データ名)の定義の誤り」、エラー番号0004を「xxx(データ名)の未定義」とのエラーメッセージであるとすると、動作モードC適用前は、コンパイル時に、「data1の定義の誤り(エラー番号:0003)」、「data2の定義の誤り(エラー番号:0003)」、「data1は未定義(エラー番号:0004)」、「data2は未定義(エラー番号:0004)」、「data1は未定義(エラー番号:0004)」、「data1は未定義(エラー番号:0004)」という6つのエラーメッセージが出力される。
【0070】
しかし、同じソースプログラムを、動作モードCを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部2において、図3に示すエラー情報テーブル6におけるエラー番号「0003」、「0004」のC欄のように、定義・参照に関係のあるエラー番号のステータスC欄をONに設定し、さらに、定義に関係のあるエラー番号0003のステータスD欄をON、参照に関係のあるエラー番号0004のステータスD欄をOFFに設定する。定義・参照に関係しないエラー番号のステータスC欄はOFFに設定する。
【0071】
この設定状態で、構文規則解析部3において、図10に示すソースプログラム例の様な6つのエラーを検出した場合、図3のエラー情報テーブル6中のエラー番号0003のC欄およびD欄がON設定であるので、エラー判定部4により、図4に示すように、定義用テーブル7aに、エラー番号「0003」とデータ名「data1」、および、エラー番号「0003」とデータ名「data2」を登録し、エラー番号「0003」のエラーメッセージ「data1の定義の誤り(エラー番号:0003)」と「data2の定義の誤り(エラー番号:0003)」を出力する。
【0072】
また、図3のエラー情報テーブル6中のエラー番号0004のC欄がON設定で且つD欄がOFF設定であるので、エラー判定部4により、図4に示すように、参照用テーブル7bに、エラー番号「0004」とデータ名「data1」、および、エラー番号「0004」とデータ名「data2」、エラー番号「0004」とデータ名「data1」、エラー番号「0004」とデータ名「data1」を登録する。
【0073】
図4において、参照用テーブル7bに登録されているデータ名「data1」、「data2」は、定義用テーブル7aにも登録されているので、エラー判定部4およびエラー出力部5の処理により、エラー番号「0004」のエラーメッセージ出力を抑止する。
【0074】
このように、図10に示す例のような、従来のコンパイルでは6つのエラーメッセージが出力されるソースプログラムを、動作モードCを指定してコンパイルすると、図10の動作モードC適用後に示すように、原因となっている定義のエラーメッセージのみを出力するように制御できる。
【0075】
このようにして、図1に示す構文解析部1の構成とすることにより、外部から与えられる動作モードに応じて、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するコンパイラを作成することができる。
【0076】
以上に説明した例では、既存のコンパイラ自体に、本発明に係わるエラーメッセージ出力制御システムの各機能を設けた構成としているが、図13に示すように、エラーメッセージ出力制御システムを既存のコンパイラの外部に設け、既存のコンパイラから出力されるエラーメッセージを、外部の表示装置や印刷装置等に出力することを抑止する構成としても良い。
【0077】
すなわち、図13における構成では、ソースプログラム1201を目的プログラム1203にコンパイルする既存のコンパイラ1202とは別に、エラーメッセージ出力制御システム1204を設け、このエラーメッセージ出力制御システム1204に、キーボード等を介して入力される動作モード(A,B,C,…)に対応し、分類テーブルを参照して、出力許可もしくは出力不許可となるエラーメッセージを判定し、各エラーメッセージのそれぞれに付与されたエラー番号に対して出力の許可もしくは不許可を表す情報(1,0)を設定してエラー情報テーブルを生成する機能と、このエラー情報テーブルを参照して、コンパイラ1202で検出されたエラーのメッセージを、表示装置やプリンタ装置からなる出力装置1205に出力するか否かを判定する機能と、この判定結果に基づき、コンパイラ1202で検出されたエラーのメッセージの出力抑止制御を行う機能とを設けた構成とする。
【0078】
尚、分類テーブルは、コンパイラ1202からエラーメッセージ出力制御システム1204にコピーしても良いし、エラーメッセージ出力制御システム1204からコンパイラ1202に適宜にアクセスして参照することでも良い。また、動作モードCに対応して、関連エラーテーブル(定義用テーブル、参照用テーブル)を生成する機能、および、この関連エラーテーブルに基づきコンパイラ1202が検出したエラーメッセージの出力抑止の要否を判定する機能と出力抑止制御を行う機能を設ける構成としても良い。
【0079】
以上、図1〜図10を用いて説明したように、本例では、以下の各構成要素を具備することで、コンパイル処理で検出したエラーのメッセージの内、コンパイル操作時の指示(動作モードA,B,C,…)に動的に応じて、特定の種類のエラーメッセージの出力を抑止することを特徴とする。(イ)全てのエラーメッセージのそれぞれを、例えば定義に関するエラーメッセージあるいは参照に関するエラーメッセージ等、種類別に分類し、各エラーメッセージのエラー番号と分類番号とを対応付けた分類テーブル2a、(ロ)コンパイル操作する操作者等の外部からの指示情報に対応する分類番号をキーに分類テーブル2aを参照して、指摘された分類番号が対応付けられた各エラー番号を特定し、特定した各エラー番号を明示したエラー情報テーブル6を生成する動作モード判定部2、(ハ)構文規則解析部3でエラー検出したエラーメッセージのエラー番号をキーにエラー情報テーブル6を参照して、当該エラー番号がエラー情報テーブル6に明示されているか否かにより、エラー検出したエラーメッセージの出力・非出力を決定するエラー判定部4。
【0080】
例えば動作モードCの指定があれば、動作モード判定部2は、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する指定であると判定し、分類テーブル2aを参照して「定義」、「参照」に関係のあるエラー番号を特定し、エラー情報テーブル6において、各エラー番号毎に、定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示するフラグをステータスC欄に設定すると共に、定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示するフラグをステータスD欄に設定する。
【0081】
さらに、構文規則解析部3において、エラー検出したエラーメッセージのエラー番号をキーに当該エラー情報テーブル6を検索して、定義に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した定義用テーブル7aを生成し、参照に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した参照用テーブル7bを生成する。
【0082】
そして、エラー判定部4は、この参照用テーブル7bにおいて明示されていても定義用テーブル7aにおいても明示されているデータ名に対応するエラー番号のエラーメッセージの出力は抑止するものと判定する。この判定結果に基づき、エラー出力部5は、当該エラー番号のエラーメッセージの出力は抑止する。
【0083】
このように、本例では、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージ等、特定のエラーメッセージに関して、その出力を抑止することが可能であり、ソースプログラムの修正作業における原因調査作業を軽減できる。
【0084】
尚、本発明は、図1〜図10を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、分類テーブル2aを予めコンパイラ内に設けた構成としているが、ソースプログラムのコンパイル時に、コンパイラ操作者が指定する情報に基づき、各エラーメッセージの内容を解析して動的に生成することでも良い。
【0085】
また、本例では、複数のテーブル情報の組み合わせで、出力抑止するエラーメッセージを特定する技術例として、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するために、エラー情報テーブル6においてステータスC欄とD欄を用いた例を示したが、このような「定義」および「参照」の例に限定されるものではなく、他の組み合わせにも適用可能である。
【0086】
また、エラー情報テーブル6に関しても、1つのテーブル上で各エラー番号に対応付けて複数のステータス欄(A,B,C,D,…)のON,OFF設定を行う構成としているが、各ステータス欄(A,B,C,D,…)毎に、別々のエラー情報テーブルを設ける構成としても良い。
【0087】
また、エラーメッセージので抑止のための外部からの指定に関しても、本例のようにソースプログラムの作成者かその検証のために当該コンパイラを用いる際にオプションとして動作モード(A,B,C,…)を指定することでも、各操作者別あるいはスキル別に予め用意された情報に応じて、エラー情報テーブル6の設定を変える構成としても良い。
【0088】
特に、スキル別とする場合、本例で例示したように、分類テーブル2aからエラー情報テーブル6を動的に生成するのではなく、予めスキル別のエラー情報テーブル6を作成しておき、コンパイラ自体に設けておくことでも良い。
【0089】
また、本例では、動作モードBにおいてエラー番号そのものを2つ、引数として指定しているが、その引数としてはのエラー番号の個数は特に制限されるものではなく、また、引数としてもエラー番号に制限されるものではない。
【0090】
また、本例のコンピュータ構成例としては、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【0091】
【発明の効果】
本発明によれば、特定の種類のエラーメッセージのみの出力、あるいは、プログラム作成者が指定した特定のエラー番号のエラーメッセージの出力抑止、さらに、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力抑止等が可能であり、例えば、ソースプログラムの修正が不要である事が既知なエラーメッセージの出力を効率的に回避することができ、ソースプログラムのエラー原因の調査作業に要する作業者の負荷を軽減し、ソースプログラムの修正作業を効率化できる。
【図面の簡単な説明】
【図1】本発明に係わるエラーメッセージ出力制御システムの第1の構成例を示すブロック図である。
【図2】図1のエラーメッセージ出力制御システムにおける分類テーブルの構成例を示す説明図である。
【図3】図1のエラーメッセージ出力制御システムにおけるエラー情報テーブルの構成例を示す説明図である。
【図4】図1のエラーメッセージ出力制御システムにおける関連エラーテーブルの構成例を示す説明図である。
【図5】図1におけるエラーメッセージ出力制御システムの第1の処理動作例を示すPAD図である。
【図6】図1におけるエラーメッセージ出力制御システムの第2の処理動作例を示すPAD図である。
【図7】図1におけるエラーメッセージ出力制御システムの第3の処理動作例を示すPAD図である。
【図8】図5における第1の処理動作の具体例を示す説明図である。
【図9】図6における第2の処理動作の具体例を示す説明図である。
【図10】図7における第3の処理動作の具体例を示す説明図である。
【図11】図1におけるエラーメッセージ出力制御システムを動作させるコンピュータのハードウェア構成例を示すブロック図である。
【図12】図1におけるエラーメッセージ出力制御システムを具備したコンパイラの構成例を示すブロック図である。
【図13】本発明に係わるエラーメッセージ出力制御システムの第2の構成例を示すブロック図である。
【符号の説明】
1:構文解析部、2:動作モード判定部、2a:分類テーブル、3:構文規則解析部、4:エラー判定部、5:エラー出力部、6:エラー情報テーブル、7:関連エラーテーブル、7a:定義用テーブル、7b:参照用テーブル、21:表示装置、22:入力装置、23:外部記憶装置、24:情報処理装置、24a:CPU、24b:主メモリ、24c:入出力インタフェース、25:光ディスク、26:駆動装置、27:通信装置、1101:ソースプログラム、1102:読込部、1103:字句解析部、1104:構文解析部、1105:中間語生成部、1106:最適化部、1107:目的コード生成部、1108:目的プログラム、1109:テーブル、1201:ソースプログラム、1202:コンパイラ、1203:目的プログラム、1204:メッセージ出力制御システム、1205:出力装置。

Claims (7)

  1. コンパイル処理で検出されたエラーのメッセージの出力を制御するエラーメッセージ出力制御システムであって、
    外部から入力される出力制御情報に基づき、出力許可もしくは出力不許可となるエラーメッセージを判定し、各エラーメッセージのそれぞれに対して出力の許可もしくは不許可を表す情報を設定してエラー情報テーブルを生成する第1の手段と、
    コンパイル処理で検出されたエラーのメッセージを出力するか否かを、上記エラー情報テーブルを参照して判定する第2の手段と、
    該第2の判定手段の判定結果に基づき、コンパイル処理で検出されたエラーのメッセージの出力抑止制御を行う第3の手段と
    を有することを特徴とするエラーメッセージ出力制御システム。
  2. 請求項1に記載のエラーメッセージ出力制御システムであって、上記エラー情報テーブルは複数からなり、
    上記第1の手段は、各エラー情報テーブルにおける当該エラー番号に対する設定内容の組み合わせで上記各エラーメッセージの出力の許可もしくは不許可を表すように各エラー情報テーブルを生成することを特徴とするエラーメッセージ出力制御システム。
  3. コンピュータを、請求項1、もしくは、請求項2のいずれかに記載のエラーメッセージ出力制御システムにおける各手段として実行させるためのコンパイラ。
  4. コンパイル処理で検出されたエラーのメッセージの出力を制御するコンピュータシステムのエラーメッセージ出力制御方法であって、
    予め各エラーメッセージを分類して各エラーメッセージのエラー番号に分類番号を対応付けた分類情報を参照し、各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが外部から指定された第1の分類番号もしくは該第1の分類番号に関連する第2の分類番号の少なくともいずれか一方に関するエラーメッセージであることを明示する第1の識別情報をエラー情報テーブルに設定する第1の手順と、
    上記分類情報を参照し、上記エラー情報テーブルにおいて各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが上記第1の分類番号と上記第2の分類番号のいずれに属するかを明示する第2の識別情報を設定する第2の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されていなけば当該エラー番号のエラーメッセージを出力する第3の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されており且つ上記第2の識別情報として上記第1の分類番号に属するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて第1の関連用テーブルに登録して、当該エラー番号のエラーメッセージを出力する第4の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されており且つ上記第2の識別情報として上記第2の分類番号に属するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて第2の関連用テーブルに登録する第5の手順と、
    上記第1の関連用テーブルと上記第2の関連用テーブルとの各々の登録内容を比較して、上記第2の関連用テーブルにおいてのみ明示されているデータ名に対応するエラー番号のエラーメッセージを出力し、上記第1の関連用テーブルと上記第2の関連用テーブルの両方で明示されているデータ名であれば、上記第2の関連用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージの出力を抑止して上記第1の関連用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージを出力する第6の手順と
    を有することを特徴とするエラーメッセージ出力制御方法。
  5. コンパイル処理で検出されたエラーのメッセージの出力を制御するコンピュータシステムのエラーメッセージ出力制御方法であって、
    外部から入力される、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力抑止指示に基づき、各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示する第1の識別情報と、当該エラーメッセージが定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示する第2の識別情報とをエラー情報テーブルに設定する第1の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されていなけば当該エラー番号のエラーメッセージを出力する第2の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されており且つ上記第2の識別情報として定義に関するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて定義用テーブルに登録して、当該エラー番号のエラーメッセージを出力する第3の手順と、
    コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第1の識別情報が設定されており且つ上記第2の識別情報として参照に関するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて参照用テーブルに登録する第4の手順と、
    上記定義用テーブルと上記参照用テーブルとの各々の登録内容を比較して、上記参照用テーブルにおいてのみ明示されているデータ名に対応するエラー番号のエラーメッセージを出力し、上記参照用テーブルと上記定義用テーブルの両方で明示されているデータ名であれば、上記参照用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージの出力を抑止して上記定義用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージを出力する第5の手順と
    を有することを特徴とするエラーメッセージ出力制御方法。
  6. コンピュータに、請求項4、もしくは、請求項5のいずれかに記載のエラーメッセージ出力制御方法における各手順を実行させるためのコンパイラ。
  7. コンピュータに、ソースプログラムをコンパイルさせ、検出したエラーのメッセージを出力させるコンパイラであって、
    エラーメッセージの種類別に設定された分類番号を各エラーメッセージのエラー番号に対応付けた分類テーブル情報を有し、
    上記コンピュータに、外部から入力される指示情報に対応する分類番号を特定して上記分類テーブルから当該分類番号が対応付けられた各エラー番号を判定し、判定した各エラー番号を明示したエラー情報テーブルを生成する手順と、
    エラー検出したエラーメッセージのエラー番号が上記エラー情報テーブルに明示されているか否かにより当該エラーメッセージを出力するか否かを判定する手順と、
    該手順での判定結果に基づき、エラー検出したエラーメッセージを出力もしくは出力抑止する手順と
    を実行させるためのコンパイラ。
JP2002375942A 2002-12-26 2002-12-26 エラーメッセージ出力制御システムと方法およびコンパイラ Pending JP2004206501A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002375942A JP2004206501A (ja) 2002-12-26 2002-12-26 エラーメッセージ出力制御システムと方法およびコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002375942A JP2004206501A (ja) 2002-12-26 2002-12-26 エラーメッセージ出力制御システムと方法およびコンパイラ

Publications (1)

Publication Number Publication Date
JP2004206501A true JP2004206501A (ja) 2004-07-22

Family

ID=32813520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002375942A Pending JP2004206501A (ja) 2002-12-26 2002-12-26 エラーメッセージ出力制御システムと方法およびコンパイラ

Country Status (1)

Country Link
JP (1) JP2004206501A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141741A (ja) * 2010-12-28 2012-07-26 Fujitsu Ltd 解析支援プログラム,解析支援装置および解析支援方法
JP2016048554A (ja) * 2014-08-27 2016-04-07 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御機器プログラムコードを作成するコンピュータ実施方法および関連するメッセージ管理環境
JP2020086928A (ja) * 2018-11-26 2020-06-04 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141741A (ja) * 2010-12-28 2012-07-26 Fujitsu Ltd 解析支援プログラム,解析支援装置および解析支援方法
JP2016048554A (ja) * 2014-08-27 2016-04-07 ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングdspace digital signal processing and control engineering GmbH 制御機器プログラムコードを作成するコンピュータ実施方法および関連するメッセージ管理環境
JP2020086928A (ja) * 2018-11-26 2020-06-04 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル
JP7238361B2 (ja) 2018-11-26 2023-03-14 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル

Similar Documents

Publication Publication Date Title
US8010951B2 (en) Fault-tolerant dynamic editing of GUI display and source code
JP4057938B2 (ja) コンパイラ、コンパイル方法、及びプログラム開発ツール
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US20050262482A1 (en) System and method for efficiently analyzing and building interdependent resources in a software project
JPH05197685A (ja) ウィンドウ化ユーザ・インタフェースの複数言語による翻訳を支援するシステム及び方法
US7284235B2 (en) Creation of content versions using content layers
US20070208995A1 (en) Document Processing Device and Document Processing Method
US20070198915A1 (en) Document Processing Device And Document Processing Method
US20110202906A1 (en) Compiling method and compiling program
JP2007179153A (ja) スクリプトプログラム実行装置、スクリプトプログラム実行方法及び光ディスク装置
JP2004206501A (ja) エラーメッセージ出力制御システムと方法およびコンパイラ
JPH11296366A (ja) エラー検出装置及びエラー検出方法及び記録媒体
US20090199084A1 (en) Document processing device and document processing method
JP2005157720A (ja) 国際対応アプリケーションソフトウェアおよびその開発方法
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
TW200417924A (en) WIN F-language interpreter
US20060130027A1 (en) Data processing system and method
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JPH11126160A (ja) 仕様変更保守作業支援システムおよびその処理プログラムを記録した記録媒体
JP2013080386A (ja) 情報処理装置、アドレス管理方法
JP6419902B1 (ja) プログラム比較方法、プログラム比較装置およびプログラム比較プログラム
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JP2002082811A (ja) コンパイル方法および記録媒体
JP6066031B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2023167588A (ja) 判定装置、判定方法および判定プログラム