% 5.1.b) einfache (unkoordinierte) Saetze (mit Verb an zweiter Stelle: vz)

startsymbol(s(_Art,_Form)).
startsymbol(np(_,_)).

s([def],[Temp,Mod,vz]) --> % def = Aussagesatz
    np([Pers,_Gen,Num],[nom]),
    v([[nom,Kas]],[Pers,Num,Mod,Temp]),      % Verb mit Objekt-NP
    { Temp = praes ; Temp = praet },
    np([_Pers2,_Gen2,_Num2],[Kas]).

s([def],[Temp,Mod,vz]) --> % def = Aussagesatz 
    np([Pers,_Gen,Num],[nom]),
    v([[nom,Prep,Kas]],[Pers,Num,Mod,Temp]), % Verb mit Objekt-PP
    { Temp = praes ; Temp = praet },
    { praeposition(Prep,Kas) },
    [Prep], 
    np([_Pers2,_Gen2,_Num2],[Kas]).

% Andere Verbstellungen:
s([def],[Temp,Mod,vl]) --> % untergeordneter Aussagesatz
    np([Pers,_Gen,Num],[nom]),
    np([_Pers2,_Gen2,_Num2],[Kas]),
    { Temp = praes ; Temp = praet },
    v([[nom,Kas]],[Pers,Num,Mod,Temp]).

s([def],[Temp,Mod,ve]) --> % Konditionalsatz (Verb an erster Stelle)
    { Temp = praes ; Temp = praet },
    v([[nom,Kas]],[Pers,Num,Mod,Temp]),
    np([Pers,_Gen,Num],[nom]),
    np([_Pers2,_Gen2,_Num2],[Kas]).

% (e) Koordination von Aussagesätzen mit Verhinderung der Linksrekursion

s([Def],[-,Mod,Vst]) -->   % Linksrekursion durch Temp =/= Temp1 verhindern
    { Temp1 = praes ; Temp1 = praet }, 
    s([Def],[Temp1,Mod,Vst]),
    ( [und] ; [oder] ),
    { Temp2 = praes ; Temp2 = praet },
    s([Def],[Temp2,Mod,Vst]).

s([ob],[-,Mod,vl]) -->
    [ob], s([def],[_Tmp,Mod,vl]).


% (f) Relativsaetze: man braucht s([rel(Gen,Num)],Form) !

% Form anpassen: in (np -> det,n,srel) hat srel die Form [Mod]
s([rel(Gen,Num)],[Mod]) -->
    s([rel(Gen,Num)],[Temp,Mod,vl]),
    { Temp=praes ; Temp=praet ; Temp=(-) }.

s([rel(Gen,Num)],[Temp,Mod,vl]) --> % Relativsatz mit RelPron.nom
    pron([rel],[Pers,Gen,Num,nom]),
    { Pers = 3 },
    np([_Pers2,_Gen2,_Num2],[Kas]),
    { Temp = praes ; Temp = praet },
    v([[nom,Kas]],[Pers,Num,Mod,Temp]).

s([rel(Gen2,Num2)],[Temp,Mod,vl]) --> % Relativsatz mit RelPron =/= nom
    { Temp = praes ; Temp = praet },
    pron([rel],[3,Gen2,Num2,Kas]),
    np([Pers,_Gen,Num],[nom]),
    v([[nom,Kas]],[Pers,Num,Mod,Temp]).

% NP mit NP.gen als Det, Linksrekursion vermieden:
np([Pers,Gen,Num],[Kas]) -->
        { kasus(Kas), Kas\=gen },
        np([Pers,_Gen2,_Num2],[gen]),  % des Autors grosse Vorliebe
        { Pers=3 },
        n1([Gen],[Dekl,Num,Kas]),     % alter Hund
        { Dekl=(-) ; Dekl=st }. % ggf. kein Adj in N1  (st:15.12.16)

