% ----- Beipielgrammatik mit Interrogativsätzen ------ H.Leiß, CIS 2015

  startsymbol(s(Tmp)) :- tempus(Tmp).
  startsymbol(is(Tmp)) :- tempus(Tmp).
  startsymbol(np(Kas)) :- kasus(Kas), (Kas = nom ; Kas = akk).
  startsymbol(inp(Kas)) :- kasus(Kas), (Kas = nom ; Kas = akk).

  kasus(nom).       kasus(akk).    kasus(dat).
  tempus(praes).    tempus(praet).
  
  s(Tmp) --> np(nom), iv(Tmp), (['.'];[]), {tempus(Tmp)}.
  s(Tmp) --> np(nom), tv(Tmp), np(akk), (['.'];[]),
               {tempus(Tmp)}.
  s(Tmp) --> np(nom), btv(Tmp), np(dat), np(akk),
               (['.'];[]), {tempus(Tmp)}.

  np(Kas) --> art(Kas), (a(Kas) ; []), n(Kas), {kasus(Kas)}.
  art(nom) --> ['Der'] ; [der].
  art(dat) --> ['Dem'] ; [dem].   
  art(akk) --> ['Den'] ; [den].
  a(nom) --> [alte] ; [junge].
  a(dat) --> [alten] ; [jungen].
  a(akk) --> [alten] ; [jungen].
  n(Kas) --> (['Mann'] ; ['Baum']), {kasus(Kas)}.
  n(dat) --> ['Manne'].
  tv(praes) --> [faellt] ; [fällt].
  tv(praet) --> [faellte] ; [fällte].

  % intransitives Verb:
  iv(praes) --> [waechst] ; [wächst]. 
  iv(praet) --> [wuchs].
  iv(praes) --> [faellt] ; [fällt].
  iv(praes) --> [fiel].

  % bitransitives Verb:
  btv(praes) --> [gibt]. 
  btv(praes) --> [gab].

  % interrogative Saetze = Fragen:
  is(Tmp) --> tv(Tmp), np(nom), np(akk), ([?];[]), {tempus(Tmp)}.
  is(Tmp) --> iv(Tmp), np(nom), ([?];[]), {tempus(Tmp)}.
  is(Tmp) --> inp(nom), iv(Tmp), ([?];[]), {tempus(Tmp)}.
  is(Tmp) --> inp(nom), tv(Tmp), np(akk), ([?];[]), {tempus(Tmp)}.
  is(Tmp) --> inp(akk), tv(Tmp), np(nom), ([?];[]), {tempus(Tmp)}.
  is(Tmp) --> inp(nom), btv(Tmp), np(dat), np(akk), ([?];[]), 
                 {tempus(Tmp)}.
  is(Tmp) --> inp(akk), btv(Tmp), np(nom), np(dat), ([?];[]), 
                 {tempus(Tmp)}.

  % interrogative Nominalphrasen
  inp(Kas) --> iart(Kas), (a(Kas);[]), n(Kas), ([?];[]), {kasus(Kas)}.
  iart(nom) --> ['Welcher'] ; [welcher].
  iart(dat) --> ['Welchem'] ; [welchem].
  iart(akk) --> ['Welchen'] ; [welchen].


% ----------- Ende -----------------------------
