Der Regelübersetzer erzeugt daraus Prologklauseln (Prädikate stehen in G_LOG nach der öffnenden Klammer, Argumente werden durch Leerstellen getrennt, Variablen sind durch * gekennzeichnet):
(S *z1 *x1 *x2 (*S)) <- (NP *z2 *x1 *x3 (*NP)) (VP *z3 *x3 *x2 (*S *NP)) .
Das zweite und dritte Argument verwalten den terminalen String als Differenzliste. Die (optionalen) Argumente der nichtterminalen Symbole erscheinen (geklammert) als viertes Argument des Prädikates. Das erste Argument betrifft eine Erweiterung des DCG-Formalismus, der im folgenden besprochen werden soll. Die Grammatik erzeugt bei Aufruf mit dem Goal
(S * * [] *)?
die Antwort:
(S *z1 [Hans schläft] [] ((schlafen hans))) .
Übertragen auf musikalische Strukturen können wir etwa folgende Regeln am Beispiel einer vereinfachten Sonatenhauptsatzform betrachten:
Sonate(*Thema1 *Thema2 *Tonart) -> Exposition(*Thema1 *Thema2 *Tonart) Durchführung(*Thema1 *Thema2 *Tonart) Reprise(*Thema1 *Thema2 *Tonart) .
Exposition(*Thema1 *Thema2 *Tonart) -> <(Tonika *Tonart *Tonika)> Vorstellung(*Thema1 *Tonika) <(Dominante *Tonart *Dominante)> Vorstellung(*Thema2 *Dominante) .
Durchführung(*Thema1 *Thema2 *Tonart) -> < (Variation *Thema1 *Thema11) (Variation *Thema2 *Thema21) (Kombination *Thema21 *Thema11 *Thema3) (Modulation *Tonart *Tonart1) (Modulation *Tonart *Tonart2) (Modulation *Tonart *Tonart3) > |