fork(13) download
  1. :- set_prolog_flag(verbose,silent).
  2. :- prompt(_, '').
  3. :- use_module(library(readutil)).
  4.  
  5. main:-
  6. process,
  7.  
  8. ler_chars(S) :-
  9. ler_resto(C,S).
  10.  
  11. ler_resto(end_of_file, []).
  12. ler_resto(C, [C|R]) :-
  13. get_char(C2),
  14. ler_resto(C2, R).
  15.  
  16. nomes([]) --> [].
  17. nomes([Nome|R]) --> nome(Nome), [' '], nomes(R).
  18. nomes([Nome|R]) --> nome(Nome), ['\n'], nomes(R).
  19. nomes([Nome]) --> nome(Nome).
  20.  
  21. nome(pessoa(Nome,Sobrenome)) --> palavra(CNome), ['.'], palavra(CSobrenome),
  22. { atom_chars(Nome, CNome), atom_chars(Sobrenome, CSobrenome) }.
  23.  
  24. palavra([]) --> [].
  25. palavra([C|R]) --> [C], { is_alpha(C) }, palavra(R).
  26.  
  27. process:-
  28. ler_chars(Chars),
  29. nomes(Pessoas, Chars, []),
  30. write(Pessoas), nl,
  31.  
  32. :- main.
Success #stdin #stdout 0.04s 6160KB
stdin
iago.neves pedro.santos
joao.vitor larissa.figueiredo
stdout
[pessoa(iago, neves), pessoa(pedro, santos), pessoa(joao, vitor), pessoa(larissa, figueiredo)]