Mai jos gasiti programul Turbo Prolog (incomplet) pentru despartirea in silabe a cuvintelor din limba romana, conform regulilor de la:
http://www.limba-romana.net/lectie/Reguli-de-despartire-a-cuvintelor-in-silabe/72/
domains listac=char* predicates vocala(char) consoana(char) string2list(string,listac) membru(char,listac) afiseaza(listac) diftong(char,char) hiat(char,char) grupexceptie(listac) desparte(listac,listac) run clauses membru(X,[X|_]) if !. membru(X,[_|T]) if membru(X,T). vocala('a'). vocala('e'). vocala('i'). vocala('u'). vocala('o'). vocala('y'). consoana(X) if not(vocala(X)). diftong('a','i'). diftong('e','a'). diftong('o','a'). diftong('y','a'). diftong('e','u'). hiat('a','e'). hiat('a','i'). hiat('o','e'). hiat('i','e'). string2list("",[]) if !. string2list(S,[H|T]) if frontchar(S,H,R),string2list(R,T). afiseaza([]) if nl, !. afiseaza([H|T]) if write(H), afiseaza(T). grupexceptie(['l','p','t']). grupexceptie(['m','p','t']). grupexceptie(['n','c','t']). grupexceptie(['n','c','s']). grupexceptie(['n','d','v']). grupexceptie(['r','c','t']). grupexceptie(['r','t','f']). grupexceptie(['s','t','m']). grupexceptie([C1,C2]) if membru(C1, ['b','c','d','f','g','h','p','t','v']),membru(C2,['l','r']). desparte([],[]) if !. desparte([X],[X]) if !. desparte([X,Y],[X,Y]) if vocala(X), vocala(Y), diftong(X,Y),!. desparte([X,Y],[X,'-',Y]) if vocala(X), vocala(Y), hiat(X,Y),!. desparte([X,Y],[X,Y]) if vocala(X), consoana(Y),!. desparte([X,Y],[X,Y]) if consoana(X), vocala(Y),!. desparte([X|T],[X|L]) if consoana(X), desparte(T,L). % regula 1 si 1b desparte([X,Y,Z|T],[X,'-',Y|L]) if vocala(X), consoana(Y), vocala(Z),desparte([Z|T],L), !. % regula 1a desparte([X,Y|T],[X|L]) if vocala(X), vocala(Y), diftong(X,Y), desparte([Y|T],L). % regula 1c % ch etc. % regula 2 exceptiile desparte([V1,C1,C2,V2|T],[V1,'-',C1,C2|L]) if grupexceptie([C1,C2]), desparte([V2|T],L),!. % regula 2 desparte([V1,C1,C2,V2|T],[V1,C1,'-',C2|L]) if desparte([V2|T],L). % regula 3 % intai exceptiile desparte([V1,C1,C2,C3,V2|T],[V1,C1,C2,'-',C3|L]) if grupexceptie([C1,C2,C3]), desparte([V2|T],L),!. % apoi regula desparte([V1,C1,C2,C3,V2|T],[V1,C1,'-',C2,C3|L]) if desparte([V2|T],L). % regula 4 desparte([X,Y|T],[X,'-'|L]) if vocala(X), vocala(Y), hiat(X,Y), desparte([Y|T],L). run if write("Dati cuvantul: "), readln(Cuvant), string2list(Cuvant,Lista), afiseaza(Lista), nl, desparte(Lista,Silabe), afiseaza(Silabe). goal run