Next: トップレベルループ
Up: KLICの基本的な動作
Previous: KLICの基本的な動作
動作モデル
KLICでのKL1プログラムの動作モデルは以下の通りである。
- 1.
- 処理系は実行可能ゴールスタックから、1つゴールを選択し、
ガード実行を試みる(try操作)。
- 2.
- ガード実行を試みた結果により、通常以下のどちらかの動作をする。
- (a)
- ガード実行を試みた結果、そのゴールが中断することが判明した場合には、
中断の原因となった未定義変数とゴールとを
「ペア」にして記憶しておく(中断操作)。
- (b)
- ガード実行できた場合には、ボディ実行を行う。
その結果、以下のようなことが行われる可能性がある
- 単一化(単一化操作)。
その結果、未定義変数の具体化により、中断ゴールが再開可能
になる可能性がある。その場合には中断ゴールを実行可能ゴールスタックに入れる。
- あらたなゴールのエンキュー(エンキュー操作)。
- 実行の失敗(失敗操作)。
さらに、ガード実行を試みた結果、「失敗」する(どの候補節にもコミットしない)
可能性がある(ガード失敗操作)。
- 3.
- 以上を繰り返し、実行可能スタックにゴールがなくなれば、実行は終了
(top-level succeed操作)。
以上のような処理の各々は、KLICのコンパイラによりKL1プログラムから生成された
コンパイルコード(すなわちmodule型関数)
と、KLICの実行時ライブラリとが協調することにより
実現されている。その概略を以下で説明する。
Sekita Daigo
1998-05-18