1

Prolog 述語が使用されている C ファイルに基づいて実行可能ファイルをビルドしたいと考えています。GNU Prolog を使いたい。

(gnu プロローグ チュートリアルに基づいて) 成功し、examp_c.c、examp.pl をビルドしました。

#include <string.h>
#include <gprolog.h>

PlBool
my_call(PlTerm goal)

{
  PlTerm *arg;
  int functor, arity;
  int result;

  arg = Pl_Rd_Callable_Check(goal, &functor, &arity);
  Pl_Query_Begin(PL_FALSE);
  result = Pl_Query_Call(functor, arity, arg);
  Pl_Query_End(PL_KEEP_FOR_PROLOG);
  return (result == PL_SUCCESS);
}

を使用してコンパイル

gplc examp.pl examp_c.c

実行可能な例を呼び出すと、Prolog インタープリターが開始/エミュレートされます。

GNU Prolog 1.4.4 (64 bits)
Compiled Aug  3 2013, 20:06:22 with gcc
By Daniel Diaz
Copyright (C) 1999-2013 Daniel Diaz
| ?- 

しかし、私が望むのは、Prolog インタープリターを介してユーザーと通信することなく、Prolog を内部的に呼び出す C プログラムを持つことです。Prolog 述語は、C プログラムの引数として、または C プログラム内で送信するか、内部的に生成する必要があります。

これの例を知っていますか?それとも何かを誤解していましたか、それは不可能ですか?

ほら、私は初心者として始めたばかりです...助けていただければ幸いです:-) よろしくお願いします。

4

2 に答える 2

0

initialization/1Prolog ファイルでディレクティブを使用して、起動時に実行するクエリを定義できます。--no-top-levelトップレベルのインタープリターを抑制するためのリンカー オプションもあります。両方について、GNU Prolog のドキュメントを確認してください。

于 2014-09-19T15:54:07.733 に答える
0

また、C で main() を直接記述してから、C から Prolog を呼び出すこともでき ます。マニュアルの新しい C メイン関数の定義を参照してください。

于 2014-09-21T16:36:16.803 に答える