%%% %%% grammaire avec construction de structures %%% p(ph(SN_Struct,SV_Struct),L0,L) :- sn(SN_Struct,L0,L1), sv(SV_Struct,L1,L), % s'assurer que les SN avant et apr\es le verbe sont différents not(SV_Struct = svb(_,SN_Struct)). sn(snm(Det_Struct,N_Struct),L0,L) :- det(Det_Struct,Genre,L0,L1), n(N_Struct,Genre,L1,L). sv(svb(vb(Mot)),L0,L) :- v(vb(Mot,_),_,L0,L). sv(svb(vb(Mot),SN_Struct),L0,L) :- v(vb(Mot,Comp),transitif,L0,L1), sn(SN_Struct,L1,L), % vérifier que le complément est sémantiquement acceptable SN_Struct = snm(_,nm(Nom)), % extrait le nom T =.. [Comp,Nom], % construit le prédicat % de vérification sémantique call(T). % on l'appelle det(dt(le),masculin,L0,L) :- terminal(le,L0,L). det(dt(la),feminin,L0,L) :- terminal(la,L0,L). n(nm(souris),feminin,L0,L) :- terminal(souris,L0,L). n(nm(chat),masculin,L0,L) :- terminal(chat,L0,L). v(vb(mange,proie),transitif,L0,L) :- terminal(mange,L0,L). v(vb(trottine,_),intransitif,L0,L) :- terminal(trottine,L0,L). terminal(Mot,[Mot|L],L). % la sémantique proie(souris).