% s(Sentence_structure) s(s(SNP,SVP)) --> np(SNP,P,nom,_,N), vp(SVP,P,N). % np(NP_structure,Person,Case,Gender,Number) np(np(SD,SN),3,K,G,N) --> d(SD,K,G,N),n(SN,K,G,N). np(np(ProS),P,K,G,N) --> ppro(ProS,P,K,G,N). % vp(VP_structure,Person,Number[,Case_government, ...]) vp(vp(SV,SNP1,SNP2),P,N) --> v(SV,P,N,K1,K2), np(SNP1,_,K1,_,_), np(SNP2,_,K2,_,_). vp(vp(SV,SNP),P,N) --> v(SV,P,N,K), np(SNP,_,K,_,_). vp(vp(SV),P,N) --> v(SV,P,N). % n(N_structure,Case,Gender,Number) n(n(haus,sg),nom,n,sg) --> [haus]. n(n(haus,sg),gen,n,sg) --> [hauses]. n(n(haus,sg),dat,n,sg) --> [haus]. n(n(haus,sg),akk,n,sg) --> [haus]. n(n(haus,pl),nom,n,pl) --> [häuser]. n(n(haus,pl),gen,n,pl) --> [häuser]. n(n(haus,pl),dat,n,pl) --> [häusern]. n(n(haus,pl),akk,n,pl) --> [häuser]. % d(Definiteness,Case,Gender,Number) d(def,nom,m,sg) --> [der]. d(def,nom,f,sg) --> [die]. d(def,nom,n,sg) --> [das]. d(def,gen,m,sg) --> [des]. d(def,gen,f,sg) --> [der]. d(def,gen,n,sg) --> [des]. d(def,akk,m,sg) --> [den]. d(def,akk,f,sg) --> [die]. d(def,akk,n,sg) --> [das]. % ... d(def,nom,_,pl) --> [die]. d(def,gen,_,pl) --> [der]. d(def,dat,_,pl) --> [den]. d(def,akk,_,pl) --> [die]. d(indef,nom,m,sg) --> [ein]. d(indef,nom,f,sg) --> [eine]. d(indef,nom,n,sg) --> [ein]. % ... d(indef,akk,m,sg) --> [einen]. d(indef,akk,f,sg) --> [eine]. d(indef,akk,n,sg) --> [ein]. % Plural: manche, einige, viele, ... % ppro(PPRO_structure,Person,Case,Gender,Number) ppro(ppro(ich),1,nom,_,sg) --> [ich]. ppro(ppro(du),2,nom,_,sg) --> [du]. % ... ppro(ppro(ich),1,akk,_,sg) --> [mich]. ppro(ppro(du),2,akk,_,sg) --> [dich]. ppro(ppro(er),3,nom,m,sg) --> [er]. ppro(ppro(sie),3,nom,f,sg) --> [sie]. ppro(ppro(es),3,nom,n,sg) --> [es]. % ... ppro(ppro(sie),3,akk,_,pl) --> [sie]. % v(V_structure,Person,N[,K,...]) v(v(schlafen),1,sg) --> [schlafe]. v(v(schlafen),2,sg) --> [schläfst]. v(v(schlafen),3,sg) --> [schläft]. % ... v(v(drohen),1,sg,dat) --> [drohe]. v(v(drohen),2,sg,dat) --> [drohst]. v(v(drohen),3,sg,dat) --> [droht]. % ... v(v(tragen),1,sg,akk) --> [trage]. v(v(tragen),2,sg,akk) --> [trägst]. v(v(tragen),3,sg,akk) --> [trägt]. % ... v(v(geben),1,sg,dat,akk) --> [gebe]. v(v(geben),2,sg,dat,akk) --> [gibst]. v(v(geben),3,sg,dat,akk) --> [gibt]. % ...