今回はこれまでの応用です。
これまでに作成した以下のクラスを使って、JavaのString
で記述されたPrologのゴール列をコールしてみます。
-
PrologContext
: PrologCafeでProlog実行エンジンをシングルスレッドで動かすの巻 -
PrologUtil
: PrologCafeを使ってJava言語でProlog言語で書かれた項の文字列をパースするの巻
Example4.java
package maglog;
import maglog.prolog.PrologContext;
import maglog.prolog.PrologUtil;
import jp.ac.kobe_u.cs.prolog.lang.Term;
public class Example4 {
public static void exec(Term term) throws Exception {
PrologContext context = new PrologContext();
context.init();
context.setPredicate(term);
while (!context.isStopped())
context.execute();
}
public static void main(String[] args) throws Exception {
exec(PrologUtil.read("write('hello, world'), nl."));
exec(PrologUtil.read("assert(neko(tama)), assert(neko(tora)), findall(X, neko(X), L), write(L), nl."));
}
}
出力
hello, world
[tama,tora]
かなりPrologエンジンの取り扱いが楽になってきました。