/* afd_tst.pro: Librería Autómatas de Edo. Finito Determinísticos Alberto Pacheco, alberto@acm.org, Oct'99, Nov'00 Use: consult('afd_tst.pro'). Defina: edo_inicial(_); f(_,_,_); a(_); */ % Reconocedor test(Str) :- try, % Error Handling string_list(Str,Lst), % Cadena -> arreglo de caracteres ASCII edo_inicial(Inicio), % Edo Inicial test(Lst,Inicio), % verificador de sintáxis write($ Aceptar: "$), write(Str), write($"$), nl, endTry. % Error Handling test(Str) :- catch(Err), write($Rechazar: "$), write(Str), write($"$), report(Err), nl. % Error Handling test([I],E1) :- !,check(E1,I,E2), isAccepted(E2,I). test([H|T],E1) :- !,check(E1,H,E2), test(T,E2). check(E1,I,E2) :- f(E1,I,E2),!. check(_,I,_) :- throws(I). isAccepted(Edo,_) :- a(Edo),!. isAccepted(_,I) :- throws(I). % Error Handling try :- assert(f(32)). endTry :- retract(f(_)). catch(R) :- retract(f(R)). throws(I) :- retract(f(_)), assert(f(I)), fail. report(32). report(C) :- write($\tSímbolo inválido: $), put(C).