:- set_prolog_flag(verbose,silent).
:- prompt(_, '').
:- use_module(library(readutil)).

main:-
	process,
	halt.
	
ler_chars(S) :-
    get_char(C),
    ler_resto(C,S).

ler_resto(end_of_file, []).
ler_resto(C, [C|R]) :-
    get_char(C2),
    ler_resto(C2, R).
	
nomes([]) --> [].
nomes([Nome|R]) --> nome(Nome), [' '], nomes(R).
nomes([Nome|R]) --> nome(Nome), ['\n'], nomes(R).
nomes([Nome]) --> nome(Nome).

nome(pessoa(Nome,Sobrenome)) --> palavra(CNome), ['.'], palavra(CSobrenome),
                                 { atom_chars(Nome, CNome), atom_chars(Sobrenome, CSobrenome) }.

palavra([]) --> [].
palavra([C|R]) --> [C], { is_alpha(C) }, palavra(R).

process:-
	ler_chars(Chars),
	nomes(Pessoas, Chars, []),
	write(Pessoas), nl,
	true.

:- main.