Compilerbauhome Compilerbau & Formale Sprachen: LL(1) Grammatiken Prof. Dr. Uwe Schmidt FH Wedel

LL(1) Grammatiken

weiter

weiter

Parser-Tabelle
für jedes Paar (X, z) mit X ∈ N, z ∈ T werden Einträge (Grammatik-Regeln) in der Parser-Tabelle nach folgenden zwei Verfahren berechnet
weiter
1.
X ::= w ∈ ParserTabelle(X, z)

für alle z ∈ FIRST(w)

weiter
2.
X ::= w ∈ ParserTabelle(X, z)

mit nullable(w)

für alle z ∈ FOLLOW(X)

Beispiel

weiter
gut
Genau eine Regel ∈ ParserTabelle(X,z): Alles gut
weiter
gut
Keine Regel ∈ ParserTabelle(X,z): Syntaxfehler
weiter
schlecht
Mehrere Regeln ∈ ParserTabelle(X,z): Kein LL-Parsen möglich
weiter
Definition
Grammatiken, die keine mehrfachen Einträge in der Parser-Tabelle enthalten, heißen LL(1)-Grammatiken
weiter
L.(.)
Von links nach rechts lesen
.L(.)
Linksableitung konstruieren
..(1)
Ein Zeichen vorausschauen
weiter
gut
Aus einer Parser-Tabelle kann auf einfache und systematische Weise ein Parser mit rekursivem Abstieg automatisch generiert werden.
?
Welche Grammatik-Regeln zerstören die LL(1) Eigenschaft?
weiter
Mehrdeutigkeiten
Mehrdeutige Grammatiken sind nie LL(1) Grammatiken.
weiter
Linksrekursion
Beispiel:
 
E ::= E + T
E ::= T
 
FIRST(T) ⊆ FIRST(E+T)
 
1.Beispiel: Arithmetische Ausdrücke
 
2.Beispiel: Anweisungsfolgen
weiter
merke
Für LL-Parser nur Rechtsrekursion verwenden
weiter
Transformation
Linksrekursive Regeln in rechtsrekursive Regeln
 
Beispiel:
 
E  ::= T E'
E::= + T E'
E::=
weiter
merke
Anderer Syntaxbaum: Andere Semantik
weiter
Transformations-
Schema
Linksrekursive Regeln in rechtsrekursive Regeln
 
X  ::= X w1
X  ::= X w2
X  ::= u1
X  ::= u2
 
wird transformiert in
 
X  ::= u1 X'
X  ::= u2 X'
 
X::= w1 X'
X::= w2 X'
X::=
weiter
merke
Es entstehen Epsilon-Produktionen
weiter
gemeinsame Anfangsstücke
in Regeln für ein NT-Symbol
 
X  ::= Y w1
X  ::= Y w2
weiter
merke
FIRST-Mengen für beide Regeln gleich
weiter
Faktorisierung
eliminiert diese Eigenschaft
 
X  ::= Y X'
 
X::= w1
X::= w2
weiter
if-then und if-then-else
weiter

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel