"Če slovnica ustvari vsaj 2 ločeni razčlenjevalni drevesi ali izpeljanki, potem je slovnica dvoumna." Drugo pravilo: vsi CFG (brez neuporabnih simbolov) z levo in desno rekurzivnostjo za isti neterminal so tudi dvoumni.
Kako veš, ali je slovnica dvoumna?
Za slovnico rečemo, da je dvoumna, če obstoj več kot ena skrajna leva izpeljava ali več kot ena skrajno desna izpeljava ali več kot eno razčlenjevalno drevo za dani vhodni niz. Če slovnica ni dvoumna, se imenuje nedvoumna. Če je slovnica dvoumna, potem ni dobra za konstrukcijo prevajalnika.
Kaj je dvoumna slovnica, navedite primer?
V računalništvu je dvoumna slovnica kontekstna slovnica, za katero obstaja niz, ki ima lahko več kot eno skrajno levo izpeljavo ali razčleni drevo, medtem ko je nedvoumna slovnica je slovnica brez konteksta, za katero ima vsak veljaven niz edinstveno skrajno levo izpeljavo ali drevo razčlenitve.
Kako dokažete, da je slovnica brez konteksta dvoumna?
3 odgovori
- Vsi CFG brez neuporabnih simbolov in z levo in desno rekurzijo za isti simbol so dvoumni. Na splošno: …
- Če želite raziskati dvoumnost, morate najti 2 skrajni levi izpeljavi za isti niz (ali 2 skrajni desni izpeljavi ali 2 drevesi izpeljank).
Kako rešiti dvoumno slovnico?
Metode za odstranjevanje dvoumnosti-
- S popravljanjem slovnice.
- Z dodajanjem pravil združevanja.
- Z uporabo semantike in izbiro razčlenitve, ki je najbolj smiselna.
- Z dodajanjem pravil prednosti ali drugih kontekstno občutljivih pravil razčlenjevanja.