この章では、ユ−ザが独自の組み込みC述語を簡単に書くためのIF/PrologC関数について説明します。それらは、$PROROOT/c/libifprolog.aの中にあり、カスタマイズされたIF/Prologのバ−ジョンを作るために、IF/Prologのオブジェクトコ−ドとユ−ザのコンパイルしたC述語にリンクされています。...
移動
次へ 前へ
上へ 最上
詳細
ライブラリ関数の概要
参考
イントロダクション
開発にさらに便利なIF/Prologライブラリ関数
バックトラックしないProlog述語をC言語で書く
バックトラックするProlog述語をC言語で書く
cgenマニュアル
低レベルのインタフェイス
IF/Prolog ストリーム ・インタフェース
付録 A - cpred.hのリスト
付録 B - cpro.hのリスト
イフコンピュータ > IF/Prolog > マニュアル > IF/Prolog V4.1 マニュアル > IF/Prolog Interfaces > IF/PrologからC言語へのインタフェ−ス > 開発にさらに便利なIF/Prologライブラリ関数

開発にさらに便利なIF/Prologライブラリ関数

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.

この章では、ユ−ザが独自の組み込みC述語を簡単に書くためのIF/PrologC関数について説明します。それらは、$PROROOT/c/libifprolog.aの中にあり、カスタマイズされたIF/Prologのバ−ジョンを作るために、IF/Prologのオブジェクトコ−ドとユ−ザのコンパイルしたC述語にリンクされています。

デ−タ型TERMは、Prolog本体の各型を表現するために使われる内部デ−タ構造です。どのTERMもIF/Prologにどの型なのかを示すいくつかのタグビットを持っています(たとえば整数,アトムなど)。 またPrologのTERMをC表現に変換し、その逆にC表現をPrologのTERMに変換するC関数が提供されています。これは非常に重要です。なぜならば、述語の引数がCル−チンを通るとき、それらの述語はTERMとして表現されるからです。通常、それらの述語を処理しようとすれば、必ずC表現に変換しなければなりません。IF/Prologに再び戻ってある結果を出そうとする場合、まず始めにC表現からTERMに変換されなければなりません。またタグビットをチェックすることにより、TERMの型を検査するC関数も提供されています。

IF/Prologでは、整数をC言語の中で処理する場合には、型INTを使います。INTはC言語のデ−タ型longと同じです。多くのコンピュ−タの機種では、INTとlongは同じ働きをしますが、異なる場合もあります。IF/Prologでは、実数をC言語の中で処理する場合には、型DBLを使います。DBLは、C言語のデ−タ型doubleと同じです。もしintやlongをC述語に使っていれば、まず述語をTERMに変換する前に、それらをINTやDBLにキャストしなければなりません。Cの値をキャストするには、キャストしたいデ−タ型を()に入れて、もとの値の前に書きます。 たとえば

float X; INT X; DBL Y; X = (INT)4; Y = (DBL)X;

ファイル$PROROOT/c/cpred.hは、新しい述語を定義したすべてのファイルにインクルードされていなければなりません。このファイルは、C述語を書くのに必要となる重要なマクロ定義と型宣言を含んでいます。cpred.hのリストは、このCインタフェース・マニュアルの最後にある付録の部分にあります。

以下のペ−ジでは、C述語の各関数について説明しています。わかりやすいプログラムをいくつか載せ、その結果も示しています。これらのプログラムは、ディレクトリ$PROROOT/demos/cに含まれています。

続く..
ライブラリ関数の概要
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/advanced_feature/c_interface/libfunc/home_jp.html
published 2008/11/17 update 1996/3/31 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS