Suche Home Einstellungen Anmelden Hilfe  

2.3.3 Greibach-Normalform (GNF):

Wie sieht ein Ableitungsbaum mit Linksrekursion aus? Welche Alternative es gibt, verdeutlicht die Animation. Die hier verwendete Beispielgrammatik soll dabei folgende Regeln enthalten:

    A gehtüberin A b c
    A gehtüberin A c b
    A gehtüberin a

Wiederholen Schritt 1 (Linksableitung von 'acbcbbc')

Wiederholen Schritt 2 (Rechtsableitung mit modifizierten Regeln)

Animation: Beseitigung der Linksrekursion durch Rechtsrekursion für 'acbcbbc'

Betrachten Sie nochmals die entstehenden Regeln aus dem Beispiel genauer.

    A gehtüberin a C   und
    A gehtüberin A B C
Die erste in perfekt. Sie ist bereits eine gültige Regel des GNF-Formats. Welche Probleme hingegen bereitet die zweite Regel?

Was passiert, wenn man versucht, das A der rechten Regelseite nach dem auf Seite 3 vorgestellten Verfahren zu ersetzen?

Problem der Linksrekursion
In dem vorgestellten Verfahren wurde der Ersetzungsschritt eines Nichtterminals z.B. A vorweggenommen, indem anstelle dieses Nichtterminals jeweils die rechte Regelseite einer A-Regel eingefügt wird. Das muss für alle A-Regeln wiederholt werden.
Eine linksrekursiven Regel führt bei diesem Ersetzungsvorgang gerade dieses Nichtterminal - in unserem Fall A - wieder ein; der Vorgang findet kein Ende.

Welche Lösungsmöglichkeiten bestehen?

Beseitigung der Linksrekursion
Gegeben eine Grammatik G; seien
A gehtüberin A α1 | ... | A αn alle linksrekursive A-Regel und
A gehtüberin β1 | ... | βm die restlichen A-Regeln. G' ist eine modifizierte Grammatik ohne Linksrekursion, wobei alle A-Regeln durch folgende Regeln ersetzt werden.

  1. A gehtüberin βi | βi B (1<=i<=m)
  2. B gehtüberin αi | αi B (1<=i<=n)
(B ist ein neues, nicht in G vorhandenes Nichtterminal.)
Das Prinzip wird durch die Animation links verdeutlicht.

Mit den nun vorgestellten Hilfsverfahren - Beseitigung der Linksrekursion und Vorwegnahme eines Ableitungsschrittes durch Regelzusammenzug - ist es möglich, eine Chomsky-Normalform-Grammatik in Greibachnormalform umwandeln.
Probieren Sie ein wenig, z.B. an der Beispielgrammatik für die CNF. Den Beweis und das komplette Verfahren finden Sie u.a. in Hopcroft & Ullman (1994).

Regelzusammenzug 1   2   3   4   5   6 Schleifenlemma

Benutzer: Gast • Besitzer: senn • Zuletzt geändert am: