31.01.2014 Aufrufe

Kontextfreie Sprachen & Kellerautomaten

Kontextfreie Sprachen & Kellerautomaten

Kontextfreie Sprachen & Kellerautomaten

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

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> & Grammatiken [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 nicht-erreichbare " nicht-erzeugende "<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 />

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> & Grammatiken [32]

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!