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.
関数名
ParseProlog
概要
#include "cpro.h"
ParseProlog(QUERY,DESCR)
char *QUERY;
QueryDescr **DESCR;
ParseProlog()はIF/Prologのゴ−ルの呼び出し、またはQUERYにより渡されたゴ−ルの呼び出しを準備します。QUERYは、IF/Prologのパ−サによって構文解析されます(レファレンスマニュアルのparse_atom/4を参照)。
質問は、構文的に正しいゴ−ル、または節の本体でなければなりません。そして任意個のゴ−ルを含んでいます。構文解析は、質問中の最後の文字列、または項を終わらせる最初の”.”で中断します。終了記号”.”の後にあるものは構文解析されません。
varフィ−ルドは、質問中の各varに対して一つずつ、変数の記述子の配列を指示します。DESCR->var[i].type が Q_TERM にセットされます。DESCRは、参照によって引き渡されなければならないことに注意して下さい。システムは、質問記述子に領域を割り当てます。
ParseProlog()は、ユ−ザが変更することができない特定のqu_idによって各質問記述子を識別します。質問記述子は後で再使用するため、あるいは別の質問に再使用されるかもしれないので、自動的にセ−ブされます。
呼び出し例:(2番目は構文解析に失敗することに注意して下さい)
ParseProlog("member(A,[3.4,22]),integer(A)",&DESCR1);
ParseProlog("Z is 4 + ,5",&DESCR2);
構文解析後、QueryDescrの各フィ−ルドは以下のようにセットされます。
フィ−ルド 成功 不成功
qu_id 特定の id 未定義
qu_cusor CURSORとしての質問 未定義
ret_code 1 -1
cpu_time 更新された 更新された
parse_pos 0 失敗の場所
exit_code 0 構文エラ−コ−ド
ret_msg yes 説明的メッセ−ジ
no_vars varの数 更新されない
0 <= i < no_vars
var[i].type Q_TERM 未定義
var[i].name 変数名 未定義
var[i].loc.term varのTERMのアドレス 未定義
|