I wrote an utility, that fetch a line of codes. Returns end_of_file at end...
read_line_codes(S, SoFar, L) :-
get_code(S, C),
( C == -1
-> ( SoFar == []
-> L = end_of_file
; reverse(SoFar, L)
)
; ( C == 0'\n
-> reverse(SoFar, L)
; read_line_codes(S, [C|SoFar], L)
)
).
test:
?- open('data_grid.pl',read,S),repeat,read_line_codes(S,[],L),format('~s',[L]).
/* File: data_grid.pl
S = <stream>(0x335c9e0),
L = [47, 42, 32, 32, 70, 105, 108, 101, 58|...] ;
Author: Carlo,,,
S = <stream>(0x335c9e0),
L = [32, 32, 32, 32, 65, 117, 116, 104, 111|...] ;
Created: Oct 20 2011
S = <stream>(0x335c9e0),
L = [32, 32, 32, 32, 67, 114, 101, 97, 116|...] ;
...