Normalne oblike gramatik

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

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)


Zunanje povezave

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja