sitelogo
ParseProlog
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のアドレス 未定義


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