| ||||||||||
| 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関数は、ホスト言語Cインタフェ−スの機能をサポ−トします。 InitProlog(ARGC, ARGV, IN, OUT, ERR) int ARGC; char *ARGV[]; FILE *IN, *OUT, *ERR; ParseProlog(QUERY, DESCR) char *QUERY; QueryDescr **DESCR; ResetQueries() RunProlog(DESCR) QueryDescr *DESCR; EndProlog() InitProlog()はIF/Prologのシステムを初期化し、ファイルポインタをIF/Prologの stdin,stdout,stderr にセットします。 ParseProlog()は質問(1つないしそれ以上のゴ−ルのある)を構文解析し、質問を記述する記述子を返します。 RunProlog()は質問を実行し、(次の)解を返します。 ResetQueries()は、IF/Prologの各”実行”前後のスタックをクリアします。 EndProlog()は、IF/Prologに割り当てられたメモリを開放します。 以下に示すユ−ティリティ関数も提供されています。 InitParms(Parms,IFARGC,IFARGV) char *Parms, *IFARGV[]; int *IFARGC; char *fprintt(fp,format,arg1,arg2,...) char *printt(format,arg1,arg2,...) char *sprintt(bufp,format,arg1,arg2,...) int outputlen(termformat,Term) char *termformat; TERM Term; InitParms()は文字列であるParmsの内容に応じて、argvやargcをIF/Prologにセットします。 fprintt(),printt(),sprintt()は、デ−タ型がCまたはIF/Prologのいずれかにかかわらず、formatに従ってそれらの引数を出力します。 outputlen()は、Termがtermformatとして出力された場合の出力文字数を数えます。 変数に関する情報を格納するデ−タ構造体はVarDescrであり、構文解析された質問に関する情報を格納するデ−タ構造体は、QueryDescrです。 QueryDescrは質問に関する情報を保持するために、ParseProlog()によって割り当てられ、更新されます。これはRunProlog()との間で情報をやりとりするのに使われます。 VarDescrの配列は、ParseProlog()によって生成されます。各項目は、質問中の変数を表しています。 typedef struct { typedef struct { int qu_id; int type; TERM qu_goal; char *name; int ret_code; union { double cpu_time; TERM *term; int parse_pos; long *ivalue; int exit_code; double *dvalue; char *ret_msg; char **string; int no_vars; } /* location */ VarDescr *var; loc; } QueryDescr; } VarDescr; var[i].typeは以下のいずれかになり、返された変数に対する自動的な型変換を決定します。 #define Q_TERM (0) #define Q_INTEGER (1) #define Q_DOUBLE (2) #define Q_STRING (3) | ||||||||||
|
| 戻る> |
|