JPH0228838A - Ada言語コンパイラのネームサーチ方式 - Google Patents

Ada言語コンパイラのネームサーチ方式

Info

Publication number
JPH0228838A
JPH0228838A JP17969588A JP17969588A JPH0228838A JP H0228838 A JPH0228838 A JP H0228838A JP 17969588 A JP17969588 A JP 17969588A JP 17969588 A JP17969588 A JP 17969588A JP H0228838 A JPH0228838 A JP H0228838A
Authority
JP
Japan
Prior art keywords
declaration
invisible
identifier
package
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
JP17969588A
Other languages
English (en)
Inventor
Hiroshi Takeuchi
寛 竹内
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP17969588A priority Critical patent/JPH0228838A/ja
Publication of JPH0228838A publication Critical patent/JPH0228838A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はコンパイラのネームサーチ方式に関し、特にA
da言語コンパイラのuse節によって可視になる識別
子のネームサーチ方式に関するものである。
〔従来の技術〕
組み込み型計算機の為の高水準言語であるAdaの言語
仕様では、use節によって直接可視にできる宣言(こ
れを潜在的に可視な宣言という)は、use節に指定さ
れたパッケージ集合に含まれる各パッケージの可視部の
すぐ内側にある宣言であるが、同じ識別子を持つ潜在的
に可視な複数の宣言が為されている場合においては、そ
の宣言の中に列挙リテラル仕様とサブプログラム宣言の
いずれでもないものがあれば直接可視にならないと定め
ている。
そこで、Ada言語で記述されたプログラムが上記の言
語仕様の規定を満足しているか否かをAdaコンパイラ
において検査するため、従来は、成る識別子の参照がプ
ログラムに現れるたびに、use節に指定されたパッケ
ージの集合に含まれる各パッケージの可視部を宣言サー
チ手段を用いて逐次にサーチし、成るパッケージ内で対
応する1つの宣言が見つかっても、それだけではその宣
言が直接可視になるが否が不明な為、そのバ・ンケージ
集合に含まれる残りのパッケージに対して宣言サーチ手
段を用いたサーチを行って対応する宣言の存在の有無、
および存在した場合における上記言語仕様に照らした直
接可視性の判定を行っていた。
〔発明が解決しようとする課題〕
このように従来のAda言語コンパイラのネームサーチ
方式では、成る識別子の参照がプログラムに現れた場合
、use節に指定さ・れたパッケージ集合に含まれる成
るパッケージ内で対応する宣言が1つ見つかっても、そ
の宣言が直接可視になるか否かを検査するためにパッケ
ージ集合の他のパッケージに対しても処理を続けなけれ
ばならず、これがAda言語コンパイラの性能低下の一
要因となっていた。
本発明は、このような性能低下の要因を取り除いたAd
a言語コンパイラのネームサーチ方式を1(共すること
にある。
〔課題を解決するための手段〕
本発明は上記の目的を達成するために、例えば第1図に
示すように、Ada言語コンパイラ1に不可視情報ベー
ス6を接続し、Ada言語コンパイラ1のネームサーチ
手段2内に、Ada言語によって記述されたプログラム
のコンパイル単位が文脈節を持ち、その文脈節中にus
ewJを含むときに、そのu、se節に指定されたパッ
ケージ内で宣言された識別子をプログラムで参照した場
合に、その識別子に対する不可視情報7が不可視情報ペ
ニス7に存在するか否かを検査する不可視情報検査手段
4と、不可視情報がなく且つ宣言サーチ手段3による宣
言サーチの結果不可視であることが判明した場合に、そ
の識別子に対する不可視情報7を不可視情報ベース6に
登録する不可視情報登録手段5とを具備させている。
〔作用〕
本発明のAAa言語コンパイラのネームサーチ方式にお
いては、Ada言語によって記述されたプログラムのコ
ンパイル単位が文脈節を持ちその文脈節中にuse節を
含むときに、そのus、e節に指定されたパッケージ内
で宣言された識別子をプログラムで参照している場合、
先ず不可視情報検査手段4が、その識別子に対する不可
視情報7が不可視情報ベース6に存在するか否かを検査
し、存在すれば不可視と判定される。また、不可視情報
7がなく且つ宣言サーチの結果不可視であることが判明
した場合、不可視情報登録手段5が、その識別子に対す
る不可視情報7を不可視情報ベース6に登録し、以後の
同一識別子のネームサーチにおいて不可視情報検査手段
4で直ちに不可視と判定できるようにする。
〔実施例〕
次に、本発明の実施例について図面を参照して詳細に説
明する。
第2図は本発明の実施例の構成図である。この実施例で
は、A’da言語コンパイラ22は入力ソース21のコ
ンパイルを行うものであり、第1図の不可視情報ベース
6の機能を兼ね備えるプログラムライブラリ27に接続
されている。また、内部にネームサーチ手段23を有し
、このネームサーチ手段23は、宣言サーチ手段24.
不可視情報検査手段25および不可視情報登録手段26
を含んでいる。
第3図は第2図の人力ソース21の一部として与えられ
る入力ソース31の内容例を示す。この入力ソース31
は、パッケージP1〜Pnのn個の仕様を含む入力ソー
スである。パッケージP1の仕様32およびパッケージ
Pnの仕様34には、識別子Xの宣言33.35が含ま
れている。なお、他のパッケージP2〜Pn−1の仕様
は図示を省略して、いる。
第、4図は第3図に示すような入力ツース31が第2図
分Ada言語コ、ンパイラ22に入力ソース21として
与えられた場合に、Ada言語コンパイラ22によって
プログラムライブラリ27に作成される各パッケージ対
応の宣言情報の内容例を示す。同図において、42はパ
ッケージP1の宣言情報、44はパッケージPnの宣言
情報であり、他のパンケージの宣言情報は図示を省略し
ている。
パッケージP1の宣言情報42には、第3図の識別子X
の宣言33に基づいて作成された識別子Xの宣言テーブ
ル43があり、このテーブル43内に宣言の内容(この
内容によって、列挙リテラル仕様でもなくサブプログラ
ム宣言でもないことがわかるものである)と共に不可視
フラグ46が作成される。また、パッケージPnの宣言
情報44には、第3図の識別子Xの宣言35に基づいて
作成された識別子Xの宣言テーブル45があり、このテ
ーブル45内に宣言の内容(この内容によって列挙リテ
ラル仕様であることがわかるものである)と共に不可視
フラグ47が作成される。なお、入力ソース31を処理
してプログラムライブラリ27に各パッケージ対応の宣
言情報を作成した段階においては、各不可視フラグ46
.47は不可視でないことを示すOFF状態にされてい
る。
第5図は第2図の入力ソース21の一部として与えられ
る別の入力ソース51の内容例を示す。
この入力ソース51中には、use節53を含む文脈節
52と、識別子Xを含む文54.55とが存在する。
第6図は第2図の宣言サーチ手段24の処理例を示す流
れ図、第7図は第6図の処理65即ち文脈節のuse節
によるパッケージのネームサーチ処理の詳細な処理を示
す流れ図、第8図は第2図の不可視情報検査手段25の
処理例の流れ図、および第9図は第2図の不可視情報登
録手段26の処理例の流れ図である。以下、各図を参照
して本実施例の動作を説明する。
第2図のAda言語コンパイラ22に対しては、第3図
の入力ソース31.第5図の入力ソース51の順で入力
ソースが与えられる。
Ada言語コンパイラ22は、第3図の入力ソース31
が入力されると、プログラムライブラリ27内に第4図
に示した各パッケージ対応の宣言情報42.47を生成
する。この宣言情報42゜47は、前述したように各識
別子に対応する宣言テーブル43.45を有し、このテ
ーブル4345内で宣言の内容を示すものである。また
、全ての不可視フラグ46.47はOFF状態である。
次に、Ada言語コンパイラ22は、第5図の入力ソー
ス51が入力されると、以下に述べるような処理を逐次
実行することになる。
先ず、Ada言語コンパイラ22は、人力ソース51が
文脈節(文脈情報)52中にuse節53を持つことか
ら、このuse節53に指定されたパッケージの集合(
PI、’P2.・・・、Pnlを認識して記憶しておく
次に、入力ソース51中の識別子Xを参照する文54が
出現すると、この文54を解析するためにAda言語コ
ンパイラ22は、ネームサーチ手段23を起動して識別
子Xのネームサーチを行わせる。
ネームサーチ手段23は起動されると、先ず、宣言サー
チ手段24を起動する。
宣言サーチ手段24は起動されると、第6図に示すよう
に、先ず、use以外の宣言のネームサーチを行う(処
理61)。ここで、ソース51内にはXの宣言がないも
のとすると、処理62ではサーチ終了と判定されず、次
に内部のuSe簡によるパッケージ内のネームサーチを
行う(処理63)。しかし、ソース51内では手続きR
rc内にuse節を持たないので、処理64でもサーチ
終了と判定されない。そこで、処理65によって文脈節
のuse節によるパッケージのネームサーチを行う。
処理65の詳細を示す第7図を参照すると、文脈節のu
se節によるパッケージのネームサーチでは、先ず、パ
ッケージ集合が空か否かを処理71で判定する。当初、
パッケージ集合は(Pl。
P2.・・・、Pn)であって空でないので、処理72
に進み1つ目のパッケージP1を上記のパッケージ集合
から取り出す。次に、処理73により、プログラムライ
ブラリ27より第4図に示したパッケージP1の宣言情
報42を取得し、処理74により、その宣言情報42中
から識別子χに対応する宣言テーブル43を取得する。
そして、不可視情報検査手段25を起動する(処理75
)。なお、流れ図では図示を省略しているが、処理74
において識別子Xに対応する宣言テーブル43がなかっ
たときは直ちに処理71に戻るものである。
不可視情報検査手段25は起動されると、第8図に示す
ように、先ず、今回取得された識別子Xに対応する宣言
テーブル43中の不可視フラグ46がONか否かを判定
するが(処理81)、初期状態のままのOFFであるの
で、処理82に進む。
処理82では、今までに同一の識別子Xに対応する他の
宣言テーブルが取得されていたならばそれらの宣言テー
ブルと比較して言語仕様により直接可視になるか否かを
チエツクするが、今の場合他に得られた宣言テーブルは
存在しないので、処理83の判定結果は「いいえ」即ち
直接可視のままとなり、従って処理84により不可視で
ないことが呼び出し元の宣言サーチ手段24に返される
不可視でない旨が返却された宣言サーチ手段24では、
それが第7図の処理76で判別され、処理77に進む。
処理77では、今回のパッケージP1の宣言情報42中
に識別子Xに対応する他の宣言テーブルが存在するか否
かを判定し、存在していれば処理74に戻り、存在しな
ければ処理71に戻る。今、他の宣言テーブルが存在し
ないものとすると、制御は処理71に戻される。
処理71に戻った時点のパッケージ集合は(P2、・・
・、Pnlであり、空でないので、パッケージP1に対
して行われたと同様の処理がパッケージP2に対して行
われる。そして、このパッケージP2に対する処理でも
不可視であることが決定されないと、パッケージ集合の
次のパッケージに対し同様の処理が行われる。今、パッ
ケージPがらパッケージP n−1までに対応する宣言
情報中には識別子Xに対する宣言テーブルがなかったと
すると、上記と同様な処理がパッケージP n−1まで
繰り返され、パッケージ集合が(Pn)の状態になって
処理71に進むことになる。
パッケージ集合が(Pn)の状態の処理71では、宣言
サーチ手段24は、集合が空でないと判別し、処理72
によりパッケージPnをパッケージ集合から取り出す。
次に、処理73において、プログラムライブラリ27よ
り第4図に示したパッケージPnの宣言情報42を取得
し、処理74により、その宣言情報42中から識別子X
に対応する宣言テーブル45を取得する。そして、処理
75により不可視情報検査手段25を起動する。
不可視情報検査手段25は起動されると、第8図に示す
ように、今回取得された識別子Xに対応する宣言テーブ
ル45中の不可視フラグ47がONか否かを判定するが
(処理81)、初期状態のままのOFFであるので、処
理82に進む。そして、この処理82において、既に得
られた同一の識別子Xに対応する他の宣言テーブル43
と現在注目している宣言テーブル45とを比較して、言
語仕様により直接可視になるか否かをチエツクする。こ
のとき、宣言テーブル43は列挙リテラル仕様でもなく
サブプログラム宣言でもないことを示し、且つ宣言テー
ブル45は列挙リテラル仕様であることを示しており、
言語仕様により直接可視にならないパターンであるので
、処理85に進み、不可視であることが呼び出し元の宣
言サーチ手段24に返される。
不可視である旨が返却された宣言サーチ手段24では、
それが第7図の処理76で判別され、処理78に進み、
不可視情報登録手段26を起動する。
不可視情報登録手段26は起動されると、第9図に示す
処理91を行うことにより、プログラムライブラリ27
に格納されている各パッケージの宣言情報42.44に
含まれる識別子Xに対応する宣言テーブル43の不可視
フラグ46と宣言テーブル45の不可視フラグ47とを
ON状態にする。
以上により、第5図の入力ソース51の文54に現れた
識別子Xの文脈節のuse節によるパッケージのネーム
サーチが終了し、その結果は空つまり直接可視でないと
判定される。
次に、第2図のAda言語コンパイラ22が第5図の入
力ソース51内の文55を解析する為に識別子Xのネー
ムサーチを行う場合の動作を説明する。この場合、第6
図の処理61〜処理65第7図の処理71〜処理75.
第8図の処理81までは前述と同様に進む。そして処理
81において、不可視情報検査手段25によりパッケー
ジ集合の最初のパッケージP1の宣言情報42の識別子
Xに対応する宣言テーブル43の不可視フラグ46がO
Nであることが判別され、処理85により不可視である
旨が宣言サーチ手段24に返却されることになる。この
結果、識別子χの文脈節のuse節によるパンケージの
ネームサーチ結果が空と判定されることになる。
〔発明の効果〕
以上説明したように、本発明のAda言語コンパイラの
ネームサーチ方式においては、文脈節のuse節で指定
されたパッケージ内の宣言が直接可視にならない場合、
その宣言に対応する識別子のネームサーチが最初に行わ
れて直接可視にならないことが判明した時点で、不可視
情報ベース中に宣言が不可視である旨の不可視情報が登
録されるので、2度目以後の同一識別子のネームサーチ
においては、1つの宣言をサーチした時点で不可視情報
検査手段によって直ちに不可視であることが判定でき、
ネームサーチを高速化することができる。このため、A
da言語コンパイラの性能を向上することができる効果
がある。
【図面の簡単な説明】
第1図は本発明の構成図、 第2図は本発明の実施例の構成図、 第3図はパッケージの仕様を含む入力ソース例を示す回
、 第4図はプログラムライブラリの内容例を示す図、 第5図はuse節を含む文脈節、m割子Xを含む文等を
有する入力ソース例を示す図、第6図は宣言サーチ手段
の処理例の流れ図、第7図は処理65で行われる文脈節
のuse節によるパッケージのネームサーチの詳細を示
す流れ図、 第8図は不可視情報検査手段の処理例の流れ図および、 第9図は不可視情報登録手段の処理例の流れ図である。 図において、 1.22・・・Ada言語コンパイラ 2.23・・・ネームサーチ手段 3.24・・・宣言サーチ手段 4.25・・・不可視情報検査手段 5.26・・・不可視情報登録手段 6・・・不可視情報ヘース 7・・・不可視情報 21.31.51・・・入力ソース 27・・・プログラムライブラリ 32・・・パッケージP1の仕様 33.35・・・識別子χの宣言 34・・・パッケージPnの仕様 42・・・パッケージP1の宣言情報 43.45・・・識別子Xの宣言テーブル44・・・パ
ッケージPnの宣言情報 46.47・・・不可視フラグ 52・・・文脈節 53・・・use節 54.55・・・識別子Xを含む文

Claims (1)

  1. 【特許請求の範囲】 Ada言語コンパイラのネームサーチ方式において、 Ada言語によって記述されたプログラムのコンパイル
    単位が文脈節を持ち、その文脈節中にuse節を含むと
    きに、そのuse節に指定されたパッケージ内で宣言さ
    れた識別子をプログラムで参照した場合に、その識別子
    に対する不可視情報が不可視情報ベースに存在するか否
    かを検査する不可視情報検査手段と、不可視情報がなく
    且つ宣言サーチの結果不可視であることが判明した場合
    に、その識別子に対する不可視情報を前記不可視情報ベ
    ースに登録する不可視情報登録手段とを有することを特
    徴とするAda言語コンパイラのネームサーチ方式。
JP17969588A 1988-07-19 1988-07-19 Ada言語コンパイラのネームサーチ方式 Pending JPH0228838A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17969588A JPH0228838A (ja) 1988-07-19 1988-07-19 Ada言語コンパイラのネームサーチ方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17969588A JPH0228838A (ja) 1988-07-19 1988-07-19 Ada言語コンパイラのネームサーチ方式

Publications (1)

Publication Number Publication Date
JPH0228838A true JPH0228838A (ja) 1990-01-30

Family

ID=16070260

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17969588A Pending JPH0228838A (ja) 1988-07-19 1988-07-19 Ada言語コンパイラのネームサーチ方式

Country Status (1)

Country Link
JP (1) JPH0228838A (ja)

Similar Documents

Publication Publication Date Title
EP0688448B1 (en) Incremental build system
US5854932A (en) Compiler and method for avoiding unnecessary recompilation
EP1492032A2 (en) Intermediate language method and system for data source querying
US9164742B2 (en) Method and a system for searching for parts of a computer program which affects a given symbol
JPH0338735A (ja) 並列プログラム中のエラーを探す方法及び支援システム
KR20010108075A (ko) Dbms 절차들의 재귀적 경로 분석을 위한 시스템 및 방법
US5822589A (en) Method for locating errors in a computer program
US7711537B2 (en) Signals for simulation result viewing
US20030084041A1 (en) Programmer's dynamic spellchecker
JPH0228838A (ja) Ada言語コンパイラのネームサーチ方式
JPH08194611A (ja) プログラム修正による影響範囲を解析する装置
JPH1173328A (ja) コーディング規約チェックシステム
Griswold et al. Variant Translators for Version 8 of Icon
US20240184549A1 (en) System and method for indexing source code
JP2000003283A (ja) プログラム作成支援装置
JPH07281879A (ja) アプリケーションプログラム編集装置
JPH02278340A (ja) コンパイル方式
Booth Cpplib Internals
Albano et al. Galileo 97 Reference Manual. Version 2.0
KR0168929B1 (ko) 칠 전위처리기의 전위처리 방법
JPH0752391B2 (ja) 複数データベース記述を含む原始プログラムの翻訳方式
JP2902972B2 (ja) 論理シミュレータ及びハードウエア記述変換装置
JP2807854B2 (ja) Cobolプログラムのデータ構造展開方式
Marty Implementation Guidelines
Firth et al. The compilation of Ada