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
Application number
JP25342085A
Other languages
English (en)
Inventor
Kiyoshi Morishima
森島 潔
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 JP25342085A priority Critical patent/JPS62113240A/ja
Publication of JPS62113240A publication Critical patent/JPS62113240A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、述語論理にもとすくプログラミング言語プロ
ログの処理装置に関する。
(従来の技術) 従来、この種のプロログ処理装置としては特公昭59−
’4106441064号プロミグ開示されているよう
に、バックトラック案行時に問合せ節の述語名と同じ述
語名をもつ節のアドレス乞見出し、処理ン続けると云り
構gが公知である。
第4図は、従来技術によるプロログ処理装置の動作例に
示すタイミング図である。従来技術によるプロログ処理
装置においては、第4図に示すようにアドレスレジスタ
にアドレスAoが与えられてから、次のアドレスAIが
与えられ、btでに3マシンサイクルン要している。
(発明が解決しようとする問題点) 上述し几プロログ処理装置は、バックトラックすること
が判明してから、問合せ節の述語名と同じ述語名ンもつ
節のアドレスヶみつけ出す時間が必要であり、このため
に性能が低下すると云う欠点がある。
本発明の目的は、バックトラックの実行前に、前もって
問合せ節の述語と同じ述語tもつ節を指示シ、アドレス
ケスタックすることによって上記欠点χ除去し、性能の
低下することがないように構成し几プロログ処理装置を
提供することにある。
(問題点Y解決する九めの手段) 本発明によるプロログ処理装置はスタック記憶手段と、
ポインタレジスタ手段と、選択制御手段と7具備して構
成し念ものである。
スタック記憶手段は、バックトラック実行前に問合せ節
の述語と同じ述語乞もつ節を指示するアドレスをスタッ
クするためのものである。
ポインタレジスタ手段は、上記指示されtアドレスによ
って述語名とその引数より成る節で表わす事象の間の関
係を記述する几めのものである。
選択制御手段は、ポインタレジスタ手段の内容により解
くべき問題を書下すためのものであるO (実 施 例) 次に、本発明について図面を参照して詳細に説明する。
本実施例では、プロログの述語χ述語名(引数1、引数
2、・・・・・・)の形式で表現する。引数は定数ま几
は変数であり、変数引数の先頭にに*印χ付けて区別す
る。プログラムの一文ン節と呼び、−膜形式は述語1←
述語2、述語3、・・・・・・、述語nのとおりである
。←印は論理記号であり、その左側に存在し得る述語は
高々1個である。これンヘッド部と呼び、←印の右側t
ボディ部と呼ぶが、−ボディ側の述語ン区切る1、1印
は、述語間の論理積を表わす。述語2、述語3、・・・
・・・、述語nの論理積が成立するとき、上記の一般形
式は述語1が成立することt表現しており、この形式を
規則節と呼ぶ。−膜形式の特殊形として、ヘッド部のみ
から成る節を宣言節と呼び、ボディ部のみから成る節ン
問合せ節と呼ぶ。
プロログのプログラム実行は、以下の3ステツプにより
行われる。
第1のステップでは、問合せ節のボディ部に現れる述語
と同一の述語をヘッド部にもつ節を見出す。ここで、双
方の述語の引数同志t1その並び順に比較し、一致VI
Iべる操作7行う。
引数同志の比較において、一方が変数、他方が定数であ
れば、変数に定数値がバインドされる。
ま几、双方ともに変数であれば、同一値をとるように一
方Y他方へのポインタに書換える。
第2のステップでは、第1のステップによって比較した
結果から述語同志の一致が確認されt節が見出されると
、次には見出され法部のボディ部に着目して、これ7問
合せ節と同様に考え、第1のステップの処理に戻る。
もし、その節が宣言節であれば第1のステップの最初に
参照された節のボディに引続く述語の処理へ移る。もし
、引続く述語がなければ、全処理ン終了する。
第3のステップでは処理χ進めて、第1のステップの最
初に戻る場合乞バンクトラックと呼ぶ。
本発明によるプロログ処理装置においてに、プロログの
節の内部表現として第1図に示すような5種類の表形式
ン使用する。第1図において、21は手続きテーブル(
PT)、22は節テーブル(OT)、23はヘッドテー
ブル(HT)、24はボディテーブル(BT)、25は
引数テーブル(AT)である。
上記各テーブルのフォーマットはいずれも同様であり、
42Il類のフィールドから成立っている。211 、
221 、231 、241 、251はそれぞれ各テ
ーブルを識別する識別子を定義する識別フィールドであ
る。
手続きテーブル(FT)21のエントリは、ヘッド部に
現れるユニークな述語名ごとにひとつだけ作られる。手
続きテーブル21のフィールド212U、他のPTエン
トリのメモリ格納番地、フィールド213 fl述語名
、フィールド214ハ手続きテーブル21の先頭エント
リのメモリ格納番地である。
節テーブル(OT)22のエントリにプログラムの節ご
とにひとつだけ作られる。節テーブル22のフィールド
222は同一の述語名ケヘッド部にもつ節に対応し、他
のOTエントリのメモリ格納番地、フィールド223は
HTエントリのメモリ格納番地、フィールド224はB
Tエントリのメモリ格納番地である。
ヘッドテーブル23のエントリは、ヘッド部の引数ごと
にひとつだけ作られる。ヘッドテーブル23のフィール
ド232は同一ヘッド部述語の他の引数に対応するHT
エントリのメモリ格納番地、フィールド233は引数の
値、フィールド234に未使用である。
ボディテーブル24のエントリは、節のボディ部に現れ
る述語ごとにひとつだけ作られる。ボディテーブル24
のフィールド242は節円の他のBTエントリのメモリ
格納番地、フィールド243は対応する述語名、フィー
ルド244は引数情報ン格納するATエントリのメモリ
格納番地である。引数テーブル25のエントリは、ボデ
ィ部に現れる述語の引数ごとにひとつだけ作られる。
引数テーブル25のフィールド252ハ他のATエント
リのメモリ格納番地、フィールド253は引数の値、フ
ィールド254は未使用である。引数を含むフィールド
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は制御部である。
第2図において、アドレスレジスタlによって指定され
たアドレスが記憶装置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にも送出される。
レジスタ7の出力は、制御部10に送出される。
本実施例では、複数のサイクルのうちの1サイクルを利
用して、バックトラックに使用されるアドレスケスタッ
ク記憶部9にセットするよりに構成しである。この動作
のようすを第3図に示す。
第3図において、す、イクルTlにおいてにアドレスレ
ジスタ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にロードされる。
アドレスレジスタ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にロードされる。
以下、このようにして初めのPTエントリAOに対する
処理ケ続行すると同時に、同じPNAMEをもつPTエ
ントリのアドレスをスタック記憶部9に書込んでゆく。
従って、バックトラックが必要なときには、スタック記
憶部9の内部のアドレスを順次使用することにより、同
じPNAMEYもつPTエントリ乞直ちに読出丁ことが
できる。
上記動作は、選択回wr5がスタック記憶部9乞選択す
ることによって実行される。
(発明の効果) 以上説明し友ように本発明では、同じ述語(PNAME
:InもつFTエントリのアドレスン前もってスタック
しておくことにより、プロログχ高速に実行することが
できると云う効果がある。
【図面の簡単な説明】
第1図は、プロログ節の内部表現形式ン示す説明図であ
る。 第2図は、本発明によるプロログ処理装置の一実施例を
示すブロック図である。 第3図は、第2図に示すプロログ処理装置の動作を表わ
すタイムチャートである。 第4図は、従来技術によるプロログ処理装置の動作ン表
わすタイムチャートである。 1・・・アドレスレジスタ  2・・・記憶装置3・・
・データレジスタ 41〜43,6.7・・・ポインタレジスタ5・・・選
択回路  9・・・スタック記憶部10・・・制御部 22I:A 才3図 才4図

Claims (1)

    【特許請求の範囲】
  1. バックトラック実行前に問合せ節の述語と同じ述語をも
    つ節を指示するアドレスをスタックするためのスタック
    記憶手段と、前記指示されたアドレスによって述語名と
    その引数より成る節で表す事象の間の関係を記述するた
    めのポインタレジスタ手段と、前記ポインタレジスタ手
    段の内容により解くべき問題を書下すための選択制御手
    段とを具備して構成したことを特徴とするプロログ処理
    装置。
JP25342085A 1985-11-12 1985-11-12 プロログ処理装置 Pending JPS62113240A (ja)

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)

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) ユニフイケ−シヨン処理装置