Dieser Artikel setzt Vorkenntnisse im Bereich Theoretische Informatik und Compilerbau voraus.
Eine LL(k)-Grammatik ist eine spezielle kontextfreie Grammatik, welche die Grundlage eines LL(k)-Parsers bildet.
Eine kontexfreie Grammatik heißt LL(k)-Grammatik, wenn jeder Ableitungsschritt eindeutig durch k Symbole der Eingabe (Lookahead) bestimmt ist. Das bedeutet, die Frage, welches Nichtterminalsymbol mit welcher Regel als nächstes expandiert werden soll, kann eindeutig mit Hilfe der ersten k Symbole der Eingabe bestimmt werden.
Generell gilt, je größer k gewählt wird, um so mächtiger wird die Sprachklasse, wobei die Ausdrucksstärke von kontextfreien Grammatiken nie erreicht wird. Damit gibt es kontextfreie Grammatiken, die für kein k LL(k)-Grammatiken sind.
Eine kontextfreie Grammatik
ist LL(k)-Grammatik genau dann, wenn für alle Linksableitungen der Form
|
|
.
|
|
|
mit
und
gilt:
Für die in der Definition benutzte Funktion zur Bestimmung der first Mengen gilt:
 |
|
 |
|
 |
|
Anwendung
Aktuelle LL-Parser benutzen meist nur einen Lookahead von 1. Daher kann in den folgenden Ausführungen
gesetzt werden.
Die formale Definition einer LL(k)-Grammatik ist bezüglich praktischer Anwendung nur mit großem Aufwand realisierbar. Es wird stattdessen ein abgewandelter Ansatz benutzt.
Erklärung: Das Startsymbol der kontextfreien Grammatik
wurde (in eventuell mehreren Schritten) nach
expandiert. Gemäß der Linksableitung wird das Nichtterminalsymbol
als nächstes ersetzt. Dazu gibt es in der kontextfreien Grammatik aber zwei verschiedene Regeln;
und
. Die Frage, mit welcher Regel
expandiert wird, bestimmt sich aus der Berechnung von
und
. Um die Frage eindeutig beantworten zu können, müssen beide Mengen disjunkt sein.
Im Allgemeinen hängt
aber vom Rechtskontext
ab (wenn
). Das Ziel ist die Bestimmung von
nur aus den Produktionen, d.h. aus
und aus den Strings die einem Vorkommen von
"folgen" können. Für diesen Zweck wird die Funktion
definiert, die die Menge aller
"folgenden" Symbole berechnet.
Damit kann die eingangs geforderte Bedingung umformuliert werden.
Achtung: Dieser Satz kann auf Fälle
nicht angewandt werden.
Die zu einer Produktion
berechnete Menge
wird als lookahead Menge bezeichnet.
Beispiel
Für die folgende Grammatik
wird geprüft, ob sie LL(1)-Grammatik ist. Dazu müssen die lookahead Mengen aller Produktionen mit gleichen linken Regelseiten disjunkt sein.
und die Menge der Produktionen ist

Zunächst werden die first bzw. follow Mengen der Nichtterminalsymbole bestimmt, da diese für die Berechnung der lookahead Mengen nötig sind.
|
E |
E' |
T |
T' |
F
|
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
|
Es folgt der Vergleich der Lookahead-Mengen für alle Produktionen mit gleichen linken Regelseiten.
Als erstes für die beiden Produktionen
und

Als nächstes für die beiden Produktionen
und

Als letztes für die beiden Produktionen
und

Da alle betrachteten Schnittmengen leer sind, handelt es sich bei der Grammatik G um eine LL(1)-Grammatik.
Siehe auch
Literatur
- Donald E. Knuth: Top-down syntax analysis. Acta Informatica 1 (1971), 79–110. Neuabdruck in Donald E. Knuth: Selected Papers on Computer Languages, Kapitel 14.