Stimmen parallel gespielt werden, müssen die Noteninformationen allerdings in einem einzigen Aufruf zusammengefaßt werden, denn am Anfang und Ende eines "sound"-Aufrufs werden implizite Synchronisationspunkte gesetzt.
2.3 Grammatiken zur Erzeugung musikalischer Strukturen
Definite Clause Grammers (DCG's) sind eine Form kontextfreier Grammatiken, die sich sehr einfach in Prolog-Programme (Hornformeln) übersetzen läßt. Der Übersetzer von DCG-Regeln in Hornformeln läßt sich selbst einfach als Prolog-Programm realisieren. DCG's sind damit die Standardnotation von Grammatiken in Prolog. In G_LOG ist ein Übersetzungsoperator -> definiert, der Regeln in Prolog-Klauseln und zurück übersetzt. Die Regelsyntax in G_LOG (; trennt Alternativen, ... symbolisiert eine Folge von gleichartigen Ausdrücken):
NT ::= nichtterminales Symbol
REGEL ::= LINKS -> RECHTS ... . LINKS ::= NT ; NT(TERM ...) RECHTS ::= NT ; NT(TERM ...) ; [TERM ...] ; < AUSSAGE ... >
Ausdrücke in eckigen Klammern werden als terminale Symbole interpretiert, Ausdrücke in spitzen Klammern als normale G_LOG-Goals. In anderen Prologsystemen stehen statt der spitzen Klammern geschweifte Klammern für eingebettete Prologausdrücke, in G_LOG werden diese aber für Featureterme benötigt. Nichtterminale Symbole dürfen Argumente haben. Sie stehen in runden Klammern hinter dem Symbol. Regeln werden wie Klauseln durch einen Punkt abgeschlossen.
Die Regeln:
lauten notiert als DCG-Regeln in G_LOG:
S(*S) -> NP(*NP) VP(*NP *S) . NP(hans) -> [Hans] . VP(*x (schlafen *x)) -> [schläft] . |