JP2728504B2 - 入力命令文検査装置 - Google Patents

入力命令文検査装置

Info

Publication number
JP2728504B2
JP2728504B2 JP1147065A JP14706589A JP2728504B2 JP 2728504 B2 JP2728504 B2 JP 2728504B2 JP 1147065 A JP1147065 A JP 1147065A JP 14706589 A JP14706589 A JP 14706589A JP 2728504 B2 JP2728504 B2 JP 2728504B2
Authority
JP
Japan
Prior art keywords
specifier
specified
input
check
specifiers
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 - Fee Related
Application number
JP1147065A
Other languages
English (en)
Other versions
JPH0312741A (ja
Inventor
稔 田中
直美 小泉
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP1147065A priority Critical patent/JP2728504B2/ja
Publication of JPH0312741A publication Critical patent/JPH0312741A/ja
Application granted granted Critical
Publication of JP2728504B2 publication Critical patent/JP2728504B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は,FORTRANその他の計算機言語で記述された原
始プログラムの構文解析にあたって,入出力文に現れる
指定子のエラーの有無を検査する入力命令文検査装置に
関する。
計算機言語における入出力文には,入出力文の動作を
規定する指定子が記述できる。例えば,FORTRAN言語にお
ける次の入出力文, WRITE(UNIT=6,FMT=10)A では,“UNIT=6"および“FMT=10"が指定子である。こ
のような指定子は,組み合わせが多数存在し,必ず記述
しなければならないものや,同時に記述してはだめなも
のなど,いろいろな制限がある。このような指定子の記
述エラーを,そのまま放置すると,実行時に異常発生の
原因になるため,通常,翻訳時における構文解析のとき
にエラーの有無を検査する。
このエラー検査の処理時間が長くなると,コンパイル
時間が長くなるため,効率よく迅速に検査できる手段が
必要になる。
〔従来の技術〕
例えば,計算機言語としてよく用いられているFORTRA
Nには,READ文,WRITE文,OPEN文,CLOSE文,…など,10種類
以上の入出力文がある。これらの入出力文に記述できる
指定子は,各入出力文ごとに限定されている。
そのため,入出力文の解析時に,記述されている指定
子のエラー検査を行うことが,従来から行われていた。
従来方式によるエラー検査は,例えば次のような検査で
あった。
(例1) 記述された指定子を解析するごとに,その入出力文に
記述可能か否かを判定する。その後,指定子どうしの排
他検査等に係る情報を,複数の変数に格納する。すべて
の指定子の解析後,再度参照して検査する。
例えば,次のようなREAD文の指定子を検査するとす
る。
READ(UNIT=5,FMT=*)I UNIT指定子は,READ文に指定可能か否かを判定す
る。指定可能であれば,第1の排他検査用変数にUNIT指
定子が指定された旨を設定する。
FMT指定子は,READ文に指定可能か否かを判定する。
指定可能であれば,第2の排他検査用変数にFMT指定子
が指定された旨を設定する。
第1の排他検査用変数の示すUNIT指定子の出現は,
他の指定子の出現と矛盾しないかを検査する。
第2の排他検査用変数の示すFMT指定子の出現は,
他の指定子の出現と矛盾しないかを検査する。
(例2) 記述された指定子を解析するごとに,その入出力文に
記述可能か否かを判定し,指定された指定子の情報を,
ビット情報としてテーブルに格納する。出現したすべて
の指定子の情報の設定後,各ビット情報のオン/オフが
正しいか否かを判定し,検査する。
例えば,「READ(UNIT=5,FMT=*)I」のREAD文に
おける指定子を検査するとき,次のように,検査する。
READ文にUNIT指定子が指定された旨を,ビット情報
に設定する。
READ文にFMT指定子が指定された旨を,ビット情報
に設定する。
例えばビット情報は,次のようになる。
これらの各ビット情報を参照して, ・オン(指定あり)なら,他の指定子の出現と矛盾しな
いかを検査する。
・オフ(指定なし)なら,指定もれでないかを検査す
る。
〔発明が解決しようとする課題〕
計算機言語における入出力文の指定子の種類が少ない
場合には,指定子のエラー検査をどのように行っても,
処理スピードに対する影響は,比較的小さい。
従来のFORTRANでは,入出力文の指定子は,30種類以下
であったため,処理効率の面から,あまり大きな問題に
なることはなかった。しかし,新しく検討されているFO
RTRANでは,機能拡張のため,入出力文に記述できる指
定子が,約60種類にも及ぶ。したがって,従来技術のよ
うに,1つ1つの指定子について,処理ロジックを中心と
した検査を行う方式では,指定子の情報が管理しきれ
ず,処理効率が低下するなどの問題が発生する。また,
指定子の追加や仕様の変更があると,検査の処理ロジッ
クを大幅に修正しなければならないという問題がある。
本発明は上記問題点の解決を図り,入出力文に出現し
た指定子のエラーを,効率よく検査できるようにすると
ともに,指定子の増加や変更に対して柔軟に対処できる
ようにすることを目的としている。
〔課題を解決するための手段〕
第1図は本発明の構成例を示す。
第1図において,10は計算機の高級言語で記述された
翻訳対象となる原始プログラム,11はCPUおよびメモリな
どからなる処理装置,12は原始プログラム10を翻訳して
目的プログラムを生成するコンパイラ,13は入出力文の
構文を解析する入出力文解析処理部,14は指定子エラー
の有無を検出する指定子エラー検査処理部,15は検査用
定数テーブル,16は解析中の入出力文に指定された指定
子を示す出現指定子情報を表す。
コンパイラ12は,原始プログラム10を入力し,まず構
文の解析を行う。入出力文については,入出力文解析処
理部13により,構文解析を行い,特に,入出力文で指定
された指定子については,指定子エラー検査処理部14に
より,エラーの有無を検査する。
本発明では,この検査のために,あらかじめ検査用定
数テーブル15が用意される。検査用定数テーブル15にお
ける入出力文対応の各エントリには,翻訳対象となる計
算機言語の入出力文における各指定子が所定のビット位
置に配置され,エラー検査の目的に合わせて各ビット値
の“0"または“1"が格納される。
指定子エラー検査処理部14は,翻訳時における入出力
文の解析処理において,解析中の入出力文における指定
子の指定有無情報を,検査用定数テーブル15のエントリ
における各指定子のビット配置位置に合わせた形でまと
め,それを出現指定子情報16として,この出現指定子情
報16と検査用定数テーブル15の該当エントリとの論理演
算を含む処理により,指定子の記述誤りを検査する処理
を行う。
〔作用〕
本発明では,指定子の指定有無の情報を,最小限の単
位(ビット)で表現し,エラー検査の目的,例えば各指
定子の出現可否の検査,排他検査,指定もれ検査等に合
わせ,各入出力文ごとの情報を,検査用定数テーブル15
に保持する。
そして,指定子エラー検査処理部14は,各エラー検査
ごとに,検査用定数テーブル15から必要な情報を取り出
し,解析中の入力文に指定された指定子の情報である出
現指定子情報16と比較する。この比較結果により,エラ
ーを検出する。
ほとんどの場合,1ビットごとに保持された各入出力文
の指定子の指定有無の情報をまとめて,個々の指定子の
種類を意識することなく,簡単な論理演算でエラーを検
出することができるので,指定子の種類が多いときで
も,効率的に処理することが可能である。
〔実施例〕
第2図は本発明の一実施例処理フロー,第3図は本発
明の実施例に係るエラー検査用のテーブル概要図,第4
図は本発明の一実施例による二重指定検査の例,第5図
は本発明の一実施例に係る出現可能検査用のテーブル詳
細図,第6図は本発明の一実施例による排他検査の例,
第7図は本発明の一実施例による指定もれ検査の例を示
す。
第1図に示すコンパイラ12の構文解析時における入出
力文の指定子のエラー検査は,例えば第2図に示す処理
〜のように行う。
原始プログラム10を入力して取り込む。
構文解析のために,ソースの1行を取り出す。
解析するソースがあるかどうかを調べ,すべて解析
し終わって,解析するソースがなくなったならば,構文
解析処理を終了し,次の意味解析(図示省略)などの処
理へ移る。
ソースは入出力文かを判定する。
ソースが入出力文でない場合,入出力文以外の解析
処理を行い,その後,処理へ戻る。
ソースが入出力文である場合には,制御情報並びの
中から,指定子を1個取り出す。
次に,取り出した指定子が,制御情報並びの最後の
指定子かどうかを判定し,最後でない場合には,各指定
子に対する検査のために,処理,処理を実行し,最
後であれば,全指定子に対する検査のために,処理,
処理を実行する。
取り出した指定子が,前と重複して指定されていな
いかどうかの検査を行う。
取り出した指定子について,出現可能検査を行う。
その後,処理へ戻る。
各指定子に対する検査が終了したならば,他の指定
子との関係で,指定不可能な指定子が記述されていない
かどうかの排他検査を行う。
また,必要な指定子の指定もれがないかを調べる指
定もれ検査を行う。なお,これらの検査では,後で詳し
く説明するが,第1図に示す検査用定数テーブル15を参
照する。検査終了後,処理へ戻り,次の1行につい
て,同様に処理を繰り返す。
本実施例で用いるテーブルの概要は,第3図に示すよ
うになっている。
第3図に示すエラー検査管理テーブル20は,エラー検
査の目的(出現可能検査,指定もれ検査,…)ごとに用
意される各検査指定子管理テーブル21に対するポインタ
を管理するテーブルである。
検査指定子管理テーブル21は,エラー検査の効率を考
慮して分けられた指定子を管理するテーブルであり,分
けられた指定子のグループごとに用意される各検査用定
数テーブル15−1,…をポイントとする。
例えば,1語が32ビットの計算機で,33個ないし64個の
指定子を処理する場合,指定子を2つのグループに分け
る必要がある。この分け方で,エラー検査の効率を考慮
することは,対象とする指定子をグループ分けするの
に,テーブルへのアクセス回数をできるだけ少なくする
ように考慮することを意味する。この効率化は,例えば
指定子の出現頻度によるグループ分けや,排他検査なら
排他関係にあるか否かなど検査対象によるグループ分け
を行うことなどにより,実現させることができる。
検査用定数テーブル15−1,…は,グループ分けされた
各入出力文ごとの指定子の指定有無を示す検査用の定数
を記憶するテーブルである。出現指定子情報16−1,…
は,検査する入出力文に指定された指定子のビット情報
であって,その各ビット情報の位置は,検査用定数テー
ブル・エントリにおける指定子のビット情報の位置に対
応している。
以下,新仕様のFORTRANの例について説明する。FORTR
ANには,入出力文として,10種類以上の文があるが,こ
れらの入出力文に指定できる指定子は,新仕様では約60
種類ある。
指定子のエラー検査の項目として,二重指定検査,出
現可能検査,排他検査,指定もれ検査などがあるが,以
下,この順に従って,検査の例を説明する。
(1)二重指定検査 例えば,次のような入出力文があったとする。
「READ(ERR=200,UNIT=3,UNIT=5)H」 ERRは,誤り指定子,UNITは,装置指定子である。二重
指定検査では,このUNIT指定子のように,同じ指定子が
2度以上記述されているエラーを検出する。
この検査では,各検査用の定数を保持する検査用定数
テーブル15等の1メンバと同じ形式の出現指定子情報を
用意し,ここに入出力文に出現したすべての指定子の情
報を格納していく。すなわち,第4図に示すように,出
現指定子情報16は,検査用定数テーブルの同様に1ビッ
トごとに1つの指定子の有無の情報を保持している。な
お,第4図の出現指定子16は,上記READ文における2番
目の指定子までを処理し,3番目の指定子をチェックする
前の状態である。
二重指定検査は,この出現指定子情報16と,現在解析
中の指定子の値30(3番目のUNIT指定子に対応する)と
の論理積(ビットAND)をとることによって行う。この
結果が0でなければ,現在解析中の指定子は,すでに出
現済みであることになる。また,この結果が0であれ
ば,現在出現した指定子は,初めて出現したとして,出
現指定子情報16に設定していく。
第4図の例では,同じ指定子が2度以上記述されてい
るため,2つ目のUNIT指定子の解析時の比較結果が0にな
らず,エラーが検出される。
(2)出現可能検査 例えば,次のような入出力文があったとする。
「READ(UNIT=5,FMT=100,ERR=200,END=999,FILE=
‘SOURCE')I」 ここで,FMTは書式指定子,ENDは終了指定子,ENDはファ
イル指定子である。
このREAD文では,FILE指定子の記述は,指定不可能に
なっているため,エラーである。出現可能検査では,こ
のような入出力文に指定不可能な指定子が記述された場
合のエラーを検出する。
新仕様のFORTRANでは,管理すべき指定子の個数が約6
0個あるため,指定子を検査の目的に合わせてグループ
分けし,これを管理する検査指定子管理テーブル21を作
成する。
第5図は,その1番目のグループの関連テーブルの詳
細を示している。この例では,1語が32ビットであるた
め,60個の指定子に対して,n=2でよく,検査用定数テ
ーブル15が出現可能検査用に2つ用意されることにな
る。
グループ分けにあたって,出現頻度の高低順に指定子
を分類しているが,例えば約60種類の指定子の大部分
は,INQUIRE文固有に指定できるものであるため,INQUIRE
文固有に指定できるものと,そうでないものとを分ける
ようにしてもよい。
検査用定数テーブル15では,指定可能であるものを
“1"(オン),指定不可能であるものを,“0"(オフ)
として値を設定する。
この検査用定数テーブル15の中から取り出した該当す
る入出力文(例ではREAD文)の値と,現在解析中の指定
子の情報の値と論理積(ビットAND)をとる。この結果
が0でなければ,現在解析中の指定子は,指定可能な指
定子であることになるので,出現指定子情報16に情報を
設定していく。また,この結果が0であれば,現在解析
中の指定子は,指定不可能な指定子であることになり、
誤りとなる。
上の例のREAD文では,FILE指定子を指定できないた
め,論理積による比較結果が0になり,エラーが検出さ
れる。
(3)排他検査 例えば,次のような入出力文があったとする。
「READ(UNIT=5,FMT=100,ERR=200,END=999,NULLS=
NULL)J」 TULLSはヌル指定子である。このREAD文では,NULLS指
定子は,指定できないため,エラーである。このよう
に,排他検査では,他の指定子との関係で,その入出力
文に指定不可能な指定子が記述された場合のエラーを検
出する。
指定子の排他検査を行うのは,FORTRANの入出力文で
は,一部に限定されるため,必要な入出力文に対して,
排他指定子用のテーブルを作成する。その形式は,前述
した検査用定数テーブル15と同様でよい。これには,指
定不可能であるものを“1",指定可能であるものを“0"
として,値を設定する。
第6図はその例を示している。この検査用定数テーブ
ル15の中から取り出した該当する入出力文(例では,書
式付き順番検査READ文)の値と,それまでに設定された
解析中の入出力文に指定されたすべての指定子の情報で
ある出現指定子情報16の値との論理積(ビットAND)を
とる。
この結果が0であれば,現在解析中の入出力文には,
指定可能な指定子しかないことになる。また,この結果
が0でなければ,現在解析中の入出力文に指定不可能な
指定子があることになり,誤りとなる。この例のREAD文
では,NULLS指定子は指定できないため,比較結果は0に
ならず,エラーが検出される。
(4)指定もれ検査 例えば,次のような入出力文があったとする。
「READ(FMT=100,ERR=200,END=999)K」 指定もれ検査では,このREAD文のように,その入出力
文に指定されなければならない指定子が記述されていな
い場合のエラーを検出する。
指定もれ検査に対しては,必須指定子のテーブルを作
成する。その形式は,前述した検査用定数テーブル15と
同様でよい。このテーブルには,指定が必須であるもの
は“1",その他を“0"として値を設定する。
例えば第7図に示すように,必須指定子の検査用定数
テーブル15の中から取り出した該当する入出力文(例で
はREAD文)の値と,それまでに設定された解析中の入出
力文に指定されたすべての指定子の情報である出現指定
子情報16の値との論理積(ビットAND)をとる。
この結果が0でなければ,現在解析中の入出力文には
指定もれの指定子はないことになる。また,この結果が
0であれば,現在解析中の入出力文には,指定もれの指
定子があることになり,誤りとなる。
ここで取り上げたREAD文の例では,UNIT指定子が指定
されていないため,比較結果は0になり,エラーが検出
される。
以上のように,出現指定子情報16をもとに,入出力文
における指定子のエラー検査を,すべてテーブルの値と
の論理演算による比較により行うため,各指定子に対し
て統一的な処理が可能になり,指定子の追加や仕様の変
更が行われても,ほとんどの場合,テーブルの値を変更
するだけで対処できる。FORTRANの例について説明した
が,もちろん本発明は,FORTRANに限らず,他の計算機言
語に対しても同様に適用することが可能である。
〔発明の効果〕
以上説明したように,本発明によれば,各指定子の指
定の有無を,それぞれビット位置が定められた1ビット
で管理し,それをまとめたものによる論理演算によっ
て,エラーを検出するので,従来に比べて,非常に効率
的なエラー検査ができるようになる。特に,出現頻度な
どを考慮した指定子のグループ分けによって,テーブル
を作成すれば,検査の効率がさらに向上することにな
る。
また,指定子の追加や仕様の変更に対して,柔軟に対
処できるようになる。
【図面の簡単な説明】
第1図は本発明の構成例, 第2図は本発明の一実施例処理フロー, 第3図は本発明の実施例に係るエラー検査用のテーブル
概要図, 第4図は本発明の一実施例による二重指定検査の例, 第5図は本発明の一実施例に係る出現可能検査用のテー
ブル詳細図, 第6図は本発明の一実施例による排他検査の例, 第7図は本発明の一実施例による指定もれ検査の例を示
す。 図中,10は原始プログラム,11は処理装置,12はコンパイ
ラ,13は入出力文解析処理部,14は指定子エラー検査処理
部,15は検査用定数テーブル,16は出現指定子情報を表
す。

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の指定子が指定可能な,入力された命
    令文の検査を行う入力命令文検査装置において, 前記入力された命令文中に指定されている指定子を順次
    取り出し,取り出した指定子に対応する予め定められた
    ビット位置に,該指定子が指定されている旨の情報を設
    定していくことにより生成されるビット列である出現指
    定子情報を設定する設定手段と, 前記設定した出現指定子情報のビット列と,指定しなけ
    ればならない指定子について各指定子に対応する予め定
    められたビット位置に該指定子を指定すべきことを示す
    情報を格納したビット列とで論理演算を行うことによ
    り,前記入力された命令文に指定しなければならない指
    定子が指定されていたか否かを判定する検査手段とを備
    えた ことを特徴とする入力命令文検査装置。
  2. 【請求項2】複数の指定子が指定可能な,入力された命
    令文の検査を行う入力命令文検査装置において, 前記入力された命令文中に指定されている指定子を順次
    取り出し,取り出した指定子に対応する予め定められた
    ビット位置に,該指定子が指定されている旨の情報を設
    定していくことにより生成されるビット列である出現指
    定子情報を設定する設定手段と, 前記設定した出現指定子情報のビット列と,指定しては
    ならない指定子について各指定子に対応する予め定めら
    れたビット位置に該指定子を指定してはならないことを
    示す情報を格納したビット列とで論理演算を行うことに
    より,前記入力された命令文に指定してはならない指定
    子が指定されていたか否かを判定する検査手段とを備え
    た ことを特徴とする入力命令文検査装置。
  3. 【請求項3】複数の指定子が指定可能な,入力された命
    令文の検査を行う入力命令文検査装置において, 前記入力された命令文中に指定されている指定子を順次
    取り出し,取り出した指定子に対応する予め定められた
    ビット位置に,該指定子が指定されている旨の情報を設
    定していくことにより生成されるビット列である出現指
    定子情報を設定する設定手段と, 前記設定手段で,命令文中に指定されている指定子に該
    当するビット位置に該指定子が指定されていることを示
    す情報を設定する前に,既に設定されている前記出現指
    定子情報のビット列と,設定しようとする指定子に対応
    するビット位置のみに,指定子が指定されることを示す
    情報を設定したビット列とで,論理演算を行うことで,
    前記入力された命令文に当該指定子が既に指定されてい
    たか否かを判定する検査手段とを備えた ことを特徴とする入力命令文検査装置。
JP1147065A 1989-06-09 1989-06-09 入力命令文検査装置 Expired - Fee Related JP2728504B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1147065A JP2728504B2 (ja) 1989-06-09 1989-06-09 入力命令文検査装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1147065A JP2728504B2 (ja) 1989-06-09 1989-06-09 入力命令文検査装置

Publications (2)

Publication Number Publication Date
JPH0312741A JPH0312741A (ja) 1991-01-21
JP2728504B2 true JP2728504B2 (ja) 1998-03-18

Family

ID=15421692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1147065A Expired - Fee Related JP2728504B2 (ja) 1989-06-09 1989-06-09 入力命令文検査装置

Country Status (1)

Country Link
JP (1) JP2728504B2 (ja)

Also Published As

Publication number Publication date
JPH0312741A (ja) 1991-01-21

Similar Documents

Publication Publication Date Title
US6367068B1 (en) Dynamic parsing
US7711685B1 (en) Method and system for an extensible macro language
Bondorf Automatic autoprojection of higher order recursive equations
US5758160A (en) Method and apparatus for building a software program using dependencies derived from software component interfaces
US7240340B2 (en) System and method for browse information parsing without compilation
US10839124B1 (en) Interactive compilation of software to a hardware language to satisfy formal verification constraints
JP2728504B2 (ja) 入力命令文検査装置
JPH1173328A (ja) コーディング規約チェックシステム
JPH05346332A (ja) 試験プログラム実行方法
US8769517B2 (en) Generating a common symbol table for symbols of independent applications
Andrzejak et al. Confguru-A system for fully automated debugging of configuration errors
JPH07146785A (ja) プログラム自動生成方法および装置
KR100309674B1 (ko) 실시간데이터베이스관리시스템의트랜잭션전처리방법
US20240184549A1 (en) System and method for indexing source code
JP3114199B2 (ja) 言語処理システムのリスト出力方式
JP2580336B2 (ja) 言語処理系における名前の属性検査処理方式
JP3167386B2 (ja) プログラム自動並列化方法
JPH0782472B2 (ja) コマンド解析処理装置
JPH1031584A (ja) ソフトウエアの検証自動化装置
CN117992183A (zh) 一种事件响应方法、系统、电子设备及存储介质
JPH03121531A (ja) ジョブ制御文処理方式
JPH1011276A (ja) プログラム移植方法
JPH0337735A (ja) 構造化プログラミングのチェック方式
JPH04248624A (ja) プログラム変換処理装置
JPH04270422A (ja) プリコンパイル処理方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees