tl: dr - У меня есть одна строка пролога, которая отлично работает в одной версии Prolog (SWI) но не в другом (TuProlog).Prolog/tuprolog, единственная строка, которая возвращает строку «enitire [sic] не может быть прочитана как один термин«
Я переношу скрипт из пролога SWI в Tuprolog. (Недавно TuProlog сделал большое обновление, и я получил одно и то же поведение в обеих версиях)
Когда я помещал скрипт в TuProlog с помощью установки java ниже, я получаю сообщение об ошибке «Строка enitire не может быть прочитана как один термин».
Так я срубил скрипт (эффективно используя бинарный поиск), пока я не уменьшить сценарий для:
iterm3(Term) --> "'", notquote(Cs), "'", { name(Term1,Cs), Term = q(Term1) }.
который идет хотя swipl штрафа, со следующим выходом ...
cobrakai:~ josephreddington$ swipl -s /Users/josephreddington/Documents/workspace/com.plancomps.prolog.helloworld/caml-light-dynamics/Tools/Prolog/temp.pl% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,992 bytes% /Users/josephreddington/Documents/workspace/com.plancomps.prolog.helloworld/caml-light-dynamics/Tools/Prolog/temp.pl compiled 0.00 sec, 1,720 bytes
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.5)
Copyright (c) 1990-2011 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?-
Но все же возвращается «Строка enitire не может быть прочитана как один термин» в Tuprolog - может ли кто-нибудь сказать мне, почему это может произойти?
ПРИЛОЖЕНИЕ: КОД ИСПОЛЬЗУЕТСЯ:
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 EntireStringForStackOverflow {
public static void main(String[] args) throws Exception {
Prolog engine = new Prolog();
engine.loadLibrary("alice.tuprolog.lib.DCGLibrary");
engine.addTheory(new Theory(readFile("temp.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();
}
}
Пробовал, но такую же ошибку я боюсь :( – Joe