JPS63163635A - ブロツク単位ハツシユテ−ブルスタツク方式 - Google Patents

ブロツク単位ハツシユテ−ブルスタツク方式

Info

Publication number
JPS63163635A
JPS63163635A JP61310368A JP31036886A JPS63163635A JP S63163635 A JPS63163635 A JP S63163635A JP 61310368 A JP61310368 A JP 61310368A JP 31036886 A JP31036886 A JP 31036886A JP S63163635 A JPS63163635 A JP S63163635A
Authority
JP
Japan
Prior art keywords
block
hash table
name
hash
stack
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
JP61310368A
Other languages
English (en)
Inventor
Yoshiaki Asai
浅井 義昭
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 JP61310368A priority Critical patent/JPS63163635A/ja
Publication of JPS63163635A publication Critical patent/JPS63163635A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明はコンピュータのソフトウェアシステムに対する
情報管理方式に関し、特にプログラムに入れ子構造を許
すプログラミング言語に対する名前の定義と参照との対
応づけ処理方式に関する。
(従来の技術) 従来、プログラミング言語において名前の定義と参照と
の間で対応づけを実施するためには、一般に処理を高速
化することができるようにハツシュ技法が用いられて(
・る。この場合、プログラミング言語がプログラムの入
れ子を許す言語であったとしても、プログラム全体に対
して、単一のハツシュテーブルを用いて処理する単一ハ
ツシュテーブル方式と呼ばれる方式を採用するのが一般
的であった。
(発明が解決しようとする問題点) 上述した従来のブロック単位ハツシュテーブルスタック
方式において、プログラムに入れ子を許すプログラミン
グ言語によって利用者の宣言する名前の有効範囲が、プ
ログラムの入れ子構造と対応づけられている場合がしば
しば見うけらねる。このような言語の場合に、単一ハツ
シュテーブル方式ではすべてのブロックのすべての名前
を単一のハツシュテーブルにチェインづけする必要があ
る。このため、名前の対応づけ処理を実行することがで
きるように名前の検索対象範囲が広<、シかも検索処理
が遅くなるという欠点があった。
本発明の目的は、ブロック単位にハツシュテーブルを保
持し、しかも成るブロックの処理時点では該当ブロック
で参照可能なブロックを直接的または間接的に含むブロ
ックに対する名前テーブルのみをハツシュテーブルから
チェインづけし、その範囲のみを検索の対象とすること
によって上記欠点を除去し、検索処理速度を低    
□下させることがないように構成したブロック単位ハツ
シュテーブルスタック方式を提供することにある。
(問題点を解決するための手段) 本発明によるブロック単位ハツシュテーブルスタック方
式は、プログラムのなかに子プログラムを入れ子構造に
して記述可能なプログラミング言語で、各プログラムに
より構成されたブロックの名前の参照が、該当ブロック
または前記該当ブロックを直接的または間接的に含むブ
ロックで宣言されたブロック名のみを参照することが可
能なプログラミング言語に対する翻訳処理におけるブロ
ック単位ハツシュテーブルスタック方式であって、ハッ
シュテーブルプッシュダウン手段と、ハツシュテーブル
ポツプアップ手段とを具備して構成したものである。
ハクシュテーブルプッシュダウン手段は、名前の定義と
参照との対応づけを高速に処理するハツシュテーブルを
ブロック単位に保持し、ブロックの入れ子のレベルが増
加すると、とにブロックを直接的に含む各ブロックに対
する第1のハツシュテーブルをハツシュテーブルスタッ
クにプッシュダウンし、新しいブロックに対する第2の
ハツシュテーブルを第1のハツシュテーブルから複写し
、以降、上記新しいブロックでの名前を追加できるよう
に準備するためのものである。
ハツシュテーブルポツプアップ手段は、ブロックの入れ
子のレベルが減少するごとにハツシュテーブルスタック
をポツプアップし、ブロックを直接的に含“むブロック
の第1のハツシュテーブルを有効化するためのものであ
る。
(実施例) 次に、本発明について図面を参照して詳細に説明する。
第1図は、本発明によるブロック単位ハツシュテーブル
スタック方式の一実施例を示すブロック図である。第1
図において、1は原始プログラム、11〜14はブロッ
ク、2は翻訳ルーチン、31はハッシュテーブルプッシ
ュダウン手段、32はハツシュテーブルポツプアップ手
段、4はハツシュテーブルスタック、41〜43はそれ
ぞれハツシュテーブル、5は名前テーブル群、51〜5
3は名前テーブルである。
第1図に示す本発明の一実施例においては、プログラミ
ング言語に対する翻訳ルーチンの一部である構文/意味
解析処理部に関連しており、原始プログラム1の各ブロ
ック(ブロックA〜C)11〜13に対応してハツシュ
テーブル41〜43が設けられている。ハツシュテーブ
ルスタック4はハツシュテーブル41〜43をスタック
するためのものである。名前テーブル群5は各ブロック
に対応して、ブロックごとの名前テーブル51〜53を
含み、各ブロックの名前の定義部分から作成される。ハ
ッシュテーブルプッシュダウン手段31ハ、翻訳ルーチ
ン2の処理の一部として新しいブロックに対する処理が
開始されるごとに、いままで処理しくきたブロックに対
するハツシュテーブルとハツシュテーブルスタック4に
プッシュダウンし、新しいブロックに対するハツシュテ
ーブルの原形を作成する。ハツシュテーブルポツプアッ
プ手段32は、ブロックの処理が終了するごとにハツシ
ュテーブルスタック4とポツプアップし、いままで処理
してきたブロックを直接的に含むブロックに対するハツ
シュテーブルを有効化する。
すなわち、翻訳ルーチン2は一般的なプログラミング言
語に対する翻訳ルーチンと同様に、対応するプログラミ
ング言語の構文上および意味上の正当性を検査するため
、ハッシュテーブルプッシュダウン手段31とハツシュ
テーブルポツプアップ手段32とから成る構文/意味解
析処理部21を備えている。構文/意味解析処理部21
は、入れ子構造を有するプログラミング言語に対する原
始プログラム1を入力し、その構文上および意味上の正
当性を検査する。その際に、原始プログラム1の各ブロ
ック(第1図図の原始プログラムの実例では、ブロック
A〜C)11〜13ごとに、ブロック11〜13に対す
る名前の定義と参照との対応づけを高速に処理するため
に、ブロック11−13ごとに別々のハツシュテーブル
41〜43が備えである。
構文/意味解析処理部21では、原始プログラム1のな
かで新しいブロックの処理を開始する際に、ハッシュテ
ーブルプッシュダウン手段31を用いていままで処理し
てきたブ℃ツクに対するハツシュテーブルを、ハツシュ
テーブルスタック4のなかに1段だけプッシュダウンし
、その後、新しいブロック用のハツシュテーブルの原形
を作成する。
新たに処理しようとする新しいブロックを直接的又は間
接的に含むブロック、すなわちブロック12に対しては
ブロック11、ブロック13に対しては、ブロック11
.12のすべての名前の定義を参照できるようにするた
め、いままで処理してきた新しいブロックを直接的に含
むブロックのハツシュテーブルをそのまま複写すること
によってハツシュテーブルの原形を作成する。ここで、
−脅外側のブロック14にはいままで処理してきたブロ
ックが存在しないので、ハツシュテーブルの複写処理は
存在せず、ハツシュテーブルを初期状態(空の状態)に
するのみである。
ハッシュテーブルプッシュダウン手段31による上記処
理の後では、原始プログラム1の状態は以下の第1〜第
4のとおりである。
第1にブロック11の開始時点では、ブロック11のハ
ツシュテーブルは初期状態になりている。第2にブロッ
ク12の開始時点では、ブロック12のハツシュテーブ
ルはブロック11の、その時点までのハツシュテーブル
を引継いでいる。第3にブロック13の開始時点では、
ブロック13のハツシュテーブルはブロック12のその
時点までハツシュテーブルを引継いでいる。ここで、ブ
ロック12のハツシュテーブルは上記第2によりブロッ
ク11のハツシュテーブルも引継いでいるので、結局、
ブロック11とブロック12とのハツシュテーブルを引
継いでいる。第4にブロック14の開始時点では、ブロ
ック14のハツシュテーブルはブロック11のその時点
までのハツシュテーブルを引継(・でいる。
ハッシュテーブルプッシュダウン手段31によるハツシ
ュテーブルのスタック処理と、新しいブロックに対する
ハツシュテーブルの原形の作成処理との後、構文/意味
解析処理部21では、新しいブロックに対する名前の定
義と参照との対応づけを行う処理を実行する。まず、原
始プログラム1のなかの該当ブロックから名前の宣言部
分を取出し、各名前の宣言に対して名前テーブルを作成
するとともに、そのブロックに対してハッシュテーブル
プッシュダウン手段31によって用意されたハツシュテ
ーブルにつなぐように処理を実行する。同一ハツシュ値
をもつ名前テーブルをハツシュテーブルにつなぐ処理で
は、第2図に示すように原始プログラム1上で物理的に
後に出現する名前の宣言に対する名前テーブルはど、ハ
ツシュテーブルからのチェインの最初の位置につなぐよ
うにする。例えば、第2図を参照すると、ブロック7X
内の同一ハツシュ値をもつ名前Xi 、X2 、X3に
対して、ブロックX用ハツシュテーブル45により名前
テーブルをX 3−X 2−X 1のJINKつなげる
。さらに、ブロックXに含まれるブロックY内のXi 
、X2 、X3と同一ハツシュ値をもつ名前Yl 、Y
2に対して、ブロックY用ハツシュテーブル46により
、名前テーブルをY2−Yl−X3−X2−XIのl唄
序につなげる。
次の第1および第2の処理により、ハツシュテーブルに
名前テーブルをつないでいる。
第1の処理は、該当ブロックに対する名前の定義に対す
る名前テーブルの作成をすべて完了した後、該当ブロッ
ク内の手続き部分での名前の参照の対応づけ処理を行う
ことにある。この対応づけの処理においては、ハツシュ
テーブル45.46のチェインをチェインする順に順次
巡って検索する。しかし、現在処理しているブロックの
名前テーブルはど、ハツシュテーブル45.46からの
チェインで近い地点につながっているため、一般に検索
時間を短縮することができる。
第2の処理は、特定のブロックが終了して、後述するハ
ツシュテーブルポツプアップ手段32を用いて該当ブロ
ックを直接的に含むブロックのハツシュテーブル45,
46、および対応する名前テーブルの状態に復元する際
には、単にハツシュテーブル45.46をハツシュテー
ブルスタック4から1段だけポツプアップする。
これだけで、目的とする状態に設定することができる。
すなわち、第2図の実例ではブロック(Y)16が終了
した際、ブロック(X)15の状態にするにはYlとY
2との名前テーブルをチェインからはずす必要がある。
そこで、ブロックY用のハツシュテーブル46をハツシ
ュテーブルスタック4からポツプアップするだけで目的
とする状態にすることができる。
構文/意味解析処理部21における該当ブロックに対す
る名前の宣言部分からの名前テーブルの作成処理が完了
した後、構文/意味解析処理部21は該当ブロックに対
する手続き部分で名前と参照とを対応づける処理を実行
する。この手続き部分での名前と参照との対応づけ処理
に関しては、該当ブロックに対するハクシュテーブルを
使用して名前テーブルを順次検索することによって実行
する。この処理を該当ブロックのすべての手続き部分に
対して実行する。
次に、構文/意味解析処理部21は原始プログラムのな
かのブロックの終了に対して、ハツシュテーブルポツプ
アップ手段32を用いてハツシュテーブルスタック4を
ポツプアップし、(・ままで処理してきたブロックを直
線的に含むブロックに対するハツシュテーブル41〜4
3と、該当する名前テーブル51〜53とを有効化する
ための処理を実行する。この処理は、単に、ハツシュテ
ーブルスタック4を1段だけポツプアップするだけで実
行される。第1図に示す原始プログラムの入れ子構造の
実施例に対して、各ブロックに対する処理の進行に伴っ
てハツシュテーブルスタック4、各ブロックのハツシュ
テーブル41〜43、および名前テーブル51〜53が
どのように変化してゆくかを第3図(a)〜(d)に示
す。
(発明の効果) 本発明によるブロック単位ハツシュテーブルスタック方
式は、ブロック単位にハツシュテーブルを保持し、しか
も成るブロックの処理時点では該当ブロックで参照可能
なブロックを直接的または間接的に含むブロックに対す
る名前テーブルのみをハツシュテーブルからチェインづ
けし、その範囲のみを検索の対象とするようにして、単
一ハツシュテーブル方式のように原始プログラムのすべ
てのブロックのすべての名前を検索対象とする場合に比
較して、検索の対象を最小にすることが可能であると云
う効果がある。本発明によるブロック単位ハツシュテー
ブルスタック方式では、さらに入れ子にされた子プログ
ラムで特にデータ宣言が多い場合には、検索の対象を最
小にすることが可能であると云う効果が大きい。
【図面の簡単な説明】
第1図は、本発明によるブロック単位ハツシュテーブル
スタック方式の一冥施例を示すブロック図である。 第2図は、ブロック単位ハツシュテーブルスタック方式
における同一ハツシュ値のチェインを示す説明図である
。 第3図(a)〜(d)は、ブロック単位ハツシュテーブ
ルスタック方式における原始プログラムの入れ子構造と
、ハツシュテーブルスタックと、名前テーブルとの関連
を示す説明図である。 1・・・原始プログラム 11〜14・・・ブロック 2・・・翻訳ルーチン 31・・・ハッシュテーブルプッシュダウン手段32・
・・ハツシュテーブルポツプアップ手段4・・・ハツシ
ュテーブルスタック 41〜43・・・ハツシュテーブル 5・・・名前テーブル群 51〜53・・・名前テーブル

Claims (1)

    【特許請求の範囲】
  1. プログラムのなかに子プログラムを入れ子構造にして記
    述可能なプログラミング言語で、各プログラムにより構
    成されたブロックでの名前の参照が、該当ブロックまた
    は前記該当ブロックを直接的または間接的に含むブロッ
    クで宣言された名前のみを参照することが可能なプログ
    ラミング言語に対する翻訳処理におけるブロック単位ハ
    ッシュテーブルスタック方式であって、前記名前の定義
    と参照との対応づけを高速に処理するハッシュテーブル
    をブロック単位に保持し、前記ブロックの入れ子のレベ
    ルが増加するごとに前記ブロックを直接的に含む各ブロ
    ックに対する第1のハッシュテーブルをハッシュテーブ
    ルスタックにプッシュダウンし、新しいブロックに対す
    る第2のハッシュテーブルを前記第1のハッシュテーブ
    ルから複写し、以降、前記新しいブロックでの名前を追
    加できるように準備するためのハッシュテーブルプッシ
    ュダウン手段と、前記ブロックの入れ子のレベルが減少
    するごとにハッシュテーブルスタックをポップアップし
    、前記ブロックを直接的に含むブロックの第1のハッシ
    ュテーブルを有効化するためのハッシュテーブルポップ
    アップ手段とを具備して構成したことを特徴とするブロ
    ック単位ハッシュテーブルスタック方式。
JP61310368A 1986-12-26 1986-12-26 ブロツク単位ハツシユテ−ブルスタツク方式 Pending JPS63163635A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61310368A JPS63163635A (ja) 1986-12-26 1986-12-26 ブロツク単位ハツシユテ−ブルスタツク方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61310368A JPS63163635A (ja) 1986-12-26 1986-12-26 ブロツク単位ハツシユテ−ブルスタツク方式

Publications (1)

Publication Number Publication Date
JPS63163635A true JPS63163635A (ja) 1988-07-07

Family

ID=18004402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61310368A Pending JPS63163635A (ja) 1986-12-26 1986-12-26 ブロツク単位ハツシユテ−ブルスタツク方式

Country Status (1)

Country Link
JP (1) JPS63163635A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397336B2 (en) 2007-06-29 2013-03-19 Park Way Co., Ltd Hairbrush
US10833843B1 (en) * 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397336B2 (en) 2007-06-29 2013-03-19 Park Way Co., Ltd Hairbrush
US10833843B1 (en) * 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access
US11539507B1 (en) 2015-12-03 2022-12-27 United Services Automobile Association (Usaa) Managing blockchain access

Similar Documents

Publication Publication Date Title
JPS62164136A (ja) デ−タベ−ス・アクセス制御方式
Juric Elixir in action
JPS61282935A (ja) プログラムにおける属性割当て検査方法及び装置
JP2023517310A (ja) スキーマからの最適化された論理の生成
US7174553B1 (en) Increasing parallelism of function evaluation in a database
CN107291464B (zh) 并行业务规则引擎分支无限性解决方法
JPS63163635A (ja) ブロツク単位ハツシユテ−ブルスタツク方式
Rompf et al. A SQL to C compiler in 500 lines of code
JP2538630B2 (ja) テスト項目自動選択システム
Stabler System description languages
Barnard et al. Hierarchic syntax error repair for LR grammars
CN110647535A (zh) 一种将业务数据更新至Hive的方法、终端及存储介质
WO2012137390A1 (ja) 並列化設計支援システム、プログラム、および方法
JPS63273937A (ja) 複数ハッシュテ−ブルによる名前検索処理方式
Jurčo Data Lineage Analysis for PySpark and Python ORM Libraries
JPS61147336A (ja) ロ−ドモジユ−ルの世代管理方式
JPH02195438A (ja) マクロ展開における回帰的呼び出し検出方式
JPH04152486A (ja) データフローグラフ展開方式
Tollefson et al. User-Created Functions, Scripts, and S4 Methods
JPH07244601A (ja) 関係データベースのアクセス方法および装置
JP2742280B2 (ja) 日本語自動解析装置
JPH01137334A (ja) 異言語間の引数整合方法
Sun et al. DMODULA: A distributed programming language
Collins et al. The Mystro System: a comprehensive translator toolkit
JPH01296346A (ja) エラー情報ファイルによる部分コンパイル方式