JP2815178B2 - コンパイラ装置 - Google Patents
コンパイラ装置Info
- Publication number
- JP2815178B2 JP2815178B2 JP1169132A JP16913289A JP2815178B2 JP 2815178 B2 JP2815178 B2 JP 2815178B2 JP 1169132 A JP1169132 A JP 1169132A JP 16913289 A JP16913289 A JP 16913289A JP 2815178 B2 JP2815178 B2 JP 2815178B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- expression
- shape
- shape inspection
- compiler
- 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 - Lifetime
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 〔概要〕 プログラム中に記述された配列式の配列形状の同一性
を検査するコンパイラ装置に関し, プログラム翻訳時には形状検査が困難な配列変数を含
む配列式についての形状検査を可能にすることを目的と
し, ソースプログラムを翻訳して、オブジェクトを生成す
るコンパイラ装置においてソースプログラム中の、配列
の要素の数の指定が変数で行われている配列式を用いた
演算式について実行時に求まる変数を抽出し、抽出され
た変数を要素としている配列式について一つの演算式内
の他の配列式との間で要素の数が等しいか否かの検査を
行うオブジェクトを生成するオブジェクト生成手段を備
えたことを特徴とする。
を検査するコンパイラ装置に関し, プログラム翻訳時には形状検査が困難な配列変数を含
む配列式についての形状検査を可能にすることを目的と
し, ソースプログラムを翻訳して、オブジェクトを生成す
るコンパイラ装置においてソースプログラム中の、配列
の要素の数の指定が変数で行われている配列式を用いた
演算式について実行時に求まる変数を抽出し、抽出され
た変数を要素としている配列式について一つの演算式内
の他の配列式との間で要素の数が等しいか否かの検査を
行うオブジェクトを生成するオブジェクト生成手段を備
えたことを特徴とする。
本発明は,プログラム中に記述された配列式の配列形
状の同一性を検査するコンパイラ装置に関する。
状の同一性を検査するコンパイラ装置に関する。
従来のFORTRAN77では,言語仕様上配列式の記述が許
されていなかったが,改訂されたFORTRAN8Xでは可能と
なっている。ただし,その式に出現する各配列の形状
(各次元の大きさ)は,同一でなければならない。次に
配列式の例を示す。
されていなかったが,改訂されたFORTRAN8Xでは可能と
なっている。ただし,その式に出現する各配列の形状
(各次元の大きさ)は,同一でなければならない。次に
配列式の例を示す。
<例 1> INTEGER A(2,3),B(2,2),C(2,3),D(2,3) A=B+C …… A=C+D …… の文に現れる配列変数AとCの形状は2次元配列で
それぞれの次元の限界値が,2と3の[2,3]であるが,
配列変数Bの形状が同じ2次元配列であっても各限界値
が2,2の[2,2]であるのでエラーである。の文に現わ
れる配列変数A,B,Cの形状は,いずれも[2,3]なので正
しい。しかし,例の及びの場合は,式の出現する配
列の形状が翻訳時に判明するので翻訳時に診断(エラ
ー)メッセージが出力され問題ないが,次の例のような
場合には,翻訳時に形状を検査することができない。
それぞれの次元の限界値が,2と3の[2,3]であるが,
配列変数Bの形状が同じ2次元配列であっても各限界値
が2,2の[2,2]であるのでエラーである。の文に現わ
れる配列変数A,B,Cの形状は,いずれも[2,3]なので正
しい。しかし,例の及びの場合は,式の出現する配
列の形状が翻訳時に判明するので翻訳時に診断(エラ
ー)メッセージが出力され問題ないが,次の例のような
場合には,翻訳時に形状を検査することができない。
<例 2> SUBROUTINE SUB(A,B,C,I,J,K)INTEGER A(I),
B(J),C(K) A=B+C …… A(I:J+1)(注1)=B(J:K+1)+C(K:I+
1) …… (注1):A(I),A(I+1),…,A(J),A(J+
1)までの要素を指定している。
B(J),C(K) A=B+C …… A(I:J+1)(注1)=B(J:K+1)+C(K:I+
1) …… (注1):A(I),A(I+1),…,A(J),A(J+
1)までの要素を指定している。
この例2において,変数I,J,Kの値が異なった場合に
は,形状がことなるので実行結果が保証されない。しか
し,翻訳時には変数I,J,Kの値が不明であるため,何ん
ら診断(エラー)メッセージが出力されない。
は,形状がことなるので実行結果が保証されない。しか
し,翻訳時には変数I,J,Kの値が不明であるため,何ん
ら診断(エラー)メッセージが出力されない。
本発明は,プログラム翻訳時には形状検査が困難な配
列変数を含む配列式についての形状検査を可能にするこ
とを目的としている。
列変数を含む配列式についての形状検査を可能にするこ
とを目的としている。
本発明はFORTRAN8Xのようなコンパイラ言語を用いて
記述された配列式の配列変数が,プログラム実行時には
確定できることに着目して,プログラムの翻訳処理時に
形状検査が必要な配列式の検査制御情報を作成してお
き,プログラム実行時に検査制御情報にしたがってオブ
ジェクトから形状検査ライブラリの呼び出しを行わせ
て,配列変数の形状検査を行わせるようにしたものであ
る。
記述された配列式の配列変数が,プログラム実行時には
確定できることに着目して,プログラムの翻訳処理時に
形状検査が必要な配列式の検査制御情報を作成してお
き,プログラム実行時に検査制御情報にしたがってオブ
ジェクトから形状検査ライブラリの呼び出しを行わせ
て,配列変数の形状検査を行わせるようにしたものであ
る。
第1図は本発明の原理説明図である。
図において, 1はソースプログラムであり,FORTRAN8Xのような配列
式を表現できるコンパイラ言語で記述されている。
式を表現できるコンパイラ言語で記述されている。
2は,ソースプログラム1を翻訳処理するコンパイラ
である。
である。
3は,コンパイラ2においてデバッグオプション指定
時に実行される形状検査制御テーブル作成処理である。
時に実行される形状検査制御テーブル作成処理である。
4は,形状検査制御テーブルであり,形状検査を必要
とされる各配列変数の名前と配列式中でのレベル,その
他形状検査に必要な制御情報が設定される。
とされる各配列変数の名前と配列式中でのレベル,その
他形状検査に必要な制御情報が設定される。
5は,コンパイラ2により翻訳出力されたオブジェク
トである。形状検査制御テーブル4の内容に基づいて形
状検査ライブラリを呼び出す機能が,コンパイラ2によ
り付与されている。
トである。形状検査制御テーブル4の内容に基づいて形
状検査ライブラリを呼び出す機能が,コンパイラ2によ
り付与されている。
6は、形状検査ライブラリであり,オブジェクト5の
実行時に呼び出され,依頼された配列変数について,配
列式中での同一レベルの先行する他の配列変数との間で
形状の同一性を検査する。もしも形状の不一致が検出さ
れた場合には,エラーメッセージを出力する。
実行時に呼び出され,依頼された配列変数について,配
列式中での同一レベルの先行する他の配列変数との間で
形状の同一性を検査する。もしも形状の不一致が検出さ
れた場合には,エラーメッセージを出力する。
第1図において、形状検査ライブラリ6に検査処理を
行わせるために必要な情報,つまりコンパイラ2が形状
検査制御テーブル4に設定してオブジェクト5から形状
検査ライブラリ6に伝える制御情報について,次に説明
する。
行わせるために必要な情報,つまりコンパイラ2が形状
検査制御テーブル4に設定してオブジェクト5から形状
検査ライブラリ6に伝える制御情報について,次に説明
する。
(1) 式中のレベルと最初の配列引用であることを形
状検索ライブラリに通知する。
状検索ライブラリに通知する。
式が異なれば(例えば,手続きの実引数と式とその手
続きを引用している式(例3参照),形状が違っても良
いので、形状検査ライブラリ呼出しの際に式のレベルの
情報を渡す。
続きを引用している式(例3参照),形状が違っても良
いので、形状検査ライブラリ呼出しの際に式のレベルの
情報を渡す。
(2) 式に関数引用がある場合、形状検査ライブラリ
に対して関数引用の始まりと終了を通知する。
に対して関数引用の始まりと終了を通知する。
式に関数引用がある場合,関係内でレベル1の形態検
査が呼ばれるので、オブジェクトは,形状検査ライブラ
リに関数の手続きが開始されたことを通知し,通知され
た形状検査ライブラリは,環境を新しい状態に切り換え
る。また,関数から復帰したならば、オブジェクトは,
形状検査ライブラリに関数の手付きが終了したことを通
知し,通知された形状検査ライブラリは,環境を前の状
態に復元する。
査が呼ばれるので、オブジェクトは,形状検査ライブラ
リに関数の手続きが開始されたことを通知し,通知され
た形状検査ライブラリは,環境を新しい状態に切り換え
る。また,関数から復帰したならば、オブジェクトは,
形状検査ライブラリに関数の手付きが終了したことを通
知し,通知された形状検査ライブラリは,環境を前の状
態に復元する。
第2図に関数引用のある式の例を示す。
もしも形状検査ライブラリに関数の開始及び終了を通
知しなければ,関数IFUNのX=Y+Zの文の式で形状検
査ライブラリが式のレベル1の形式と式のレベル1
の形状とを比較し,不一致のためエラーを出力してしま
う。
知しなければ,関数IFUNのX=Y+Zの文の式で形状検
査ライブラリが式のレベル1の形式と式のレベル1
の形状とを比較し,不一致のためエラーを出力してしま
う。
このようにして第1図に示された本発明の構成によ
り,オブジェクトが形状検査ライブラリに配列式中の配
列変数の形状検査を依頼することにより自動化すること
ができる。
り,オブジェクトが形状検査ライブラリに配列式中の配
列変数の形状検査を依頼することにより自動化すること
ができる。
第3図は,第2図の式,の形状検査を行うために
作成された形状検査制御テーブルの例を示したものであ
る。
作成された形状検査制御テーブルの例を示したものであ
る。
テーブルの最も左の欄は「順序」であり形状検査ライ
ブラリの呼び出し順序を示している。次の「呼出し種
別」欄は,ライブライ呼び出しが形状検査を依頼するた
めか,関数開始あるいは関数復帰を通知するためなのか
を表示している。また「形状検査対象の変数」欄は,形
状検査が必要な配列変数の名前を表示している。
ブラリの呼び出し順序を示している。次の「呼出し種
別」欄は,ライブライ呼び出しが形状検査を依頼するた
めか,関数開始あるいは関数復帰を通知するためなのか
を表示している。また「形状検査対象の変数」欄は,形
状検査が必要な配列変数の名前を表示している。
続く「検査レベル」は,その配列変数が配列式中で占
めるレベルの値を示す。そして「最初」は,その配列変
数がそのレベルで最初に出現したもの(ON)か否(OF
F)かを示している。
めるレベルの値を示す。そして「最初」は,その配列変
数がそのレベルで最初に出現したもの(ON)か否(OF
F)かを示している。
第4図は,本発明実施例による形状検査ライブラリの
処理フローを示したものである。
処理フローを示したものである。
形状検査ライブラリは,主用と関数用の2つの形状表
示域をもち,それぞれにおいてレベルごとの形状値を設
定して,同一レベルの形状変数間の形状同一性をチェッ
クする。手順を簡単に説明する。
示域をもち,それぞれにおいてレベルごとの形状値を設
定して,同一レベルの形状変数間の形状同一性をチェッ
クする。手順を簡単に説明する。
まず,オブジェクトからの呼出し種別が関数開始又は
関数復帰か,あるいはそれ以外(形状検査)かを調べ
る。関数開始の場合は,使用する形状表示域を主用形状
表示域から関数用形状表示域に切り換え,また関数復帰
の場合は主用形状表示域に戻す。
関数復帰か,あるいはそれ以外(形状検査)かを調べ
る。関数開始の場合は,使用する形状表示域を主用形状
表示域から関数用形状表示域に切り換え,また関数復帰
の場合は主用形状表示域に戻す。
一方,呼出し種別が形状検査であった場合には,さら
にそのレベル(オブジェクトから通知された)が最初に
出現したレベルかどうかを判定し,最初である場合は,
そのとき使用が決定されている主用あるいは関数用の形
状表示域の該当するレベルのものをクリアし,検査を依
頼された配列変数の配列形状値を設定する。つまり,そ
のレベルにおいて配列変数形状値をチェックする基準値
として使用可能にする。
にそのレベル(オブジェクトから通知された)が最初に
出現したレベルかどうかを判定し,最初である場合は,
そのとき使用が決定されている主用あるいは関数用の形
状表示域の該当するレベルのものをクリアし,検査を依
頼された配列変数の配列形状値を設定する。つまり,そ
のレベルにおいて配列変数形状値をチェックする基準値
として使用可能にする。
また形状検査を依頼された配列変数のレベルが最初の
ものでない場合にはその形状値と使用されている形状表
示域の該当するレベルの形状値とを比較し,一致すれば
正常,不一致であればエラーとして,エラーメッセージ
を出力する。
ものでない場合にはその形状値と使用されている形状表
示域の該当するレベルの形状値とを比較し,一致すれば
正常,不一致であればエラーとして,エラーメッセージ
を出力する。
このようにして,オブジェクトが第3図の形状検査制
御テーブルの各エントリにしたがって形状検査ライブラ
リを呼び出すごとに上述した処理を行う。
御テーブルの各エントリにしたがって形状検査ライブラ
リを呼び出すごとに上述した処理を行う。
たとえばFORTRAN8Xで書かれたプログラムの中に配列
式の形状不一致エラーがあった場合,プログラム作成者
等がそのエラー個所を発見するにはFORTRAN8Xについて
の高度の知識と大変な労力とが必要となる。本発明はこ
れを自動検査可能としたことにより,デバッグ時間を大
幅に短縮し,プログラム開発を効率化することができ
る。
式の形状不一致エラーがあった場合,プログラム作成者
等がそのエラー個所を発見するにはFORTRAN8Xについて
の高度の知識と大変な労力とが必要となる。本発明はこ
れを自動検査可能としたことにより,デバッグ時間を大
幅に短縮し,プログラム開発を効率化することができ
る。
第1図は本発明の原理的構成図,第2図は配列式を含む
プログラム例の説明図,第3図は本発明実施例で使用さ
れる形状検査制御テーブルの例の説明図,第4図は本発
明実施例による形状検査ライブラリの処理フロー図であ
る。 第1図中 1:ソースプログラム 2:コンパイラ 3:形状検査制御テーブル作成処理 4:形状検査制御テーブル 5:オブジェクト 6:形状検査ライブラリ
プログラム例の説明図,第3図は本発明実施例で使用さ
れる形状検査制御テーブルの例の説明図,第4図は本発
明実施例による形状検査ライブラリの処理フロー図であ
る。 第1図中 1:ソースプログラム 2:コンパイラ 3:形状検査制御テーブル作成処理 4:形状検査制御テーブル 5:オブジェクト 6:形状検査ライブラリ
Claims (2)
- 【請求項1】ソースプログラムを翻訳して、オブジェク
トを生成するコンパイラ装置において、 ソースプログラム中の、配列の要素の数の指定が変数で
行われている配列式を用いた演算式について実行時に求
まる変数を抽出し、抽出された変数を要素としている配
列式について一つの演算式内の他の配列式との間で要素
の数が等しいか否かの検査を行うオブジェクトを生成す
るオブジェクト生成手段を備えたことを特徴とするコン
パイラ装置。 - 【請求項2】前記コンパイラ装置は、ソースプログラム
中の、配列の要素の数の指定が変数で行われている配列
式を用いた演算式について、一つの演算式内の他の配列
式との間で要素の数が等しいか否かの検査を行うための
配列式同士のグループを記憶した形状検査制御テーブル
を作成する制御テーブル作成手段を有し、 前記オブジェクト生成手段が生成したオブジェクトは、
前記形状検査制御テーブルに基づいて、同一のグループ
内の変数について、要素の数が等しいか否かの検査を行
うことを特徴とする請求項1記載のコンパイラ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1169132A JP2815178B2 (ja) | 1989-06-30 | 1989-06-30 | コンパイラ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1169132A JP2815178B2 (ja) | 1989-06-30 | 1989-06-30 | コンパイラ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0334030A JPH0334030A (ja) | 1991-02-14 |
JP2815178B2 true JP2815178B2 (ja) | 1998-10-27 |
Family
ID=15880876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1169132A Expired - Lifetime JP2815178B2 (ja) | 1989-06-30 | 1989-06-30 | コンパイラ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2815178B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5169322B2 (ja) * | 2008-03-05 | 2013-03-27 | 日本電気株式会社 | 変数最適化装置、変数最適化プログラム、コンパイラ、変数最適化方法、及びコンパイル方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62166433A (ja) * | 1986-01-17 | 1987-07-22 | Fujitsu Ltd | ソ−ス・プログラムの記述チェック方式 |
-
1989
- 1989-06-30 JP JP1169132A patent/JP2815178B2/ja not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62166433A (ja) * | 1986-01-17 | 1987-07-22 | Fujitsu Ltd | ソ−ス・プログラムの記述チェック方式 |
Also Published As
Publication number | Publication date |
---|---|
JPH0334030A (ja) | 1991-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004513435A (ja) | 静的解析を使用する動的制約条件付きテスト生成のためのシステムおよび方法 | |
Agarwal et al. | Copilot Evaluation Harness: Evaluating LLM-Guided Software Programming | |
JP2815178B2 (ja) | コンパイラ装置 | |
JP2008071075A (ja) | プログラム検査装置、プログラム検査方法、及びプログラム検査プログラム | |
Lyle et al. | Using the unravel program slicing tool to evaluate high integrity software | |
Gilmore et al. | From SPA models to programs | |
Mazinanian et al. | CSSDev: Refactoring duplication in cascading style sheets | |
CN113807077A (zh) | 自然语言测试脚本解析处理方法、装置及电子设备 | |
JPH0736734A (ja) | アーギュメント値のチェック方法 | |
JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
CN114816349B (zh) | 一种自动化设备控制软件开发方法、系统和存储介质 | |
JPH03144832A (ja) | プリコンパイラ言語プログラムのシンボリックデバッグ装置 | |
JPS6365542A (ja) | デバツグ方式 | |
Elekes et al. | To Do or Not to Do: Semantics and Patterns for Do Activities in UML PSSM State Machines | |
Chen et al. | Neurosymbolic Repair of Test Flakiness | |
JPH05143393A (ja) | テストプログラム作成装置 | |
JPH01154256A (ja) | プログラムのエラー位置検出方法 | |
JP3167386B2 (ja) | プログラム自動並列化方法 | |
Cichelli et al. | Goal directed programming | |
Patnaik et al. | Implementation of CSP-S for description of distributed algorithms | |
JPH03209524A (ja) | 知識ベースの構築方式 | |
JPH05204705A (ja) | 未定義変数検出処理方法 | |
JPH02115951A (ja) | 高級言語プログラム保守デバッグ方式 | |
JPH04312130A (ja) | 言語処理プログラム | |
JPH02171938A (ja) | プログラム開発支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080814 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090814 Year of fee payment: 11 |
|
EXPY | Cancellation because of completion of term |