Это предикаты, которые читаются из входного файла
read_line(L,C) :-
get_char(C),
(isEOFEOL(C), L = [], !;
read_line(LL,_),% atom_codes(C,[Cd]),
[C|LL] = L).
%Tests if character is EOF or LF.
isEOFEOL(C) :-
C == end_of_file;
(char_code(C,Code), Code==10).
read_lines(Ls) :-
read_line(L,C),
( C == end_of_file, Ls = [] ;
read_lines(LLs), Ls = [L|LLs]
).
Входной файл:
A B
C D
E F
G H
read_lines(L)
возвращает L = [[A, ,B],[C, ,D],[E, ,F],[G, ,H]]
. Моя цель - заменить все пробелы и объединить список списков в один список. Таким образом, ожидаемый результат должен выглядеть следующим образом: L = [A-B,C-D,E-F,G-H]
.
То, что я получил до сих пор, это модифицированная read_line
функция:
read_line(L,C) :-
get_char(C),
( (char_code(C,Code), Code == 32)
-> C = '-'
; C = C),
(isEOFEOL(C), L = [], !;
read_line(LL,_),% atom_codes(C,[Cd]),
[C|LL] = L).
Когда я использую его, Пролог говорит Syntax error: Unexpected end of file
. Что с этим не так?