KNF Linksrekursion < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 18:36 Fr 19.02.2010 | Autor: | RalU |
Aufgabe | Um direkte Linksrekursion in einer KNF zu eliminieren, gibt es folgende Regeln:
1) Produktionen ordnen:
A->A [mm] \alpha_{1} [/mm] | A [mm] \alpha_{2} [/mm] | ... | A [mm] \alpha_{k} [/mm] | [mm] \beta_{1} [/mm] | [mm] \beta_{2} [/mm] | ... | [mm] \beta_{m}
[/mm]
2) Folgende Ersetzung durchführen:
A -> [mm] \beta_{1} [/mm] A' | [mm] \beta_{2} [/mm] A' | ... | [mm] \beta_{m} [/mm] A'
A'-> [mm] \alpha_{1} [/mm] A' | [mm] \alpha_{2} [/mm] A' | ... | [mm] \alpha_{k} [/mm] A' | [mm] \varespilon [/mm] |
Für die linksrekursive Produktion S -> S + K|K
würde bei Anwendung dieser Regeln folgndes rauskommen:
S -> KS'
S' -> + S' | [mm] \varepsilon
[/mm]
Wenn ich nun die neuen Produktionsregeln verwende, muss ich aber bei Ableitung von S mein K in jedem Fall zuerst ausführen. Das mußte ich vorher (bei der alten linksrekursiven Produktion) ja nicht. Ist das dann nicht eigentlich fehlerhaft? Was ist eigentlich der Grund, warum ich das K vor mein S' setzen muss (bei S -> KS') ?
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:20 So 21.02.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|