Programmierprojekt "Left Corner Parsing"

BearbeiterIn: N.N.

Betreuer: Simon Clematide

Einführung

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:
grammar_rule --> grammar_head, ['-->'], grammar_body.
grammar_head --> non_terminal.
grammar_head --> non_terminal, [','], terminal.
grammar_body --> grammar_body, [';'],grammar_body.
grammar_body --> grammar_body, [','],grammar_body.
grammar_body --> grammar_body_item.
grammar_body_item --> ['!'].
grammar_body_item --> ['{'], prolog_goals, ['}'].
grammar_body_item --> non_terminal.
grammar_body_item --> terminal.
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:

Arbeitsschritte

  1. Verstehen der Left-Corner-Kompilation
  2. Kompilieren einer Untermenge der DCG in das Format des Left-Corner-Compilers
  3. Einbau der Term-Expansion
  4. Sukzessives Erweitern der zulässigen Grammatikkonstruktre bis zum vollen DCG-Format
grammar_head --> non_terminal.
grammar_body --> terminal_body.
grammar_body --> non_terminal_body.
non_terminal_body --> non_terminal_body, [','], non_terminal_body.
non_terminal_body --> non_terminal.

Anforderung

Benötigte Ressourcen

Literatur und Links


          Simon Clematide