Normalne oblike gramatik
Iz E-študij, proste zakladnice študentskega znanja
Normalna oblika po Chomskem
Oblika:
A → BC
A → α
ne more generirati prazne besede
Naj bo G=<V,T,P,S> KNG → ∃G' v NOC(Normalna Oblika po Chomskem),tako da L(G')=L(G)\{ε}
Postopek
- odpravljanje ε-produkcij (A → ε )
- odpravljanje enotskih produkcij (A → B)
- odpravljanje nekoristnih simbolov
- ki se ne razvijejo v niz končnih simbolov
- ki niso dosegljivi iz začetnega simbola
- karkoli neuporabnega najdemo, brišemo vse produkcije, kjer se pojavi neuporaben simbol
- spemenimo v obliko po Chomskem z dodajanjem novih spremenljivk
- ponavljajoče spremenljivke moramo tudi zamenjati z novimi (npr A → XBB gre v A → XC, C → BB)
- v končne simbole spremenimo z uvedbo dodatnih spremenljivk (npr A → aB gre v A → QB in Q → a)
- ne smemo imeti večje dolžine produkcij kot 2!
Normalna oblika po Greibachovi
Oblika:
- Ai → aAj ; i ≤ j
- desno rekurzivna oblika
- izhajamo iz oblike po Chomskem
Postopek
0. korak
- Preimenujemo spremenjlivke v A1,A2,A3,... ( pomenbno kako označimo, saj si s s pravilno izbiro močno olajšamo nadaljne delo)
1. korak
- dvignemo produkcije:
- če je Ai → Ajα in i>j zamenjamo Ai → Ajα z Ai → βα za vsak β:Aj→β
- (z besedo) dvignemo produkcije tako da velja oblika po Greibach-ov (zamenjamo produkcije na prvem mestu); rekurzijo, kjer se pojavi pustimo
2. korak
- Leva rekurzija v desno
- če Ai→Aiα zamenjaj Aiα z Bi → α|αBi
- za vsako Ai→Xα pri X≠Ai dodaj Ai→XαBi
- (z besedo) rekurzijo popravimo tako, da dodamo B -> ostanek(α)|ostanek(α)B, v A pa pripišemo vse kombinacije z B na koncu
3. korak
- spremenimo vse produkcije v obliko A → aα, kjer α lahko vsebuje končne simbole
- (z besedo) poskrbimo da je povsod na prvem mestu končni simbol)
4. korak
- substitucija višjih spremenjljivk; spremenimo α tako, da ne vsebuje končnih simbolov
- (z besedo) uvedemo dodatne spremenjljivke, da imamo samo na začetku končni simbol)