MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
For current customers, we continue to provide
professional support for IF/Prolog until Dec 31, 2008.
IF/PrologのCインタフェ−スによって、ユ−ザはIF/Prologインタプリタとコンパイラを、個々の要求を満たすようカスタマイズすることができます。ユ−ザは、C言語により独自の組み込み述語を書くことができ、それらを普通のPrologの述語と同様に使うことができます。
Cインタフェ−スが提供する一連のC機能によって、Prologのすべてのデ−タタイプ(アトム、項、整数、構造、リスト、変数)およびPrologのすべての制御機能(バックトラッキング、カット、失敗)が処理できます。
<C言語インタフェ−スの応用例>
-そのコンピュ−タに固有のハ−ドウェアとのインタフェ−ス
-グラフィックシステムとの接続
-FORTRAN,Pascal,アセンブラのような他の言語とのインタフェ−ス
-デ−タベ−スへのアクセス、またはデ−タベ−スル−チンを使用する
-Prologからオペレ−ティングシステムの命令を使用
-知識ベ−スとの接続
-他のPrologシステムからの移植の際、使用可能な述語の実現
-IF/PrologセッションのC言語からの実行
Cインタフェ−スマニュアルで用いられているすべてのプログラム例は、IF/Prologと共に提供されています。これらは $PROROOT/demos/cディレクトリの中にあります。またこのマニュアルで述べるその他すべてのファイルは、図C-1で示されているように、ディレクトリ$PROPOOT/cの中にあります。
注意:この記述は、完全にはUNIXのオペレ−ションと同等な機能を提供していないIBM-PC版には必ずしも適用できるとは限りません。
+-- ifprolog*
|-- ifcc*
|-- iflink*
+---- bin/ ------------|-- ifsem*
| +-- ifopt0*
|
|---- ifprolog/ -------+-- *.pst
| +-- *.sem
|
|---- library/ --------+-- *.sem
| |-- io/
| +-- data/
|
|
| +-- cpred.h
|---- c/ --------------|-- cpro.h
| |-- io.h
| |-- main.o
| |-- spoot.o
$PROROOT/ -------| +-- libifprolog.a
|
|
| +--ifcc.1
|---- main/ -----------|-- ifprolog.1
| +-- ifsem.1
|
|--- util/ -----------+-- cgen/
| |-- emacs/
| |-- gks/
| |-- oracle/
| +-- sql/
|
| +-- benchmarks/
|---- demos/ ---------|-- c/
| |-- cpro/
| |-- f77/
| |-- pro/
| +-- streams/
|
| -- x11r4/ --------|
| |
| |--- optional
|--- motif11/ ------|
図C-1:IF/Prologのデイレクトリ構造
図C-2で示されているように標準のIF/Prologのインタプリタは、2つの部分からできています。
- $PROROOT/bin/ifprologにある実行可能なコ−ド (バイナリ)
- $PROROOT/library/*.semにあるライブラリ−のファイル(Prolog)
+-------------+ +--------------+
+---------+ | | | break.sem |
| users |<---->| IF/Prolog |<---->| consult.sem |
| Prolog | | binary | | debug.sem |
| Program | | | | etc... |
+---------+ +-------------+ +--------------+
図C-2:IF/Prologの標準構成
あなたの定義したC述語をIF/Prologのインタプリタ/コンパイラと共に使用するためには、新しいIF/Prologのオブジェクトは、新しい述語を含むファイルのコンパイル(たとえばnewpreds.c)し、そのファイルを通常のIF/Prologのオブジェクトにリンクして生成しなければなりません。(図C-3参照)
+------------+
| newpreds.c |
+------------+
|
+------------+
| ifcc |
+------------+
|
+--------+ +------------+ +---------------+ +--------+
| main.o | | newpreds.o | | libifprolog.a | | curses |
+--------+ +------------+ +---------------+ +--------+
| | | |
+------------------------------------------------+
|
+----------+
| iflink |
+----------+
|
+--------------------+ +--------------+
+---------+ | IF/Prolog binary | | break.sem |
| user's | | | | consut.sem |
| Prolog |<-->| |<-->| debug.sem |
| Program | | user's C-functions | | etc... |
+---------+ +--------------------+ +--------------+
図C-3:IF/Prologの新しいバ−ジョンの生成
|