Einf. in das symbolische Programmieren CIS, SS 2001, H.Leiss ================================================================= Abgabe: Donnerstag, 12.7.2001 in der Vorlesung ---------------------------------------------- Aufgabe 14. ---------- In der Vorlesung haben wir eine Beispielgrammatik geschrieben, siehe Datei 'parser.gram1.pro' auf der Kursseite. Mit dieser Grammatik werden z.B. "das Programmierer" oder "der Programm" als Nominalphrasen erkannt, was nicht der Fall sein sollte. a) (Sollte jeder versuchen): Aendere die Grammatik so, dass die Kategorien fuer Artikel und Nomen ein Genusmerkmal erhalten (z.B. det(mask), det(fem)) und bei der Regel fuer Nominalphrasen nur solche NP erkannt werden, bei denen Artikel und Nomen dasselbe Genus haben. b) (Geht wie a), sollte man aber erst machen, wenn a) klappt.) Erweitere die Kategorien fuer Nomina und Nominalphrasen um ein Merkmal fuer den Kasus (es reicht, die beiden Kasus 'nom' und 'akk' zu unterscheiden) und aendere die VP-Regel so, dass bei Verbalphrasen mit transitivem Verb das Objekt im Akkusativ stehen muss. Teste, ob "Der Programmierer schrieb der Programm." noch erkannt wird. c) Freiwillig: Wie kann man durch eine { Anweisung } auf der rechten Seite der NP-Regel dafuer sorgen, dass die Eingabe "der Programm" nicht einfach nicht erkannt wird, sondern eine Fehlermeldung Falsche Kongruenz im Genus von Artikel und Nomen ausgegeben wird? Bemerkung: ---------- Wer zu Hause arbeitet und das Programm bin/dot nicht hat, kann in den Klauseln fuer das Praedikat parse/0 das Anzeigen durch 'displayTree(Baum)' einfach durch 'writeq(user,Baum)' ersetzen, dann wird die Analyse wenigstens als Prolog-Term angezeigt.