JPS62113240A - プロログ処理装置 - Google Patents
プロログ処理装置Info
- Publication number
- JPS62113240A JPS62113240A JP25342085A JP25342085A JPS62113240A JP S62113240 A JPS62113240 A JP S62113240A JP 25342085 A JP25342085 A JP 25342085A JP 25342085 A JP25342085 A JP 25342085A JP S62113240 A JPS62113240 A JP S62113240A
- Authority
- JP
- Japan
- Prior art keywords
- predicate
- entry
- register
- clause
- address
- 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
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明は、述語論理にもとすくプログラミング言語プロ
ログの処理装置に関する。
ログの処理装置に関する。
(従来の技術)
従来、この種のプロログ処理装置としては特公昭59−
’4106441064号プロミグ開示されているよう
に、バックトラック案行時に問合せ節の述語名と同じ述
語名をもつ節のアドレス乞見出し、処理ン続けると云り
構gが公知である。
’4106441064号プロミグ開示されているよう
に、バックトラック案行時に問合せ節の述語名と同じ述
語名をもつ節のアドレス乞見出し、処理ン続けると云り
構gが公知である。
第4図は、従来技術によるプロログ処理装置の動作例に
示すタイミング図である。従来技術によるプロログ処理
装置においては、第4図に示すようにアドレスレジスタ
にアドレスAoが与えられてから、次のアドレスAIが
与えられ、btでに3マシンサイクルン要している。
示すタイミング図である。従来技術によるプロログ処理
装置においては、第4図に示すようにアドレスレジスタ
にアドレスAoが与えられてから、次のアドレスAIが
与えられ、btでに3マシンサイクルン要している。
(発明が解決しようとする問題点)
上述し几プロログ処理装置は、バックトラックすること
が判明してから、問合せ節の述語名と同じ述語名ンもつ
節のアドレスヶみつけ出す時間が必要であり、このため
に性能が低下すると云う欠点がある。
が判明してから、問合せ節の述語名と同じ述語名ンもつ
節のアドレスヶみつけ出す時間が必要であり、このため
に性能が低下すると云う欠点がある。
本発明の目的は、バックトラックの実行前に、前もって
問合せ節の述語と同じ述語tもつ節を指示シ、アドレス
ケスタックすることによって上記欠点χ除去し、性能の
低下することがないように構成し几プロログ処理装置を
提供することにある。
問合せ節の述語と同じ述語tもつ節を指示シ、アドレス
ケスタックすることによって上記欠点χ除去し、性能の
低下することがないように構成し几プロログ処理装置を
提供することにある。
(問題点Y解決する九めの手段)
本発明によるプロログ処理装置はスタック記憶手段と、
ポインタレジスタ手段と、選択制御手段と7具備して構
成し念ものである。
ポインタレジスタ手段と、選択制御手段と7具備して構
成し念ものである。
スタック記憶手段は、バックトラック実行前に問合せ節
の述語と同じ述語乞もつ節を指示するアドレスをスタッ
クするためのものである。
の述語と同じ述語乞もつ節を指示するアドレスをスタッ
クするためのものである。
ポインタレジスタ手段は、上記指示されtアドレスによ
って述語名とその引数より成る節で表わす事象の間の関
係を記述する几めのものである。
って述語名とその引数より成る節で表わす事象の間の関
係を記述する几めのものである。
選択制御手段は、ポインタレジスタ手段の内容により解
くべき問題を書下すためのものであるO (実 施 例) 次に、本発明について図面を参照して詳細に説明する。
くべき問題を書下すためのものであるO (実 施 例) 次に、本発明について図面を参照して詳細に説明する。
本実施例では、プロログの述語χ述語名(引数1、引数
2、・・・・・・)の形式で表現する。引数は定数ま几
は変数であり、変数引数の先頭にに*印χ付けて区別す
る。プログラムの一文ン節と呼び、−膜形式は述語1←
述語2、述語3、・・・・・・、述語nのとおりである
。←印は論理記号であり、その左側に存在し得る述語は
高々1個である。これンヘッド部と呼び、←印の右側t
ボディ部と呼ぶが、−ボディ側の述語ン区切る1、1印
は、述語間の論理積を表わす。述語2、述語3、・・・
・・・、述語nの論理積が成立するとき、上記の一般形
式は述語1が成立することt表現しており、この形式を
規則節と呼ぶ。−膜形式の特殊形として、ヘッド部のみ
から成る節を宣言節と呼び、ボディ部のみから成る節ン
問合せ節と呼ぶ。
2、・・・・・・)の形式で表現する。引数は定数ま几
は変数であり、変数引数の先頭にに*印χ付けて区別す
る。プログラムの一文ン節と呼び、−膜形式は述語1←
述語2、述語3、・・・・・・、述語nのとおりである
。←印は論理記号であり、その左側に存在し得る述語は
高々1個である。これンヘッド部と呼び、←印の右側t
ボディ部と呼ぶが、−ボディ側の述語ン区切る1、1印
は、述語間の論理積を表わす。述語2、述語3、・・・
・・・、述語nの論理積が成立するとき、上記の一般形
式は述語1が成立することt表現しており、この形式を
規則節と呼ぶ。−膜形式の特殊形として、ヘッド部のみ
から成る節を宣言節と呼び、ボディ部のみから成る節ン
問合せ節と呼ぶ。
プロログのプログラム実行は、以下の3ステツプにより
行われる。
行われる。
第1のステップでは、問合せ節のボディ部に現れる述語
と同一の述語をヘッド部にもつ節を見出す。ここで、双
方の述語の引数同志t1その並び順に比較し、一致VI
Iべる操作7行う。
と同一の述語をヘッド部にもつ節を見出す。ここで、双
方の述語の引数同志t1その並び順に比較し、一致VI
Iべる操作7行う。
引数同志の比較において、一方が変数、他方が定数であ
れば、変数に定数値がバインドされる。
れば、変数に定数値がバインドされる。
ま几、双方ともに変数であれば、同一値をとるように一
方Y他方へのポインタに書換える。
方Y他方へのポインタに書換える。
第2のステップでは、第1のステップによって比較した
結果から述語同志の一致が確認されt節が見出されると
、次には見出され法部のボディ部に着目して、これ7問
合せ節と同様に考え、第1のステップの処理に戻る。
結果から述語同志の一致が確認されt節が見出されると
、次には見出され法部のボディ部に着目して、これ7問
合せ節と同様に考え、第1のステップの処理に戻る。
もし、その節が宣言節であれば第1のステップの最初に
参照された節のボディに引続く述語の処理へ移る。もし
、引続く述語がなければ、全処理ン終了する。
参照された節のボディに引続く述語の処理へ移る。もし
、引続く述語がなければ、全処理ン終了する。
第3のステップでは処理χ進めて、第1のステップの最
初に戻る場合乞バンクトラックと呼ぶ。
初に戻る場合乞バンクトラックと呼ぶ。
本発明によるプロログ処理装置においてに、プロログの
節の内部表現として第1図に示すような5種類の表形式
ン使用する。第1図において、21は手続きテーブル(
PT)、22は節テーブル(OT)、23はヘッドテー
ブル(HT)、24はボディテーブル(BT)、25は
引数テーブル(AT)である。
節の内部表現として第1図に示すような5種類の表形式
ン使用する。第1図において、21は手続きテーブル(
PT)、22は節テーブル(OT)、23はヘッドテー
ブル(HT)、24はボディテーブル(BT)、25は
引数テーブル(AT)である。
上記各テーブルのフォーマットはいずれも同様であり、
42Il類のフィールドから成立っている。211 、
221 、231 、241 、251はそれぞれ各テ
ーブルを識別する識別子を定義する識別フィールドであ
る。
42Il類のフィールドから成立っている。211 、
221 、231 、241 、251はそれぞれ各テ
ーブルを識別する識別子を定義する識別フィールドであ
る。
手続きテーブル(FT)21のエントリは、ヘッド部に
現れるユニークな述語名ごとにひとつだけ作られる。手
続きテーブル21のフィールド212U、他のPTエン
トリのメモリ格納番地、フィールド213 fl述語名
、フィールド214ハ手続きテーブル21の先頭エント
リのメモリ格納番地である。
現れるユニークな述語名ごとにひとつだけ作られる。手
続きテーブル21のフィールド212U、他のPTエン
トリのメモリ格納番地、フィールド213 fl述語名
、フィールド214ハ手続きテーブル21の先頭エント
リのメモリ格納番地である。
節テーブル(OT)22のエントリにプログラムの節ご
とにひとつだけ作られる。節テーブル22のフィールド
222は同一の述語名ケヘッド部にもつ節に対応し、他
のOTエントリのメモリ格納番地、フィールド223は
HTエントリのメモリ格納番地、フィールド224はB
Tエントリのメモリ格納番地である。
とにひとつだけ作られる。節テーブル22のフィールド
222は同一の述語名ケヘッド部にもつ節に対応し、他
のOTエントリのメモリ格納番地、フィールド223は
HTエントリのメモリ格納番地、フィールド224はB
Tエントリのメモリ格納番地である。
ヘッドテーブル23のエントリは、ヘッド部の引数ごと
にひとつだけ作られる。ヘッドテーブル23のフィール
ド232は同一ヘッド部述語の他の引数に対応するHT
エントリのメモリ格納番地、フィールド233は引数の
値、フィールド234に未使用である。
にひとつだけ作られる。ヘッドテーブル23のフィール
ド232は同一ヘッド部述語の他の引数に対応するHT
エントリのメモリ格納番地、フィールド233は引数の
値、フィールド234に未使用である。
ボディテーブル24のエントリは、節のボディ部に現れ
る述語ごとにひとつだけ作られる。ボディテーブル24
のフィールド242は節円の他のBTエントリのメモリ
格納番地、フィールド243は対応する述語名、フィー
ルド244は引数情報ン格納するATエントリのメモリ
格納番地である。引数テーブル25のエントリは、ボデ
ィ部に現れる述語の引数ごとにひとつだけ作られる。
る述語ごとにひとつだけ作られる。ボディテーブル24
のフィールド242は節円の他のBTエントリのメモリ
格納番地、フィールド243は対応する述語名、フィー
ルド244は引数情報ン格納するATエントリのメモリ
格納番地である。引数テーブル25のエントリは、ボデ
ィ部に現れる述語の引数ごとにひとつだけ作られる。
引数テーブル25のフィールド252ハ他のATエント
リのメモリ格納番地、フィールド253は引数の値、フ
ィールド254は未使用である。引数を含むフィールド
233 、253は対応する引数が変数であるとき、特
別な取扱いが必要となる。
リのメモリ格納番地、フィールド253は引数の値、フ
ィールド254は未使用である。引数を含むフィールド
233 、253は対応する引数が変数であるとき、特
別な取扱いが必要となる。
変数引数は名前の先頭に*を付されて表わされるが、ひ
とつの節円で同一の渦現(例えば、*Aと*A、*Bと
*B)が与えられ几ときには、同一の値ンもつべき変数
として取扱う。すなわち、ひとつの節のヘッド部とボデ
ィ部とを通して、同一の変数名が現れたときには、2つ
目以降に対応する引数格納フィールド233 、253
は、ひとつ目の引数が出現し九ヘッドテーブル、ま次は
引数テーブルのエントリのメモリ格納番地である。
とつの節円で同一の渦現(例えば、*Aと*A、*Bと
*B)が与えられ几ときには、同一の値ンもつべき変数
として取扱う。すなわち、ひとつの節のヘッド部とボデ
ィ部とを通して、同一の変数名が現れたときには、2つ
目以降に対応する引数格納フィールド233 、253
は、ひとつ目の引数が出現し九ヘッドテーブル、ま次は
引数テーブルのエントリのメモリ格納番地である。
fJz図は、本発明によるプロログ処理装置の一実施例
を示すブロック図である。
を示すブロック図である。
第2図において、1にアドレスレジスタ、2は第1図の
内部表現形式に従ってデータを格納するための記憶装置
、3は記憶装置2の読出しレジスタ、41〜43ハそれ
ぞれ読出しレジスタ3に読出される第2〜第4のフィー
ルドの内容Y保持するためのポインタレジスタ群、6.
7は読出しレジスタ3に読出される第2および第3のフ
ィールドの内容乞それぞれ保持するためのポインタレジ
スタ、9はスタックヶ構成する几めのスタック記憶部、
5はポインタレジスタ41.42,43.6 、および
スタック記憶部9のうちのいずれかひとつン選択する几
めの選択回路、10は制御部である。
内部表現形式に従ってデータを格納するための記憶装置
、3は記憶装置2の読出しレジスタ、41〜43ハそれ
ぞれ読出しレジスタ3に読出される第2〜第4のフィー
ルドの内容Y保持するためのポインタレジスタ群、6.
7は読出しレジスタ3に読出される第2および第3のフ
ィールドの内容乞それぞれ保持するためのポインタレジ
スタ、9はスタックヶ構成する几めのスタック記憶部、
5はポインタレジスタ41.42,43.6 、および
スタック記憶部9のうちのいずれかひとつン選択する几
めの選択回路、10は制御部である。
第2図において、アドレスレジスタlによって指定され
たアドレスが記憶装置2に送出されると、該当するデー
タが読出しレジスタ3にロードされる。読出しレジスタ
3には、第1図に示す表形式のエン) IJがひとつだ
け読出される。
たアドレスが記憶装置2に送出されると、該当するデー
タが読出しレジスタ3にロードされる。読出しレジスタ
3には、第1図に示す表形式のエン) IJがひとつだ
け読出される。
第1のフィールドは制御部10へ送出され、第2のフィ
ールドはレジスタ41,6.および制御部へ送出される
。第3のフィールドはレジスタ42、およびレジスタ7
へ送出される。第4のフィールドはレジスタ43、およ
び制御部lOへ送出される。レジスタ41.42 、4
3 、6、およびスタック記憶部9の出力が選択回路5
により選択され、アドレスレジスタ1に送出される。レ
ジスタ6の出力は、スタック記憶部9にも送出される。
ールドはレジスタ41,6.および制御部へ送出される
。第3のフィールドはレジスタ42、およびレジスタ7
へ送出される。第4のフィールドはレジスタ43、およ
び制御部lOへ送出される。レジスタ41.42 、4
3 、6、およびスタック記憶部9の出力が選択回路5
により選択され、アドレスレジスタ1に送出される。レ
ジスタ6の出力は、スタック記憶部9にも送出される。
レジスタ7の出力は、制御部10に送出される。
本実施例では、複数のサイクルのうちの1サイクルを利
用して、バックトラックに使用されるアドレスケスタッ
ク記憶部9にセットするよりに構成しである。この動作
のようすを第3図に示す。
用して、バックトラックに使用されるアドレスケスタッ
ク記憶部9にセットするよりに構成しである。この動作
のようすを第3図に示す。
第3図において、す、イクルTlにおいてにアドレスレ
ジスタxVcp’rエントリAof指すアドレスが与え
られると、サイクルTlの終りにデータレジスタ3へP
TエントリA Oカロードされる。サイクルT2の終り
において、ポインタレジスタ41〜43 、6 、7に
データレジスタ3からPTエントリAOの対応するフィ
ールドがロードされる。
ジスタxVcp’rエントリAof指すアドレスが与え
られると、サイクルTlの終りにデータレジスタ3へP
TエントリA Oカロードされる。サイクルT2の終り
において、ポインタレジスタ41〜43 、6 、7に
データレジスタ3からPTエントリAOの対応するフィ
ールドがロードされる。
制御部10にはすべてのフィールドがデータレジスタ3
から転送される。サイクルT3の終りにレジスタ43の
内部のOTPフィールドが選択回路5によって選択され
、アドレスレジスタ1にロードされる。このとき、選択
回路5の選択の指示は、制御部10がPTエントリであ
ることン認識して行う。サイクルT4の終りにおいては
、アドレスレジスタ1によって指定され7jOTエント
リA1がデータレジスタ3にロードされる。
から転送される。サイクルT3の終りにレジスタ43の
内部のOTPフィールドが選択回路5によって選択され
、アドレスレジスタ1にロードされる。このとき、選択
回路5の選択の指示は、制御部10がPTエントリであ
ることン認識して行う。サイクルT4の終りにおいては
、アドレスレジスタ1によって指定され7jOTエント
リA1がデータレジスタ3にロードされる。
アドレスレジスタlには、レジスタ6からPTエントリ
AOの内部のLINKフィールド、すなわち他のFTエ
ントリのアドレスがロードされ、制御部10によってレ
ジスタ6乞選択するように制御される。サイクルTaの
終りには、ポインタレジスタ41〜43にデータレジス
タ3からのOTエントリの各対応するフィールドがロー
ドされる。このとき、制御部lOによってポインタレジ
スタ6.7の内容は不変に保几れている。データレジス
タ3にilc、AOOL I NKフィールドによって
指定される他のPTエントリBOがロードされる。サイ
クルT6においては、レジスタ3の内部のPTエントリ
が制御部10に転送される。ポインタレジスタ7の内部
に保持されているエントリp、 o y) P N A
M Eと、エンドIJBOのPNAMgとを比較する
。両者が一致していれば、一致している内容ンポインタ
レジスタ6の内部のPT二ノントリアドレススタック記
憶部9とに書込む。両者が一致していなければ、書込み
は行われない。このサイクルT6の終りでに、レジスタ
3の内部のOTエントリの各フィールドがポインタレジ
スタ41〜43にロードされる。
AOの内部のLINKフィールド、すなわち他のFTエ
ントリのアドレスがロードされ、制御部10によってレ
ジスタ6乞選択するように制御される。サイクルTaの
終りには、ポインタレジスタ41〜43にデータレジス
タ3からのOTエントリの各対応するフィールドがロー
ドされる。このとき、制御部lOによってポインタレジ
スタ6.7の内容は不変に保几れている。データレジス
タ3にilc、AOOL I NKフィールドによって
指定される他のPTエントリBOがロードされる。サイ
クルT6においては、レジスタ3の内部のPTエントリ
が制御部10に転送される。ポインタレジスタ7の内部
に保持されているエントリp、 o y) P N A
M Eと、エンドIJBOのPNAMgとを比較する
。両者が一致していれば、一致している内容ンポインタ
レジスタ6の内部のPT二ノントリアドレススタック記
憶部9とに書込む。両者が一致していなければ、書込み
は行われない。このサイクルT6の終りでに、レジスタ
3の内部のOTエントリの各フィールドがポインタレジ
スタ41〜43にロードされる。
以下、このようにして初めのPTエントリAOに対する
処理ケ続行すると同時に、同じPNAMEをもつPTエ
ントリのアドレスをスタック記憶部9に書込んでゆく。
処理ケ続行すると同時に、同じPNAMEをもつPTエ
ントリのアドレスをスタック記憶部9に書込んでゆく。
従って、バックトラックが必要なときには、スタック記
憶部9の内部のアドレスを順次使用することにより、同
じPNAMEYもつPTエントリ乞直ちに読出丁ことが
できる。
憶部9の内部のアドレスを順次使用することにより、同
じPNAMEYもつPTエントリ乞直ちに読出丁ことが
できる。
上記動作は、選択回wr5がスタック記憶部9乞選択す
ることによって実行される。
ることによって実行される。
(発明の効果)
以上説明し友ように本発明では、同じ述語(PNAME
:InもつFTエントリのアドレスン前もってスタック
しておくことにより、プロログχ高速に実行することが
できると云う効果がある。
:InもつFTエントリのアドレスン前もってスタック
しておくことにより、プロログχ高速に実行することが
できると云う効果がある。
第1図は、プロログ節の内部表現形式ン示す説明図であ
る。 第2図は、本発明によるプロログ処理装置の一実施例を
示すブロック図である。 第3図は、第2図に示すプロログ処理装置の動作を表わ
すタイムチャートである。 第4図は、従来技術によるプロログ処理装置の動作ン表
わすタイムチャートである。 1・・・アドレスレジスタ 2・・・記憶装置3・・
・データレジスタ 41〜43,6.7・・・ポインタレジスタ5・・・選
択回路 9・・・スタック記憶部10・・・制御部 22I:A 才3図 才4図
る。 第2図は、本発明によるプロログ処理装置の一実施例を
示すブロック図である。 第3図は、第2図に示すプロログ処理装置の動作を表わ
すタイムチャートである。 第4図は、従来技術によるプロログ処理装置の動作ン表
わすタイムチャートである。 1・・・アドレスレジスタ 2・・・記憶装置3・・
・データレジスタ 41〜43,6.7・・・ポインタレジスタ5・・・選
択回路 9・・・スタック記憶部10・・・制御部 22I:A 才3図 才4図
Claims (1)
- バックトラック実行前に問合せ節の述語と同じ述語をも
つ節を指示するアドレスをスタックするためのスタック
記憶手段と、前記指示されたアドレスによって述語名と
その引数より成る節で表す事象の間の関係を記述するた
めのポインタレジスタ手段と、前記ポインタレジスタ手
段の内容により解くべき問題を書下すための選択制御手
段とを具備して構成したことを特徴とするプロログ処理
装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25342085A JPS62113240A (ja) | 1985-11-12 | 1985-11-12 | プロログ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25342085A JPS62113240A (ja) | 1985-11-12 | 1985-11-12 | プロログ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS62113240A true JPS62113240A (ja) | 1987-05-25 |
Family
ID=17251141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25342085A Pending JPS62113240A (ja) | 1985-11-12 | 1985-11-12 | プロログ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS62113240A (ja) |
-
1985
- 1985-11-12 JP JP25342085A patent/JPS62113240A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS5941064A (ja) | プロログ処理装置 | |
JPS62113240A (ja) | プロログ処理装置 | |
Despland et al. | Using rewriting techniques to produce code generators and proving them correct | |
JPH046984B2 (ja) | ||
JPS61148536A (ja) | 情報処理システム | |
JPS5822452A (ja) | 命令先取り制御方式 | |
JPS6155736A (ja) | プロロ−グマシン | |
Liu | An efficient algorithm for string pattern matching. | |
JPS6074040A (ja) | 述語論理型言語処理装置 | |
JPS607539A (ja) | 述語論理型言語処理装置 | |
JPS63195739A (ja) | ユニフイケ−シヨン処理装置 | |
JPH01177130A (ja) | ユニフィケーション処理装置 | |
Schwartz et al. | The Data Representation Sublanguage | |
JPH0553808A (ja) | 演算処理装置 | |
JPS6069748A (ja) | 情報処理装置 | |
JPH02157933A (ja) | 可変長データ処理装置 | |
JPS6063640A (ja) | 述語論理型プログラム処理装置 | |
JPS61161547A (ja) | プロロ−グマシン | |
JPS63291127A (ja) | デ−タ処理装置 | |
JPS63219037A (ja) | デ−タ処理装置 | |
JPS6367691B2 (ja) | ||
JPH06175862A (ja) | 電子計算機装置 | |
JPS61139840A (ja) | 情報処理装置 | |
JPH063604B2 (ja) | プロロ−グマシンのハツシユ処理方法 | |
JPS62139039A (ja) | ユニフイケ−シヨン処理装置 |