27.02.2013 Aufrufe

Kontextfreie Sprachen Kontextfreie Grammatiken Definition 13.1 ...

Kontextfreie Sprachen Kontextfreie Grammatiken Definition 13.1 ...

Kontextfreie Sprachen Kontextfreie Grammatiken Definition 13.1 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Elimination von nutzlosen Symbolen<br />

Sei G = (!, N, P, S) eine kontextfreie Grammatik.<br />

X ! ! " N ist nützlich in G, wenn es eine Ableitung<br />

S ) * uXv ) * w mit w ! !* gibt,<br />

d.h. X tritt in einer Satzform einer Ableitung von S zu einer terminalen Zeichenkette<br />

auf. Wenn X nicht nützlich ist, dann bezeichnen X wir als nutzlos.<br />

1. Die Sprache L(G) ist durch die Ableitungen von S zu terminalen Zeichenketten<br />

gegeben (Def. 13.4). Wenn X nutzlos ist, kommt X in keiner Ableitung von S zu<br />

einer terminalen Zeichenkette vor.<br />

Also kann X aus der Grammatik entfernt werden, d.h. X wird aus ! " N entfernt,<br />

und alle Regeln, in denen X auftritt, werden ebenfalls entfernt.<br />

2. Es gibt zwei Eigenschaften, die die Nützlichkeit eines Symbols ausmachen:<br />

a. X ist erzeugend, wenn X ) * w für ein w ! !*.<br />

[Da a ) * a für alle a ! !, sind alle terminalen Symbole erzeugend.]<br />

b. X ist erreichbar, wenn es eine Ableitung S ) * uXv gibt,<br />

mit u,v ! (! " N)*.<br />

# Wir werden zuerst alle nicht-erzeugenden und dann alle nicht-erreichbaren<br />

Symbole eliminieren.<br />

FGI-1 Habel / Eschenbach Kap 13 <strong>Kontextfreie</strong> <strong>Sprachen</strong> & <strong>Grammatiken</strong> [31]<br />

Elimination von nutzlosen Symbolen: Beispiel<br />

Grammatik G ist gegeben durch die Regeln:<br />

S # AB | a A# b<br />

Eliminationsreihenfolge<br />

nicht-erzeugende " nicht-erreichbare<br />

Bestimmung der erzeugenden Symbole<br />

• S, A wegen S ) * a bzw. A ) * b<br />

a, b da Terminalsymbole<br />

Elimination der nicht-erzeugenden<br />

Symbole: B<br />

• S # a A# b<br />

Bestimmung der erreichbaren Symbole<br />

• S, a wegen S ) * a<br />

Elimination der nicht-erreichbaren<br />

Symbole: A, b<br />

• S # a<br />

nicht-erreichbare " nicht-erzeugende "<br />

Bestimmung der erreichbaren Symbole<br />

• S, a wegen S ) * a<br />

A, B, b wegen S ) * AB ) * bB<br />

Keine Elimination nicht-erreichbarer<br />

Symbole notwendig<br />

Bestimmung der erzeugenden Symbole<br />

• S, A wegen S ) * a bzw. A ) * b<br />

a, b da Terminalsymbole<br />

Elimination der nicht-erzeugenden<br />

Symbole: B<br />

• S # a A# b<br />

Enthält zwei nutzlose Symbole<br />

FGI-1 Habel / Eschenbach Kap 13 <strong>Kontextfreie</strong> <strong>Sprachen</strong> & <strong>Grammatiken</strong> [32]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!