JPS63273937A - 複数ハッシュテ−ブルによる名前検索処理方式 - Google Patents
複数ハッシュテ−ブルによる名前検索処理方式Info
- Publication number
- JPS63273937A JPS63273937A JP62110373A JP11037387A JPS63273937A JP S63273937 A JPS63273937 A JP S63273937A JP 62110373 A JP62110373 A JP 62110373A JP 11037387 A JP11037387 A JP 11037387A JP S63273937 A JPS63273937 A JP S63273937A
- Authority
- JP
- Japan
- Prior art keywords
- name
- block
- hash table
- global data
- local data
- 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
Links
- 238000003672 processing method Methods 0.000 claims description 17
- 230000007423 decrease Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 26
- 238000004458 analytical method Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はプログラミング言語の1訳処理方式に関し、特
にプログラム中に子供のプログラムを入れ子構造にして
記述可能なブロック構造をもちかつ名前の有効範囲属性
を宣言可能なプログラミング言語に対する名前の宣言と
参照との対応づけを行う名前検索処理方式に関する。
にプログラム中に子供のプログラムを入れ子構造にして
記述可能なブロック構造をもちかつ名前の有効範囲属性
を宣言可能なプログラミング言語に対する名前の宣言と
参照との対応づけを行う名前検索処理方式に関する。
従来、この種のプログラミング言語の名前検索処理方式
では、プログラミング言語の名前の宣言と参照との対応
づけ処理には、処理の高速化のために一般にハツシュ技
法が用いられている。
では、プログラミング言語の名前の宣言と参照との対応
づけ処理には、処理の高速化のために一般にハツシュ技
法が用いられている。
しかし、従来のプログラミング言語の名前検索処理方式
は、ハツシュ技法を用いているものの、プログラミング
言語がプログラムを入れ子構造にして記述可能なブロッ
ク構造をもちかつ各プログラムのブロック内で宣言した
名前について、■ 宣言したブロック内でのみ参照可能
な名前(以下、この種の名前をブロックにローカルな名
前という意味でローカルデータと呼ぶ)、■ 宣言した
ブロック内およびそのブロックに直接的および間接的に
含まれるブロック内で参照可能な名前(以下゛、この種
の名前を関連するブロック間にグローバルな名前という
意味でグローバルデータと呼ぶ) のように、宣言と参照との有効範囲属性を利用者により
プログラム上で指定可能であったとしても、第2図に示
すように、原始プログラム10全体に対して単一のハツ
シュテーブルを保持して名前テーブルを検索する方式(
以下、単一ハツシュテーブル方式と呼ぶ)が一般的であ
った。
は、ハツシュ技法を用いているものの、プログラミング
言語がプログラムを入れ子構造にして記述可能なブロッ
ク構造をもちかつ各プログラムのブロック内で宣言した
名前について、■ 宣言したブロック内でのみ参照可能
な名前(以下、この種の名前をブロックにローカルな名
前という意味でローカルデータと呼ぶ)、■ 宣言した
ブロック内およびそのブロックに直接的および間接的に
含まれるブロック内で参照可能な名前(以下゛、この種
の名前を関連するブロック間にグローバルな名前という
意味でグローバルデータと呼ぶ) のように、宣言と参照との有効範囲属性を利用者により
プログラム上で指定可能であったとしても、第2図に示
すように、原始プログラム10全体に対して単一のハツ
シュテーブルを保持して名前テーブルを検索する方式(
以下、単一ハツシュテーブル方式と呼ぶ)が一般的であ
った。
上述した従来の単一ハツシュテーブル方式では、すべて
のブロックのすべての名前テーブルを単一のハツシュテ
ーブルに同じレベルでチェーンづけしているので、名前
の宣言と参照との対応づけ処理のための名前テーブルの
検索対象範囲が広いという欠点がある。
のブロックのすべての名前テーブルを単一のハツシュテ
ーブルに同じレベルでチェーンづけしているので、名前
の宣言と参照との対応づけ処理のための名前テーブルの
検索対象範囲が広いという欠点がある。
また、名前テーブルに名前が宣言されたブロックの入れ
子構造に関する情報および名前がローカルデータかグロ
ーバルデータかの区別を示す情報を保持して、名前の参
照に対しては参照時にこれらの情報を検査することによ
り参照の可否を決定しなければならないので、名前テー
ブルの検索処理に時間がかかるという欠点がある。
子構造に関する情報および名前がローカルデータかグロ
ーバルデータかの区別を示す情報を保持して、名前の参
照に対しては参照時にこれらの情報を検査することによ
り参照の可否を決定しなければならないので、名前テー
ブルの検索処理に時間がかかるという欠点がある。
本発明の目的は、上述の点に鑑み、ブロックごとにロー
カルデータ用ハツシュテーブルおよびグローバルデータ
用ハツシュテーブルを保持することにより、名前の宣言
と参照との対応づけ処理における名前テーブルの検索対
象範囲を限定でき処理の高速化を図ることができるよう
にした複数ハツシュテーブルによる名前検索処理方式を
提供することにある。
カルデータ用ハツシュテーブルおよびグローバルデータ
用ハツシュテーブルを保持することにより、名前の宣言
と参照との対応づけ処理における名前テーブルの検索対
象範囲を限定でき処理の高速化を図ることができるよう
にした複数ハツシュテーブルによる名前検索処理方式を
提供することにある。
本発明の複数ハツシュテーブルによる名前検索処理方式
は、プログラムの中に子供のプログラムを入れ子構造に
して記述可能なブロック構造をもちかつ各プログラムの
ブロック内での名前の宣言と参照とに対して名前が宣言
されたブロック内でのみ参照可能な名前であるローカル
データと名前が宣言されたブロックおよびそのブロック
に直接的および間接的に含まれるブロック内で参照可能
な名前であるグローバルデータとの2種類の有効範囲属
性を有するプログラミング言語に対する翻訳処理方式に
おいて、ブロックの入れ子のレベルが増加するごとにい
ままで処理してきたブロックに対応するローカルデータ
用ハツシュテーブルおよびグローバルデータ用ハツシュ
テーブルをハツシュテーブルスタックにプッシュダウン
し新しいブロックに対応するローカルデータ用ハツシュ
テーブルを空状態にして作成するとともにいままで処理
してきたブロックに対応するグローバルデータ用ハツシ
ュテーブルを複写して新しいプロックに対応するグロー
バルデータ用ハツシュテーブルを作成するハッシュテー
ブルプソシュダウン手段と、新しいブロック内での名前
の宣言に対して名前がローカルデータであるかグローバ
ルデータであるかの区別に応じて名前テーブルを新しい
ブロックに対応するローカルデータ用ハツシュテーブル
またはグローバルデータ用ハツシュテーブルからチェー
ンづけする名前テーブル登録手段と、新しいブロック内
での名前の参照に対してまず新しいブロックに対応する
ローカルデータ用ハツシュテーブルからチェーンづけさ
れた名前テーブルを検索し該当する名前テーブルがなけ
れば新しいブロックに対応するグローバルデータ用ハツ
シュテーブルからチェーンづけされた名前テーブルを検
索して対応づける名前テーブル検索手段と、ブロックの
入れ子のレベルが減少するごとにハツシュテーブルスタ
ックをポップアップしいままで処理してきたブロックを
直接的に含むブロックに対応するローカルデータ用ハツ
シュテーブルおよびグローバルデータ用ハツシュテーブ
ルを有効にするハツシュテーブルポツプアップ手段とを
有する。
は、プログラムの中に子供のプログラムを入れ子構造に
して記述可能なブロック構造をもちかつ各プログラムの
ブロック内での名前の宣言と参照とに対して名前が宣言
されたブロック内でのみ参照可能な名前であるローカル
データと名前が宣言されたブロックおよびそのブロック
に直接的および間接的に含まれるブロック内で参照可能
な名前であるグローバルデータとの2種類の有効範囲属
性を有するプログラミング言語に対する翻訳処理方式に
おいて、ブロックの入れ子のレベルが増加するごとにい
ままで処理してきたブロックに対応するローカルデータ
用ハツシュテーブルおよびグローバルデータ用ハツシュ
テーブルをハツシュテーブルスタックにプッシュダウン
し新しいブロックに対応するローカルデータ用ハツシュ
テーブルを空状態にして作成するとともにいままで処理
してきたブロックに対応するグローバルデータ用ハツシ
ュテーブルを複写して新しいプロックに対応するグロー
バルデータ用ハツシュテーブルを作成するハッシュテー
ブルプソシュダウン手段と、新しいブロック内での名前
の宣言に対して名前がローカルデータであるかグローバ
ルデータであるかの区別に応じて名前テーブルを新しい
ブロックに対応するローカルデータ用ハツシュテーブル
またはグローバルデータ用ハツシュテーブルからチェー
ンづけする名前テーブル登録手段と、新しいブロック内
での名前の参照に対してまず新しいブロックに対応する
ローカルデータ用ハツシュテーブルからチェーンづけさ
れた名前テーブルを検索し該当する名前テーブルがなけ
れば新しいブロックに対応するグローバルデータ用ハツ
シュテーブルからチェーンづけされた名前テーブルを検
索して対応づける名前テーブル検索手段と、ブロックの
入れ子のレベルが減少するごとにハツシュテーブルスタ
ックをポップアップしいままで処理してきたブロックを
直接的に含むブロックに対応するローカルデータ用ハツ
シュテーブルおよびグローバルデータ用ハツシュテーブ
ルを有効にするハツシュテーブルポツプアップ手段とを
有する。
本発明の複数ハツシュテーブルによる名前検索処理方式
では、ハッシュテーブルプンシュダウン手段がブロック
の入れ子のレベルが増加するごとにいままで処理してき
たブロックに対応するローカルデータ用ハツシュテーブ
ルおよびグローバルデータ用ハツシュテーブルをハツシ
ュテーブルスタックにプッシュダウンし新しいブロック
に対応するローカルデータ用ハシシュテーブルを空状態
にして作成するとともにいままで処理してきたブロック
に対応するグローバルデータ用ハツシュテーブルを複写
して新しいブロックに対応するグローバルデータ用ハツ
シュテーブルを作成し、名前テーブル登録手段が新しい
ブロック内での名前の宣言に対して名前がローカルデー
タであるかグローバルデータであるかの区別に応じて名
前テーブルを新しいブロックに対応するローカルデータ
用 ゛ハツシュテーブルまたはグローバルデータ用ハフ
シュテーブルからチェーンづけし、名前テーブル検索手
段が新しいブロック内での名前の参照に対してまず新し
いブロックに対応するローカルデータ用ハシシュテーブ
ルからチェーンづけされた名前テーブルを検索し該当す
る名前テーブルがなければ新しいブロックに対応するグ
ローバルデータ用ハツシュテーブルからチェーンづけさ
れた名前テーブルを検索して対応づけ、ハツシュテーブ
ルポツプアップ手段がブロックの入れ子のレベルが減少
するごとにハツシュテーブルスタックをポツプアップし
いままで処理してきたブロックを直接的に含むブロック
に対応するローカルデータ用ハシシュテーブルおよびグ
ローバルデータ用ハツシュテーブルを有効にする。
では、ハッシュテーブルプンシュダウン手段がブロック
の入れ子のレベルが増加するごとにいままで処理してき
たブロックに対応するローカルデータ用ハツシュテーブ
ルおよびグローバルデータ用ハツシュテーブルをハツシ
ュテーブルスタックにプッシュダウンし新しいブロック
に対応するローカルデータ用ハシシュテーブルを空状態
にして作成するとともにいままで処理してきたブロック
に対応するグローバルデータ用ハツシュテーブルを複写
して新しいブロックに対応するグローバルデータ用ハツ
シュテーブルを作成し、名前テーブル登録手段が新しい
ブロック内での名前の宣言に対して名前がローカルデー
タであるかグローバルデータであるかの区別に応じて名
前テーブルを新しいブロックに対応するローカルデータ
用 ゛ハツシュテーブルまたはグローバルデータ用ハフ
シュテーブルからチェーンづけし、名前テーブル検索手
段が新しいブロック内での名前の参照に対してまず新し
いブロックに対応するローカルデータ用ハシシュテーブ
ルからチェーンづけされた名前テーブルを検索し該当す
る名前テーブルがなければ新しいブロックに対応するグ
ローバルデータ用ハツシュテーブルからチェーンづけさ
れた名前テーブルを検索して対応づけ、ハツシュテーブ
ルポツプアップ手段がブロックの入れ子のレベルが減少
するごとにハツシュテーブルスタックをポツプアップし
いままで処理してきたブロックを直接的に含むブロック
に対応するローカルデータ用ハシシュテーブルおよびグ
ローバルデータ用ハツシュテーブルを有効にする。
次に、本発明について図面を参照して詳細に説明する。
第1図は、本発明の一実施例の全体構成を示すブロック
図である0本実施例の複数ハツシュテーブルによる名前
検索処理方式は、原始プログラムlOと、翻訳ルーチン
20と、ハツシュテーブル群40と、ハツシュテーブル
スタック50と、名前テーブル群60とから構成されて
いる。
図である0本実施例の複数ハツシュテーブルによる名前
検索処理方式は、原始プログラムlOと、翻訳ルーチン
20と、ハツシュテーブル群40と、ハツシュテーブル
スタック50と、名前テーブル群60とから構成されて
いる。
原始プログラム10は、プログラムの中に子供のプログ
ラムを入れ子構造にして記述可能なブロック構造をもち
かつ各プログラムのブロック内での名前の宣言と参照と
に対してローカルデータとグローバルデータとの2種類
の有効範囲属性を指定可能なプログラミング言語によっ
て記述されている。この原始プログラムlOは、例えば
第3図に示すように、ブロックAllにブロックB12
およびブロック014が含まれ、ブロックB12にさら
にブロックC13が含まれた入れ子構造を有している。
ラムを入れ子構造にして記述可能なブロック構造をもち
かつ各プログラムのブロック内での名前の宣言と参照と
に対してローカルデータとグローバルデータとの2種類
の有効範囲属性を指定可能なプログラミング言語によっ
て記述されている。この原始プログラムlOは、例えば
第3図に示すように、ブロックAllにブロックB12
およびブロック014が含まれ、ブロックB12にさら
にブロックC13が含まれた入れ子構造を有している。
ブロックAllは宣言部分71および手続き部分75を
有し、ブロックB12は宣言部分72および手続き部分
76を有し、ブロックCI3は宣言部分73および手続
き部分77を有し、ブロックD14は宣言部分74およ
び手続き部分78を有している。
有し、ブロックB12は宣言部分72および手続き部分
76を有し、ブロックCI3は宣言部分73および手続
き部分77を有し、ブロックD14は宣言部分74およ
び手続き部分78を有している。
翻訳ルーチン20は、原始プログラム10を記述するプ
ログラミング言語の構文上および意味上の正当性を検査
する構文/意味解析処理部3oを含んでいる。
ログラミング言語の構文上および意味上の正当性を検査
する構文/意味解析処理部3oを含んでいる。
構文/意味解析処理部30は、ハッシュテーブルプッシ
ュダウン手段31と、名前テーブル登録手段32と、名
前テーブル検索手段33と、ハツシュテーブルポツプア
ップ手段34とを含んで構成されている。
ュダウン手段31と、名前テーブル登録手段32と、名
前テーブル検索手段33と、ハツシュテーブルポツプア
ップ手段34とを含んで構成されている。
ハッシュテーブルプッシュダウン手段31は、ブロック
の入れ子のレベルが増加するごとにいままで処理してき
たブロックに対応するローカルデータ用ハツシュテーブ
ルおよびグローバルデータ用ハツシュテーブルをハツシ
ュテーブルスタック50にプッシュダウンし、新しいブ
ロックに対応するローカルデータ用ハフシュテーブルお
よびグローバルデータ用ハツシュテーブルの原形を作成
する処理を行う。
の入れ子のレベルが増加するごとにいままで処理してき
たブロックに対応するローカルデータ用ハツシュテーブ
ルおよびグローバルデータ用ハツシュテーブルをハツシ
ュテーブルスタック50にプッシュダウンし、新しいブ
ロックに対応するローカルデータ用ハフシュテーブルお
よびグローバルデータ用ハツシュテーブルの原形を作成
する処理を行う。
ローカルデータ用ハツシュテーブルの原形は、新しいブ
ロック内のローカルデータの参照に対してそのブロック
内のローカルデータのみを参照可能とするために、その
ブロックに対応するローカルデータ用ハツシュテーブル
をすべて空の状態にすることによって作成される。
ロック内のローカルデータの参照に対してそのブロック
内のローカルデータのみを参照可能とするために、その
ブロックに対応するローカルデータ用ハツシュテーブル
をすべて空の状態にすることによって作成される。
また、グローバル用ハツシュテーブルの原形は、新しい
ブロックのグローバルデータの参照に対してそのブロッ
ク内のグローバルデータとそのブロックを直接的および
間接的に含むブロック(第3図に示す原始プログラムl
Oの一例では、ブロックB12についてはブロックAl
lが、ブロックC13についてはブロックB12および
ブロックAllが、ブロックD14についてはブロック
Allがそのブロックである)のグローバルデータとを
すべて参照可能とするために、いままで処理してきたブ
ロック(すなわち、新しいブロックを直接的に含むブロ
ック)のグローバルデータ用ハツシュテーブルをそのま
ま複写することによって作成される。ただし、一番外側
のブロック(第3図に示す原始プログラム10の一例で
は、ブロックA 11)に対しては、いままで処理して
きたブロックに対応するグローバルデータ用ハツシュテ
ーブルが存在しないので、グローバルデータ用ハツシュ
テーブルの複写処理はできず、グローバルデータ用ハツ
シュテーブルをすべて空の状態にすることによって作成
される。
ブロックのグローバルデータの参照に対してそのブロッ
ク内のグローバルデータとそのブロックを直接的および
間接的に含むブロック(第3図に示す原始プログラムl
Oの一例では、ブロックB12についてはブロックAl
lが、ブロックC13についてはブロックB12および
ブロックAllが、ブロックD14についてはブロック
Allがそのブロックである)のグローバルデータとを
すべて参照可能とするために、いままで処理してきたブ
ロック(すなわち、新しいブロックを直接的に含むブロ
ック)のグローバルデータ用ハツシュテーブルをそのま
ま複写することによって作成される。ただし、一番外側
のブロック(第3図に示す原始プログラム10の一例で
は、ブロックA 11)に対しては、いままで処理して
きたブロックに対応するグローバルデータ用ハツシュテ
ーブルが存在しないので、グローバルデータ用ハツシュ
テーブルの複写処理はできず、グローバルデータ用ハツ
シュテーブルをすべて空の状態にすることによって作成
される。
名前テーブル登録手段32は、ハフシュテーブルプッシ
ュダウン手段31による新しいブロックに対応するロー
カルデータ用ハツシュテーブルおよびグローバルデータ
用ハフシュテーブルの作成処理が完了した後に、新しい
ブロックの名前の宣言部分を取り出して宣言されている
名前の名前テーブルを名前テーブル用領域に割り付け、
宣言されている名前がローカルデータであるかグローバ
ルデータであるかの区別に応じてローカルデータ用ハツ
シュテーブルまたはグローバルデータ用ハツシュテーブ
ルにチェーンでつないで名前テーブルの登録処理を行う
。
ュダウン手段31による新しいブロックに対応するロー
カルデータ用ハツシュテーブルおよびグローバルデータ
用ハフシュテーブルの作成処理が完了した後に、新しい
ブロックの名前の宣言部分を取り出して宣言されている
名前の名前テーブルを名前テーブル用領域に割り付け、
宣言されている名前がローカルデータであるかグローバ
ルデータであるかの区別に応じてローカルデータ用ハツ
シュテーブルまたはグローバルデータ用ハツシュテーブ
ルにチェーンでつないで名前テーブルの登録処理を行う
。
名前テーブルをローカルデータ用ハツシュテーブルまた
はグローバルデータ用ハツシュテーブルにチェーンでつ
なぐ処理では、同一ハツシユ値をもつ名前の名前テーブ
ルは、原始プログラム10上で物理的に後に出現する名
前の名前テーブルをローカルデータ用ハツシュテーブル
またはグローバルデータ用ハツシュテーブルからのチェ
ーンの最初の位置につなぐようにする。
はグローバルデータ用ハツシュテーブルにチェーンでつ
なぐ処理では、同一ハツシユ値をもつ名前の名前テーブ
ルは、原始プログラム10上で物理的に後に出現する名
前の名前テーブルをローカルデータ用ハツシュテーブル
またはグローバルデータ用ハツシュテーブルからのチェ
ーンの最初の位置につなぐようにする。
ここで、グローバルデータ用名前テーブルのチェーンづ
けを説明するために、第4図を参照すると、ブロックX
の宣言部分でグローバルデータとして宣言された同一ハ
ツシユ値をもつ名前XI。
けを説明するために、第4図を参照すると、ブロックX
の宣言部分でグローバルデータとして宣言された同一ハ
ツシユ値をもつ名前XI。
X2およびX3の名前テーブルXI、X2およびX3(
名前テーブルには名前と同じ符号を村上で示す、以下同
様)は、ブロックXに対応するグローバルデータ用ハツ
シュテーブルからX3→X2→X1の順序に同一ハツシ
ュ値チェーンとしてつながれる。さらに、ブロックXに
含まれるブロックYの宣言部分でグローバルデータとし
て宣言された同一ハツシュ値をもつ名前YlおよびY2
(名前XI、X2およびX3と同一ハツシュ値をもつ)
は、ブロックYに対応するグローバルデータ用ハツシュ
テーブルからY2→Y1→X3−X2→XIの順序に同
一ハッシュ値チヱインとしてつながれる。
名前テーブルには名前と同じ符号を村上で示す、以下同
様)は、ブロックXに対応するグローバルデータ用ハツ
シュテーブルからX3→X2→X1の順序に同一ハツシ
ュ値チェーンとしてつながれる。さらに、ブロックXに
含まれるブロックYの宣言部分でグローバルデータとし
て宣言された同一ハツシュ値をもつ名前YlおよびY2
(名前XI、X2およびX3と同一ハツシュ値をもつ)
は、ブロックYに対応するグローバルデータ用ハツシュ
テーブルからY2→Y1→X3−X2→XIの順序に同
一ハッシュ値チヱインとしてつながれる。
名前テーブル検索手段33は、名前テーブル登録手段3
2による名前テーブルの登録処理が完了した後に、現在
処理中のブロックの手続き部分での名前の参照に対して
、参照された名前の名前テーブルを対応するローカルデ
ータ用ハツシュテーブルまたはグローバルデータ用ハツ
シュテーブルを用いて検索して対応づけする処理を行う
。
2による名前テーブルの登録処理が完了した後に、現在
処理中のブロックの手続き部分での名前の参照に対して
、参照された名前の名前テーブルを対応するローカルデ
ータ用ハツシュテーブルまたはグローバルデータ用ハツ
シュテーブルを用いて検索して対応づけする処理を行う
。
詳しくは、名前テーブル検索手段33は、名前の参照に
対して、 ■ 現在処理中のブロックに対応するローカルデータ用
ハツシュテーブルからチェーンをたどって名前テーブル
を検索し、該当する名前の名前テーブルがあればその名
前テーブルを用いる、■ 現在処理中のブロックに対応
するローカルデータ用ハツシュテーブルからチェーンを
たどって名前テーブルを検索しても該当する名前の名前
テーブルが検索されない場合には、現在処理中のブロッ
クに対応するグローバルデータ用ハツシュテーブルから
チェーンをたどって名前テーブルを検索し、該当する名
前の名前テーブルがあればその名前テーブルを用いる、 ■ 現在処理中のブロックに対応するグローバルデータ
用ハフシュテーブルからチェーンをたどって名前テーブ
ルを検索しても該当する名前の名前テーブルが検索され
ない場合には、名前を未定義エラーとする。
対して、 ■ 現在処理中のブロックに対応するローカルデータ用
ハツシュテーブルからチェーンをたどって名前テーブル
を検索し、該当する名前の名前テーブルがあればその名
前テーブルを用いる、■ 現在処理中のブロックに対応
するローカルデータ用ハツシュテーブルからチェーンを
たどって名前テーブルを検索しても該当する名前の名前
テーブルが検索されない場合には、現在処理中のブロッ
クに対応するグローバルデータ用ハツシュテーブルから
チェーンをたどって名前テーブルを検索し、該当する名
前の名前テーブルがあればその名前テーブルを用いる、 ■ 現在処理中のブロックに対応するグローバルデータ
用ハフシュテーブルからチェーンをたどって名前テーブ
ルを検索しても該当する名前の名前テーブルが検索され
ない場合には、名前を未定義エラーとする。
ハッシュテーブルボフブアップ手段34は、ブロックの
処理が終了するごとにハツシュテーブルスタック50を
1段ポツプアップして、いままで処理してきたブロック
を直接的に含むブロックに対応するローカルデータ用ハ
ツシュテーブルおよびグローバルデータ用ハツシュテー
ブルを有効にする処理を行う。
処理が終了するごとにハツシュテーブルスタック50を
1段ポツプアップして、いままで処理してきたブロック
を直接的に含むブロックに対応するローカルデータ用ハ
ツシュテーブルおよびグローバルデータ用ハツシュテー
ブルを有効にする処理を行う。
いままで処理してきたブロックを直接的に含むブロック
に対応するローカルデータ用ハツシュテーブルおよびグ
ローバルデータ用ハツシュテーブルを有効にするために
は、単にハツシュテーブルスタック50からローカルデ
ータ用ハツシュテーブルおよびグローバルデータ用ハツ
シュテーブルを1段ポツプアップするだけでよい。
に対応するローカルデータ用ハツシュテーブルおよびグ
ローバルデータ用ハツシュテーブルを有効にするために
は、単にハツシュテーブルスタック50からローカルデ
ータ用ハツシュテーブルおよびグローバルデータ用ハツ
シュテーブルを1段ポツプアップするだけでよい。
例えば、第4図に示した例では、ブロックYが終了した
際にブロックXの状態にするには、名前テーブルY1お
よびY2をチェーンから外す必要があるが、そのために
はブロックYに対応するローカルデータ用ハツシュテー
ブルおよびグローバルデータ用ハツシュテーブルをハツ
シュテーブルスタック50からポツプアップするだけで
足りる。
際にブロックXの状態にするには、名前テーブルY1お
よびY2をチェーンから外す必要があるが、そのために
はブロックYに対応するローカルデータ用ハツシュテー
ブルおよびグローバルデータ用ハツシュテーブルをハツ
シュテーブルスタック50からポツプアップするだけで
足りる。
パンシュテーブル群40には、ブロックAllに対応し
て作成されたローカルデータ用ハツシュテーブル41お
よびグローバルデータ用ハツシュテーブル45.ブロッ
クBllに対応して作成されたローカルデータ用ハツシ
ュテーブル42およびグローバルデータ用ハシシュテー
ブル46.ブロックC13に対応して作成されたローカ
ルデータ用ハツシュテーブル43およびグローバルデー
タ用ハツシュテーブル47.ブロックD14に対応して
作成されたローカルデータ用ハツシュテーブル44およ
びグローバルデータ用ハンシュテーブル48等が含まれ
るようになっている。
て作成されたローカルデータ用ハツシュテーブル41お
よびグローバルデータ用ハツシュテーブル45.ブロッ
クBllに対応して作成されたローカルデータ用ハツシ
ュテーブル42およびグローバルデータ用ハシシュテー
ブル46.ブロックC13に対応して作成されたローカ
ルデータ用ハツシュテーブル43およびグローバルデー
タ用ハツシュテーブル47.ブロックD14に対応して
作成されたローカルデータ用ハツシュテーブル44およ
びグローバルデータ用ハンシュテーブル48等が含まれ
るようになっている。
ハツシュテーブルスタック50は、ローカルデータ用ハ
ツシュテーブルおよびグローバルデータ用ハツシュテー
ブルをスタックする手段である。
ツシュテーブルおよびグローバルデータ用ハツシュテー
ブルをスタックする手段である。
名前テーブル群60には、ブロックAllの宣言部分7
1でローカルデータとして宣言された名前の名前テーブ
ル群からなるローカルデータ用名前テーブル61および
グローバルデータとして宣言された名前の名前テーブル
群からなるグローバルデータ用名前テーブル65.ブロ
ックB12の宣言部分72でローカルデータとして宣言
された名前の名前テーブル群からなるローカルデータ用
名前テーブル62およびグローバルデータとして宣言さ
れた名前の名前テーブル群からなるグローバルデータ用
名前テーブル66、ブロックC13の宣言部分73でロ
ーカルデータとして宣言された名前の名前テーブル群か
らなるローカルデータ用名前テーブル63およびグロー
バルデータとして宣言された名前の名前テーブル群から
なるグローバルデータ用名前テーブル67、ブロックD
14の宣言部分74でローカルデータとして宣言された
名前の名前テーブル群からなるローカルデータ用名前テ
ーブル64およびグローバルデータとして宣言された名
前の名前テーブル群からなるグローバルデータ用名前テ
ーブル68等が含まれるようになっている。
1でローカルデータとして宣言された名前の名前テーブ
ル群からなるローカルデータ用名前テーブル61および
グローバルデータとして宣言された名前の名前テーブル
群からなるグローバルデータ用名前テーブル65.ブロ
ックB12の宣言部分72でローカルデータとして宣言
された名前の名前テーブル群からなるローカルデータ用
名前テーブル62およびグローバルデータとして宣言さ
れた名前の名前テーブル群からなるグローバルデータ用
名前テーブル66、ブロックC13の宣言部分73でロ
ーカルデータとして宣言された名前の名前テーブル群か
らなるローカルデータ用名前テーブル63およびグロー
バルデータとして宣言された名前の名前テーブル群から
なるグローバルデータ用名前テーブル67、ブロックD
14の宣言部分74でローカルデータとして宣言された
名前の名前テーブル群からなるローカルデータ用名前テ
ーブル64およびグローバルデータとして宣言された名
前の名前テーブル群からなるグローバルデータ用名前テ
ーブル68等が含まれるようになっている。
次に、このように構成された本実施例の複数ハフシュテ
ーブルによる名前検索処理方式の動作について説明する
。なお、ここでは、第3図に例示した原始プログラム1
0の翻訳処理を行う場合について第5図+al〜+d+
を参照しながら説明する。
ーブルによる名前検索処理方式の動作について説明する
。なお、ここでは、第3図に例示した原始プログラム1
0の翻訳処理を行う場合について第5図+al〜+d+
を参照しながら説明する。
翻訳ルーチン20が原始プログラム10の翻訳処理を開
始すると、原始プログラム10の構文上および意味上の
正当性を検査するために構文/意味解析処理部30が起
動される。
始すると、原始プログラム10の構文上および意味上の
正当性を検査するために構文/意味解析処理部30が起
動される。
構文/意味解析処理部30では、まずハフシュテーブル
プッシュダウン手段31が、第5図(alに示すように
、ブロックAllに対応するローカルデータ用ハツシュ
テーブル41およびグローバルデータ用ハツシュテーブ
ル45の原形を作成する。ブロックAllが一番外側の
ブロックなので、作成されるローカルデータ用ハツシュ
テーブル41およびグローバルデータ用ハツシュテーブ
ル45はともに空の状態となる。
プッシュダウン手段31が、第5図(alに示すように
、ブロックAllに対応するローカルデータ用ハツシュ
テーブル41およびグローバルデータ用ハツシュテーブ
ル45の原形を作成する。ブロックAllが一番外側の
ブロックなので、作成されるローカルデータ用ハツシュ
テーブル41およびグローバルデータ用ハツシュテーブ
ル45はともに空の状態となる。
ハフシュテーブルプッシュダウン手段31によるブロッ
クAllに対応するローカルデータ用ハツシュテーブル
41およびグローバルデータ用ハツシュテーブル45の
原形の作成処理の後に、構文/意味解析処理部30はブ
ロックAllで宣言されている名前の名前テーブルの登
録処理を行うために名前テーブル登録手段32を呼び出
す。
クAllに対応するローカルデータ用ハツシュテーブル
41およびグローバルデータ用ハツシュテーブル45の
原形の作成処理の後に、構文/意味解析処理部30はブ
ロックAllで宣言されている名前の名前テーブルの登
録処理を行うために名前テーブル登録手段32を呼び出
す。
名前テーブル登録手段32は、ブロックAllの宣言部
分71を取り出して、ローカルデータとして宣言されて
いる名前At、A2およびA3の名前テーブルAI、A
2およびA3ならびにグローバルデータとして宣言され
ている名前G1およびG2の名前テーブルGlおよびG
2を名前テーブル用領域に割り付けた後に、名前テーブ
ルAI、Δ2およびA3をローカルデータ用ハツシュテ
ーブル41にチェーンでつなぎ、名前テーブルG1およ
びG2をグローバルデータ用ハツシュテーブル45にチ
ェーンでつなぐ、なお、名前AI、A2.A3゜Glお
よびG2は同一ハツシュ値をもつものとする(以下に出
てくる名前Bl、B2.C1,DI。
分71を取り出して、ローカルデータとして宣言されて
いる名前At、A2およびA3の名前テーブルAI、A
2およびA3ならびにグローバルデータとして宣言され
ている名前G1およびG2の名前テーブルGlおよびG
2を名前テーブル用領域に割り付けた後に、名前テーブ
ルAI、Δ2およびA3をローカルデータ用ハツシュテ
ーブル41にチェーンでつなぎ、名前テーブルG1およ
びG2をグローバルデータ用ハツシュテーブル45にチ
ェーンでつなぐ、なお、名前AI、A2.A3゜Glお
よびG2は同一ハツシュ値をもつものとする(以下に出
てくる名前Bl、B2.C1,DI。
B2およびG3もすべて同一ハツシュ値をもつものとす
る)。
る)。
名前テーブル登録手段32による現在処理中のブロック
Allの宣言部分71で宣言された名前の名前テーブル
の登録処理が完了した後に、構文/意味解析処理部30
は、現在処理中のブロックAllの手続き部分75で参
照された名前の宣言と参照との対応づけ処理を行うため
に名前テーブル検索手段33を呼び出す。
Allの宣言部分71で宣言された名前の名前テーブル
の登録処理が完了した後に、構文/意味解析処理部30
は、現在処理中のブロックAllの手続き部分75で参
照された名前の宣言と参照との対応づけ処理を行うため
に名前テーブル検索手段33を呼び出す。
名前テーブル検索手段33は、ブロックAllの手続き
部分75を取り出して、名前AI、A2およびA3につ
いてはローカルデータ用ハツシュテーブル41からチェ
ーンをたどって名前テーブルAI。
部分75を取り出して、名前AI、A2およびA3につ
いてはローカルデータ用ハツシュテーブル41からチェ
ーンをたどって名前テーブルAI。
A2およびA3を検索して対応づけ、名前G1およびG
2についてはローカルデータ用ハツシュテーブル41か
らチェーンをたどっても該当する名前テーブルが検索さ
れないので、さらにグローバルデータ用ハツシュテーブ
ル45からチェーンをたどって名前テーブルGlおよび
G2を検索して対応づける。
2についてはローカルデータ用ハツシュテーブル41か
らチェーンをたどっても該当する名前テーブルが検索さ
れないので、さらにグローバルデータ用ハツシュテーブ
ル45からチェーンをたどって名前テーブルGlおよび
G2を検索して対応づける。
次に、ブロックAllからブロックB12に処理が移っ
てブロックの入れ子のレベルが増加すると、第5図(b
lに示すように、ハフシュテーブルプッシュダウン手段
31はいままで処理してきたブロックAllに対応する
ローカルデータ用ハツシュテーブル41およびグローバ
ルデータ用ハツシュテーブル45をハツシュテーブルス
タック50中に1段プッシュダウンし、新しいブロック
B12に対応するローカルデータ用ハツシュテーブル4
2およびグローバルデータ用ハツシュテーブル46の原
形を作成する。
てブロックの入れ子のレベルが増加すると、第5図(b
lに示すように、ハフシュテーブルプッシュダウン手段
31はいままで処理してきたブロックAllに対応する
ローカルデータ用ハツシュテーブル41およびグローバ
ルデータ用ハツシュテーブル45をハツシュテーブルス
タック50中に1段プッシュダウンし、新しいブロック
B12に対応するローカルデータ用ハツシュテーブル4
2およびグローバルデータ用ハツシュテーブル46の原
形を作成する。
ローカルデータ用ハツシュテーブル42は空の状態とし
て作成され、グローバルデータ用ハツシュテーブル46
はブロックAllのその時点までのグローバルデータ用
ハツシュテーブル45を複写されて内容を引き継いだ形
で作成される。
て作成され、グローバルデータ用ハツシュテーブル46
はブロックAllのその時点までのグローバルデータ用
ハツシュテーブル45を複写されて内容を引き継いだ形
で作成される。
次に、名前テーブル登録手段32は、ブロックB12の
宣言部分72で宣言されている名前B1.B2およびG
3の名前テーブルB1.B2およびG3を名前テーブル
用領域に割り付けた後に、名前テーブルB1およびB2
はローカルデータ用ハツシュテーブル42にチェーンで
つなぎ、名前テープルG3はグローバルデータ用ハツシ
ュテーブル46にチェーンでつなぐ。グローバルデータ
用ハツシュテーブル46がブロックAllのその時点ま
でのグローバルデータ用ハツシュテーブル45の内容を
引き継いでいるので、名前テーブルG3はグローバルデ
ータ用ハツシュテーブル46からG3→G2→G1の順
にチェーンづけされる。
宣言部分72で宣言されている名前B1.B2およびG
3の名前テーブルB1.B2およびG3を名前テーブル
用領域に割り付けた後に、名前テーブルB1およびB2
はローカルデータ用ハツシュテーブル42にチェーンで
つなぎ、名前テープルG3はグローバルデータ用ハツシ
ュテーブル46にチェーンでつなぐ。グローバルデータ
用ハツシュテーブル46がブロックAllのその時点ま
でのグローバルデータ用ハツシュテーブル45の内容を
引き継いでいるので、名前テーブルG3はグローバルデ
ータ用ハツシュテーブル46からG3→G2→G1の順
にチェーンづけされる。
続いて、名前テーブル検索手段33は、ブロックB12
の手続き部分76で参照されている名前B1およびB2
についてはローカルデータ用ハツシュテーブル42から
チェーンをたどって名前テーブルB1およびB2を検索
して対応づけ、名前GlおよびG3についてはローカル
データ用ハフシェテーブル42力1らチェーンをたどっ
ても富亥当する名前テーブルが検索されないので、さら
にグローバルデータ用ハフシュテーブル46からチェー
ンをたどって名前テーブルGlおよびG3を検索して対
応づける。
の手続き部分76で参照されている名前B1およびB2
についてはローカルデータ用ハツシュテーブル42から
チェーンをたどって名前テーブルB1およびB2を検索
して対応づけ、名前GlおよびG3についてはローカル
データ用ハフシェテーブル42力1らチェーンをたどっ
ても富亥当する名前テーブルが検索されないので、さら
にグローバルデータ用ハフシュテーブル46からチェー
ンをたどって名前テーブルGlおよびG3を検索して対
応づける。
次に、ブロックB12からブロックC13に処理が移っ
てブロックの入れ子のレベルがさらに増加すると、第5
図(C1に示すように、ハツシュテーブルプッシュダウ
ン手段31は、いままで処理してきたブロックB12に
対応するローカルデータ用ハシシュテーブル42および
グローバルデータ用ハツシュテーブル46をハツシュテ
ーブルスタック50中に1段プッシュダウンし、新しい
ブロックC13に対応するローカルデータ用ハツシュテ
ーブル43およびグローバルデータ用ハツシュテーブル
47の原形を作成する。ローカルデータ用ハツシュテー
ブル43は空の状態として作成され、グローバルデータ
用ハツシュテーブル47はブロックB12のその時点ま
でのグローバルデータ用ハツシュテーブル46を複写さ
れて内容を引き継いだ形で作成される。ここで、グロー
バルデータ用ハツシュテーブル47は、ブロックB12
に対応するグローバルデータ用ハツシュテーブル46が
ブロックAllに対応するグローバルデータ用ハツシュ
テーブル45の内容を引き継いでいるので、結局ブロッ
クAllおよびブロックB12に対応するグローバルデ
ータ用ハツシュテーブル45および46の内容を引き継
いでいることにな次に、名前テーブル登録手段32は、
ブロックC13の宣言部分73でローカルデータとして
宣言されている名前CIの名前テーブルCIを名前テー
ブル用領域に割り付けた後に、名前テーブルC1をロー
カルデータ用ハツシュテーブル43にチェーンでつなぐ
。
てブロックの入れ子のレベルがさらに増加すると、第5
図(C1に示すように、ハツシュテーブルプッシュダウ
ン手段31は、いままで処理してきたブロックB12に
対応するローカルデータ用ハシシュテーブル42および
グローバルデータ用ハツシュテーブル46をハツシュテ
ーブルスタック50中に1段プッシュダウンし、新しい
ブロックC13に対応するローカルデータ用ハツシュテ
ーブル43およびグローバルデータ用ハツシュテーブル
47の原形を作成する。ローカルデータ用ハツシュテー
ブル43は空の状態として作成され、グローバルデータ
用ハツシュテーブル47はブロックB12のその時点ま
でのグローバルデータ用ハツシュテーブル46を複写さ
れて内容を引き継いだ形で作成される。ここで、グロー
バルデータ用ハツシュテーブル47は、ブロックB12
に対応するグローバルデータ用ハツシュテーブル46が
ブロックAllに対応するグローバルデータ用ハツシュ
テーブル45の内容を引き継いでいるので、結局ブロッ
クAllおよびブロックB12に対応するグローバルデ
ータ用ハツシュテーブル45および46の内容を引き継
いでいることにな次に、名前テーブル登録手段32は、
ブロックC13の宣言部分73でローカルデータとして
宣言されている名前CIの名前テーブルCIを名前テー
ブル用領域に割り付けた後に、名前テーブルC1をロー
カルデータ用ハツシュテーブル43にチェーンでつなぐ
。
続いて、名前テーブル検索手段33は、ブロックC13
の手続き部分77で参照された名前C1についてはロー
カルデータ用ハツシュテーブル43からチェーンをたど
って名前テーブルC1を検索して対応づけ、名前Gl、
G2およびG3についてはローカルデータ用ハツシュテ
ーブル43からチェーンをたどっても該当する名前テー
ブルが検索されないので、さらにグローバルデータ用ハ
ツシュテーブル47からチェーンをたどって名前テーブ
ルGl。
の手続き部分77で参照された名前C1についてはロー
カルデータ用ハツシュテーブル43からチェーンをたど
って名前テーブルC1を検索して対応づけ、名前Gl、
G2およびG3についてはローカルデータ用ハツシュテ
ーブル43からチェーンをたどっても該当する名前テー
ブルが検索されないので、さらにグローバルデータ用ハ
ツシュテーブル47からチェーンをたどって名前テーブ
ルGl。
G2およびG3を検索して対応づける。
次に、ブロックC13の処理が終了すると、ハツシュテ
ーブルポツプアップ手段34は、いままで処理してきた
ブロックC13を直接的に含むブロックB12に対応す
るローカルデータ用ハツシュテーブル42およびグロー
バルデータ用ハツシュテーブル46をハツシュテーブル
スタック50中からポツプアップして有効化する。
ーブルポツプアップ手段34は、いままで処理してきた
ブロックC13を直接的に含むブロックB12に対応す
るローカルデータ用ハツシュテーブル42およびグロー
バルデータ用ハツシュテーブル46をハツシュテーブル
スタック50中からポツプアップして有効化する。
続いて、ブロックB12の処理が終了すると、ハツシュ
テーブルポツプアップ手段34は、いままで処理してき
たブロックB12を直接的に含むブロックAllに対応
するローカルデータ用ハシシュテーブル41およびグロ
ーバルデータ用ハツシュテーブル45をハツシュテーブ
ルスタック50中からポツプアップして有効化する。
テーブルポツプアップ手段34は、いままで処理してき
たブロックB12を直接的に含むブロックAllに対応
するローカルデータ用ハシシュテーブル41およびグロ
ーバルデータ用ハツシュテーブル45をハツシュテーブ
ルスタック50中からポツプアップして有効化する。
次に、ブロックAllからブロックD14に処理が移っ
てブロックの入れ子のレベルが再び増加すると、ハツシ
ュテーブルプッシュダウン手段31は、第5図(dlに
示すように、ブロックAllに対応するローカルデータ
用ハツシュテーブル41およびグローバルデータ用ハツ
シュテーブル45をハツシュテーブルスタック50中に
1段プッシュダウンし、新しいブロックD14に対応す
るローカルデータ用ハツシュテーブル44およびグロー
バルデータ用ハッシュテーブル4日の原形を作成する。
てブロックの入れ子のレベルが再び増加すると、ハツシ
ュテーブルプッシュダウン手段31は、第5図(dlに
示すように、ブロックAllに対応するローカルデータ
用ハツシュテーブル41およびグローバルデータ用ハツ
シュテーブル45をハツシュテーブルスタック50中に
1段プッシュダウンし、新しいブロックD14に対応す
るローカルデータ用ハツシュテーブル44およびグロー
バルデータ用ハッシュテーブル4日の原形を作成する。
ローカルデータ用ハフシュテーブル44は空の状態とし
て作成され、グローバルデータ用ハツシュテーブル48
はブロックAllのその時点までのグローバルデータ用
ハツシュテーブル41を複写されて内容を引き継いだ形
で作成される。
て作成され、グローバルデータ用ハツシュテーブル48
はブロックAllのその時点までのグローバルデータ用
ハツシュテーブル41を複写されて内容を引き継いだ形
で作成される。
続いて、名前テーブル登録手段32は、ブロックD14
の宣言部分74でローカルデータとして宣言されている
名前D1およびD2の名前テーブルDIおよびD2を名
前テーブル用領域に割り付けた後に、名前テーブルD1
およびD2をローカルデータ用ハフシュテーブル44に
チェーンでつなぐ。
の宣言部分74でローカルデータとして宣言されている
名前D1およびD2の名前テーブルDIおよびD2を名
前テーブル用領域に割り付けた後に、名前テーブルD1
およびD2をローカルデータ用ハフシュテーブル44に
チェーンでつなぐ。
続いて、名前テーブル検索手段33は、ブロックD14
の手続き部分78で参照されている名前DIおよびD2
についてはローカルデータ用ハツシュテーブル44から
チェーンをたどって名前テーブルDlおよびD2を検索
して対応づけ、名前G1およびG2についてはローカル
データ用ハツシュテーブル44からチェーンをたどって
も1亥当する名前テーブルが検索されないので、さらに
グローバルデータ用ハツシュテーブル48からチェーン
をたどって名前テーブルG1およびG2を検索して対応
づける。
の手続き部分78で参照されている名前DIおよびD2
についてはローカルデータ用ハツシュテーブル44から
チェーンをたどって名前テーブルDlおよびD2を検索
して対応づけ、名前G1およびG2についてはローカル
データ用ハツシュテーブル44からチェーンをたどって
も1亥当する名前テーブルが検索されないので、さらに
グローバルデータ用ハツシュテーブル48からチェーン
をたどって名前テーブルG1およびG2を検索して対応
づける。
ブロックD14の処理が終了すると、ハッシュテーブル
ポップアップ手段34は、いままで処理してきたプロ・
7りD14を直接的に含むブロックAllのローカルデ
ータ用ハツシュテーブル41およびグローバルデータ用
ハツシュテーブル45ヲハソシユテーブルスタツク50
中からポツプアップして有効化する。
ポップアップ手段34は、いままで処理してきたプロ・
7りD14を直接的に含むブロックAllのローカルデ
ータ用ハツシュテーブル41およびグローバルデータ用
ハツシュテーブル45ヲハソシユテーブルスタツク50
中からポツプアップして有効化する。
ブロックAllの処理が終了すると、構文/意味解析処
理部30は原始プログラム10に対する名前の宣言と参
照との対応づけ処理を終了する。
理部30は原始プログラム10に対する名前の宣言と参
照との対応づけ処理を終了する。
なお、ハツシュテーブルに名前テーブルをチェーンでつ
なぐ処理に本実施例の複数ハツシュテーブルによる名前
検索処理方式を用いるのは、名前がローカルデータの場
合には特に必要ではないが、名前がグローバルデータの
場合には以下に示す目的で必要である。
なぐ処理に本実施例の複数ハツシュテーブルによる名前
検索処理方式を用いるのは、名前がローカルデータの場
合には特に必要ではないが、名前がグローバルデータの
場合には以下に示す目的で必要である。
■ 現在処理中のブロックの名前の宣言部分のローカル
データおよびグローバルデータに対する名前テーブルの
割付けとチェーンづけとによる登録処理がすべて完了し
た後にそのブロック内の手続き部分における名前の参照
との対応づけ処理が行われるが、この対応づけの処理に
おいてはグローバルデータ用ハツシュテーブルからチェ
ーンの順にたどって名前テーブルを検索するので、現在
処理中のブロックで宣言された名前はどそのブロック内
で一般的によく参照されることからこのような名前の名
前テーブルをグローバルデータ用ハツシュテーブルから
のチェーンに近い地点につないでおくことにより名前の
検索時間を短縮することができる。
データおよびグローバルデータに対する名前テーブルの
割付けとチェーンづけとによる登録処理がすべて完了し
た後にそのブロック内の手続き部分における名前の参照
との対応づけ処理が行われるが、この対応づけの処理に
おいてはグローバルデータ用ハツシュテーブルからチェ
ーンの順にたどって名前テーブルを検索するので、現在
処理中のブロックで宣言された名前はどそのブロック内
で一般的によく参照されることからこのような名前の名
前テーブルをグローバルデータ用ハツシュテーブルから
のチェーンに近い地点につないでおくことにより名前の
検索時間を短縮することができる。
■ いままで処理してきたブロックが終了してハツシュ
テーブルポンプアンプ手段34を用いてそのブロックを
直接的に含むブロックに対応するローカルデータ用ハツ
シュテーブルおよびグローバルデータ用ハツシュテーブ
ルならびにこれらに対応する名前テーブルを復元する際
に、単にローカルデータ用ハツシュテーブルおよびグロ
ーバルデータ用ハツシュテーブルをハツシュテーブルス
タック50から1段ポツプアップするだけで復元するこ
とができる。
テーブルポンプアンプ手段34を用いてそのブロックを
直接的に含むブロックに対応するローカルデータ用ハツ
シュテーブルおよびグローバルデータ用ハツシュテーブ
ルならびにこれらに対応する名前テーブルを復元する際
に、単にローカルデータ用ハツシュテーブルおよびグロ
ーバルデータ用ハツシュテーブルをハツシュテーブルス
タック50から1段ポツプアップするだけで復元するこ
とができる。
以上説明したように本発明は、翻訳ルーチンの構文/意
味解析処理部にハフシュテーブルブッシュダウン手段9
名前テーブル登録手段3名前テーブル検索手段およびハ
ツシュテーブルポップアップ手段を設けたことにより、
以下に述べるような効果がある。
味解析処理部にハフシュテーブルブッシュダウン手段9
名前テーブル登録手段3名前テーブル検索手段およびハ
ツシュテーブルポップアップ手段を設けたことにより、
以下に述べるような効果がある。
(1) ハツシュテーブルがブロック単位にスタック
されるとともにブロック内のローカルデータおよびグロ
ーバルデータ単位に保持されしかもあるブロックの処理
時点ではそのブロックのみで参照可能なローカルデータ
とそのブロックから参照可能なすべてのブロック、すな
わちそのブロックおよびそのブロックを直接的および間
接的に含むブロックの中で宣言された名前の名前テーブ
ルのみがグローバルデータ用ハツシュテーブルからチェ
ーンづけされており、名前テーブルの検索処理ではこの
チェーンづけされた範囲のみが検索対象となるので、従
来の単一ハソシュテーブル方式のように原始プログラム
中のすべてのブロックのすべての名前テーブルを検索対
象とする場合に比較して検索対象範囲を最小限にするこ
とが可能である。
されるとともにブロック内のローカルデータおよびグロ
ーバルデータ単位に保持されしかもあるブロックの処理
時点ではそのブロックのみで参照可能なローカルデータ
とそのブロックから参照可能なすべてのブロック、すな
わちそのブロックおよびそのブロックを直接的および間
接的に含むブロックの中で宣言された名前の名前テーブ
ルのみがグローバルデータ用ハツシュテーブルからチェ
ーンづけされており、名前テーブルの検索処理ではこの
チェーンづけされた範囲のみが検索対象となるので、従
来の単一ハソシュテーブル方式のように原始プログラム
中のすべてのブロックのすべての名前テーブルを検索対
象とする場合に比較して検索対象範囲を最小限にするこ
とが可能である。
(2)ハツシュテーブルがブロック単位にスタックされ
るとともにローカルデータおよびグローバルデータ単位
に保持されているので、各名前に対する名前テーブルに
名前が宣言されたブロックに関する情報および名前がロ
ーカルデータかグローバルデータかの区別を示す情報を
保持しておく必要はなく、名前テーブルとして保持すべ
き情報量をより少なくすることが可能になるとともに、
ハツシュテーブルにつながれている名前テーブルはその
ブロックから参照可能な名前テーブルしかチェーンづけ
されていないので、検索時点で参照の可否をチェックす
るために名前が宣言されたブロックの入れ子構造に関す
る情報や名前がローカルデータかグローバルデータかの
区別を示す情報を判定する必要はなく、その分検索処理
をより高速にすることが可能である。
るとともにローカルデータおよびグローバルデータ単位
に保持されているので、各名前に対する名前テーブルに
名前が宣言されたブロックに関する情報および名前がロ
ーカルデータかグローバルデータかの区別を示す情報を
保持しておく必要はなく、名前テーブルとして保持すべ
き情報量をより少なくすることが可能になるとともに、
ハツシュテーブルにつながれている名前テーブルはその
ブロックから参照可能な名前テーブルしかチェーンづけ
されていないので、検索時点で参照の可否をチェックす
るために名前が宣言されたブロックの入れ子構造に関す
る情報や名前がローカルデータかグローバルデータかの
区別を示す情報を判定する必要はなく、その分検索処理
をより高速にすることが可能である。
なお、本発明の複数ハツシュテーブルによる名前検索処
理方式は、ブロック構造をもつプログラミング言語によ
りブロックを入れ千秋に記述されれた原始プログラムに
おいて、子供のブロックでも平均的に名前の宣言が多い
場合に特に有効である。
理方式は、ブロック構造をもつプログラミング言語によ
りブロックを入れ千秋に記述されれた原始プログラムに
おいて、子供のブロックでも平均的に名前の宣言が多い
場合に特に有効である。
第1図は本発明の複数ハツシュテーブルによる名前検索
処理方式の一実施例の全体構成を示すブロック図、 第2図は従来の単一ハソシュテーブル方式を示す図、 第3図は入れ子構造および有効範囲属性の指定をもつ原
始プログラムの一例を示す図、第4図は本実施例の複数
ハシシュテーブルによる名前検索処理方式における同一
ハツシユ値をもつ名前に対する名前テーブルのチェーン
の関連を説明するための図、 第5図(al〜(d+は第3図に示した原始プログラム
に対して本実施例の複数ハフシュテーブルによる名前検
索処理方式を適用した場合における処理の進行とハツシ
ュテーブル、ハツシュテーブルスタックおよび名前テー
ブルとの関連を示す図である。 図において、 10・・・原始プログラム、 11〜14・ブロック、 20・・・翻訳ルーチン、 30・・・構文/意味解析処理部、 31・・・ハツシュテーブルプッシュダウン手段、32
・・・名前テーブル登録手段、 33・・・名前テーブル検索手段、 34・・・ハツシュテーブルポップアップ手段、40・
・・ハツシュテーブル群、 41〜44・ローカルデータ用ハツシュテーブル、45
〜48・グローバルデータ用ハツシュテーブル、50・
・・ハツシュテーブルスタック、60・・・名前テーブ
ル群、 61〜63・ローカルデータ用名前テーブル、65〜6
7・グローバルデータ用名前テーブル、71〜74・宣
言部分、 75〜7日・手続き部分である。
処理方式の一実施例の全体構成を示すブロック図、 第2図は従来の単一ハソシュテーブル方式を示す図、 第3図は入れ子構造および有効範囲属性の指定をもつ原
始プログラムの一例を示す図、第4図は本実施例の複数
ハシシュテーブルによる名前検索処理方式における同一
ハツシユ値をもつ名前に対する名前テーブルのチェーン
の関連を説明するための図、 第5図(al〜(d+は第3図に示した原始プログラム
に対して本実施例の複数ハフシュテーブルによる名前検
索処理方式を適用した場合における処理の進行とハツシ
ュテーブル、ハツシュテーブルスタックおよび名前テー
ブルとの関連を示す図である。 図において、 10・・・原始プログラム、 11〜14・ブロック、 20・・・翻訳ルーチン、 30・・・構文/意味解析処理部、 31・・・ハツシュテーブルプッシュダウン手段、32
・・・名前テーブル登録手段、 33・・・名前テーブル検索手段、 34・・・ハツシュテーブルポップアップ手段、40・
・・ハツシュテーブル群、 41〜44・ローカルデータ用ハツシュテーブル、45
〜48・グローバルデータ用ハツシュテーブル、50・
・・ハツシュテーブルスタック、60・・・名前テーブ
ル群、 61〜63・ローカルデータ用名前テーブル、65〜6
7・グローバルデータ用名前テーブル、71〜74・宣
言部分、 75〜7日・手続き部分である。
Claims (1)
- 【特許請求の範囲】 プログラムの中に子供のプログラムを入れ子構造にして
記述可能なブロック構造をもちかつ各プログラムのブロ
ック内での名前の宣言と参照とに対して名前が宣言され
たブロック内でのみ参照可能な名前であるローカルデー
タと名前が宣言されたブロックおよびそのブロックに直
接的および間接的に含まれるブロック内で参照可能な名
前であるグローバルデータとの2種類の有効範囲属性を
有するプログラミング言語に対する翻訳処理方式におい
て、 ブロックの入れ子のレベルが増加するごとにいままで処
理してきたブロックに対応するローカルデータ用ハッシ
ュテーブルおよびグローバルデータ用ハッシュテーブル
をハッシュテーブルスタックにプッシュダウンし新しい
ブロックに対応するローカルデータ用ハッシュテーブル
を空状態にして作成するとともにいままで処理してきた
ブロックに対応するグローバルデータ用ハッシュテーブ
ルを複写して新しいブロックに対応するグローバルデー
タ用ハッシュテーブルを作成するハッシュテーブルプッ
シュダウン手段と、 新しいブロック内での名前の宣言に対して名前がローカ
ルデータであるかグローバルデータであるかの区別に応
じて名前テーブルを新しいブロックに対応するローカル
データ用ハッシュテーブルまたはグローバルデータ用ハ
ッシュテーブルからチェーンづけする名前テーブル登録
手段と、新しいブロック内での名前の参照に対してまず
新しいブロックに対応するローカルデータ用ハッシュテ
ーブルからチェーンづけされた名前テーブルを検索し該
当する名前テーブルがなければ新しいブロックに対応す
るグローバルデータ用ハッシュテーブルからチェーンづ
けされた名前テーブルを検索して対応づける名前テーブ
ル検索手段と、ブロックの入れ子のレベルが減少するご
とにハッシュテーブルスタックをポップアップしいまま
で処理してきたブロックを直接的に含むブロックに対応
するローカルデータ用ハッシュテーブルおよびグローバ
ルデータ用ハッシュテーブルを有効にするハッシュテー
ブルポップアップ手段と、を有することを特徴とする複
数ハッシュテーブルによる名前検索処理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62110373A JPS63273937A (ja) | 1987-05-02 | 1987-05-02 | 複数ハッシュテ−ブルによる名前検索処理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62110373A JPS63273937A (ja) | 1987-05-02 | 1987-05-02 | 複数ハッシュテ−ブルによる名前検索処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS63273937A true JPS63273937A (ja) | 1988-11-11 |
Family
ID=14534157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62110373A Pending JPS63273937A (ja) | 1987-05-02 | 1987-05-02 | 複数ハッシュテ−ブルによる名前検索処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS63273937A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0357023A (ja) * | 1989-07-25 | 1991-03-12 | Fujitsu Ltd | コンパイラの型情報伝播処理方法 |
-
1987
- 1987-05-02 JP JP62110373A patent/JPS63273937A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0357023A (ja) * | 1989-07-25 | 1991-03-12 | Fujitsu Ltd | コンパイラの型情報伝播処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7096216B2 (en) | Performing operations on a set of objects in a database system | |
US7650357B2 (en) | Translation of object queries involving inheritence | |
US7412436B2 (en) | System and interface for manipulating a database | |
US7162469B2 (en) | Querying an object for properties | |
US7136873B2 (en) | Dynamic filtering in a database system | |
US7739223B2 (en) | Mapping architecture for arbitrary data models | |
US7359912B2 (en) | Result set formatting and processing | |
US6112210A (en) | Apparatus and method for null representation in database object storage | |
US6112207A (en) | Apparatus and method which features linearizing attributes of an information object into a string of bytes for object representation and storage in a database system | |
US6339777B1 (en) | Method and system for handling foreign key update in an object-oriented database environment | |
AU2005203667B2 (en) | Durable storage of .NET data types and instances | |
US20040015506A1 (en) | Translation of object queries involving inheritence | |
US7480661B2 (en) | Query services for database system | |
US7254808B2 (en) | Method for specifying and parsing expressions | |
JP2007509422A (ja) | 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張 | |
US7509332B1 (en) | Customized indexes for user defined data types | |
US20040193567A1 (en) | Apparatus and method for using a predefined database operation as a data source for a different database operation | |
US20040162823A1 (en) | Message translation using adaptive agents | |
JPS63273937A (ja) | 複数ハッシュテ−ブルによる名前検索処理方式 | |
US6697826B1 (en) | Information-handling system, method, and article of manufacture including and object search mechanism that provides constraint-based filtering in a distributed object system | |
CN110647535A (zh) | 一种将业务数据更新至Hive的方法、终端及存储介质 | |
JPS63163635A (ja) | ブロツク単位ハツシユテ−ブルスタツク方式 | |
Schwartz et al. | The Data Representation Sublanguage | |
JPH03214357A (ja) | 化合物構造の検索装置 |