Ich versuche, in einer Datei zu lesen und die Zeichen mit Leerzeichen als Trennzeichen aufgeteilt. Ich habe es geschafft, die Eingabe in eine Liste von Atomen zu unterteilen, aber ich stehe fest und versuche, sie wieder zusammenzusetzen. Dies ist mein Code so weit:Lesen und Zeichenüber eine Datei
tokenize_file(Name, Ret) :-
open(Name, read, Str),
read_file(Str, Ret),
close(Str).
read_file(Stream,[]) :-
at_end_of_stream(Stream).
read_file(Stream,[X|L]) :-
\+ at_end_of_stream(Stream),
get0(Stream, Char),
write([X, Code]), nl,
read_file(Stream,L).
Dieses eine Ausgabe erzeugt, die wie folgt aussieht:
X = [i, n, t, ' ', a, d, d, ' ', '('|...]
Was ich nicht, um herauszufinden, ist offenbar, wie durch diese Liste iterieren und verketten jede Zeichensatz zwischen Leerzeichen in eine andere Liste. Ich habe mich umgeschaut, aber ich habe Mühe zu verstehen, wie man Listen in Prolog manipuliert.
können Sie eine Datei analysieren mit einer Grammatik mit 'library (pio)'. Das wäre viel effizienter, da es nur einen konstanten Overhead hat (dh unabhängig von der Größe der Datei), während Ihre Methode Platz benötigt, der proportional zur Größe der Datei ist. – false
Anstatt Ihre eigene Frage in Ihrer Frage zu beantworten, sollten Sie sie als Antwort hinzufügen. Das ist auf der Website erlaubt. Dann können Sie Ihre eigene Antwort akzeptieren, wenn Sie es wünschen. Wenn es in die Frage eingebettet ist, ist es für andere schwieriger zu finden. – lurker
Bitte schreiben Sie Ihre Lösung erneut als Antwort, nicht als Bearbeitung der Frage. Vielen Dank! – halfer