sitelogo
イントロダクション
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の新しいバ−ジョンの生成


Up read on...
scroll to top managed with ubiCMS