:- module isbugp.

:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.

:- implementation.

:- import_module list, char, int, string.

keyword(T) --> 
   ( nkeyword(P) -> {T=P};
     akeyword(Q) -> {T=Q};
     {T= []}).
  
/*
keyword(T) --> 
   ( isdigit ->  nkeyword(Q), {T=Q};
     isalpha -> akeyword(Q), {T=Q};
     {T= []}).
*/

isdigit([C|S], [C|S]) :- is_digit(C).
isalpha([C|S], [C|S]) :- is_alpha(C).

nkeyword(R) --> 
   ( isdigit -> [C],  nkeyword(KW), {R= [C|KW]};
     {R=[]}).

akeyword(R) --> 
   ( isalpha -> [C],   akeyword(KW), {R= [C|KW]};
     {R=[]}).

main(!IO) :-
	read_line(Res, !IO),
	(if Res = ok(Line) then
	 (if keyword(W, Line, _)
		 then  write_chars(W, !IO),
	             io.write_char('\n', !IO)
		 else print("Falha!\n", !IO)),
	 main(!IO)
	else main(!IO)).

write_chars([], !IO).
write_chars([X | Xs], !IO) :-
    io.write_char(X, !IO),
    write_chars(Xs, !IO).

:- end_module isbugp.
