% predikat cti/1 slouzi k nacteni vstupu z klavesnice 
% ukonceneho teckou. Za soucasti slov se povazuji 
% pismena A..Z, a..z, a dale cislice 0..9.
% Jednotliva slova jsou zarazena do seznamu, ktery
% je parametrem predikatu.


cti([Slovo|Zbytek_slov]):-
	get0(Znak),
	cti_slovo(Znak,Slovo,Novy_zn),
	cti_zbytek_slov(Novy_zn,Zbytek_slov).

cti_zbytek_slov(46,[]).			% tecka na konci vstupu
cti_zbytek_slov(Znak,[Slovo|Zbytek_slov]):-
	cti_slovo(Znak,Slovo,Novy_zn),
	cti_zbytek_slov(Novy_zn,Zbytek_slov).

cti_slovo(-1,'',_).	% ukonceni vstupu
cti_slovo(Znak,Slovo,Novy_zn1):-
	znak_slova(Znak,Znak1),!,
	get0(Novy_zn),
	cti_zbytek_slova(Novy_zn,Zbytek_slova,Novy_zn1),
	name(Slovo,[Znak1|Zbytek_slova]).
cti_slovo(_,Slovo,Novy_zn1):-	% Neni znak slova
	get0(Novy_zn),
	cti_slovo(Novy_zn,Slovo,Novy_zn1).

cti_zbytek_slova(Znak,[Znak1|Zbytek_slova],Novy_zn1):-
	znak_slova(Znak,Znak1),!,
	get0(Novy_zn),
	cti_zbytek_slova(Novy_zn,Zbytek_slova,Novy_zn1).
cti_zbytek_slova(Znak,[],Znak).

znak_slova(-1,-1):-!,fail. % tecka na konci, neni soucast slova.
znak_slova(Znak,Znak):-Znak>96,Znak<123.		% a..z
znak_slova(Znak,Znak):-Znak>64,Znak<91.			% A..Z
znak_slova(Znak,Znak):-Znak>47,Znak<58.			% 0..9
