関数名 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のアドレス 未定義
| scroll to top |
|