Я использую tuProlog (http://tuprolog.alice.unibo.it/) для запуска некоторых прологовых предложений изнутри java. У меня возникли проблемы с Grammars Definit Clause, и я думаю, что Stackoverflow может быть правильным местом.tuprolog and Definite Clause Grammars
Использования Определенного примера пункта Grammar от http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse29 мы имеем
s --> np,vp .
np --> det,n.
vp --> v,np.
vp --> v.
det --> [the].
det --> [a].
n --> [woman].
n --> [man].
v --> [shoots].
Я тяну это в tuProlog со следующим кодом Java (который был протестирован на других примерах Prolog)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import alice.tuprolog.NoMoreSolutionException;
import alice.tuprolog.NoSolutionException;
import alice.tuprolog.Prolog;
import alice.tuprolog.SolveInfo;
import alice.tuprolog.Theory;
public class TestDefinateClauseGrammar {
public static void main(String[] args) throws Exception {
Prolog engine = new Prolog();
engine.addTheory(new Theory(readFile("/Users/josephreddington/Documents/workspace/com.plancomps.prolog.helloworld/grammar.pl")));
}
private static String readFile(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
String ls = System.getProperty("line.separator");
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append(ls);
}
return stringBuilder.toString();
}
}
Но к сожалению, я получаю исключение:
Exception in thread "main" alice.tuprolog.InvalidTheoryException: The term 's' is not ended with a period.
at alice.tuprolog.TheoryManager.consult(TheoryManager.java:193)
at alice.tuprolog.Prolog.addTheory(Prolog.java:242)
at TestDefinateClauseGrammar.main(TestDefinateClauseGrammar.java:13)
Может кто угодно скажите мне проблему? Я понимаю, что tuprolog должен поддерживать Пункт грамматики Определенных потому, что их руководство (http://tuprolog.sourceforge.net/doc/2p-guide.pdf) включает в себя цитату:
5.2 ISOLibrary
Library Dependencies: BasicLibrary.
This library contains almost1 all the built-in predicates and functors that
are part of the ISO standard and that are not part directly of the tuProlog
core engine or other core libraries. Moreover, some features are added, not
currently ISO, such as the support for definite clause grammars (DCGs).
Идеи приветствуются ....
Может быть, это место до окончания периода, в первой строке пролога списка? –