Die Left-Corner-Parsing-Strategie mit Linking bietet im Vergleich zu reinen top-down oder bottom-up-parsing-Verfahren einige Vorteile. Sowohl rekursive Regeln wie Tilgungsregeln können problemlos verarbeitet werden. Der Standard-DCG-Parser in Prolog kann als reines Top-Down-Verfahren nicht mit linksrekursiven Regeln umgehen, was oft zu linguistisch unmotiviert Regelabänderungen führt.
Ziel und Zweck
Im Rahmen dieses Projekts soll ein bestehender Prototyp erweitert werden, der eine kontextfreie Grammatik in ein Prolog-Programm kompiliert.
Ziel des Projekts ist es, den Sprachumfang von DCG kompilieren zu können, wie er im Pseudokode als DCG notiert aussieht:
Wie üblich, sind Terminale als Listen notiert. Non-Terminale können beliebige Atome oder komplexe Terme sein, Prolog-Ziele beliebige Prädikatsaufrufe.
Die Hauptprädikate, die es zu definieren gilt sind:
lc_phrase/2-3: Analog zu den eingebauten Prädikaten phrase/2-3
lc_compile(+InFile,+OutFile): Kompilation von Datei zu Datei. InFile enthält dabei die DCG-Grammatik, OutFile die kompilierte Version davon.
term_expansion/2: Sogenanntes Hookprädikat, das Terme beim Einlesen modifiziert. Gleich wie DCG-Grammatik über Term Expansion in die Prädikate des Standard-DCG.Parsers umgesetzt werden, soll die Grammatik in ihr Left-Corner-Äquivalent verwandelt werden.
Arbeitsschritte
Verstehen der Left-Corner-Kompilation
Kompilieren einer Untermenge der DCG in das Format des Left-Corner-Compilers
Einbau der Term-Expansion
Sukzessives Erweitern der zulässigen Grammatikkonstruktre bis zum vollen DCG-Format