% exemple d'une grammaire simple en Prolog % tire de % Prolog pour l'analyse automatique du langage Naturel % Gal, Lapalme, St-Dizier % Eyrolles, 1989. pp13-16 determinant(la). determinant(le). nom(souris). nom(chat). adjectif(blanc). adjectif(rouge). adjectif(blanche). genre(la,feminin). genre(le,masculin). genre(souris,feminin). genre(chat,masculin). genre(blanc,masculin). genre(blanche,feminin). genre(rouge,_). accord(X,Y):- genre(X,G), genre(Y,G). sn(X,Y):-determinant(X), nom(Y), accord(X,Y). sn(X,Y):-nom(X), adjectif(Y), accord(X,Y). p(snm(det(X),nom(Y),G),X,Y):-sn(X,Y),genre(X,G). /*-------------------- tests de ces predicats | ?- nom(chat). yes | ?- nom(chien). no | ?- accord(le,chat). yes | ?- accord(chat,souris). no | ?- genre(souris,X). X = feminin ; no | ?- genre(Mot,masculin). Mot = le ; Mot = chat ; Mot = blanc ; Mot = rouge ; no | ?- sn(X,Y). X = la, Y = souris ; X = le, Y = chat ; X = souris, Y = rouge ; X = souris, Y = blanche ; X = chat, Y = blanc ; X = chat, Y = rouge ; no | ?- genre(Mot,masculin),nom(Mot). Mot = chat ; no | ?- p(S,le,chat). S = snm(det(le),nom(chat),masculin) ; no | ?- p(S,X,rouge). S = snm(det(souris),nom(rouge),feminin), X = souris ; S = snm(det(chat),nom(rouge),masculin), X = chat ; no -------- fin des tests */