"As 'n grammatika ten minste 2 duidelike ontleedboom of afleidings produseer, dan is die grammatika dubbelsinnig." Nog 'n reël: alle CFG (sonder nuttelose simbole) met links-rekursiwiteit en regs-rekursiwiteit vir dieselfde nie-terminaal is ook dubbelsinnig.
Hoe weet jy of 'n grammatika dubbelsinnig is?
Daar word gesê dat 'n grammatika dubbelsinnig is as daar meer as een afleiding heel links of meer as een afleiding heel links of meer as een ontleedboom vir die gegewe invoerstring bestaan. As die grammatika nie dubbelsinnig is nie, word dit ondubbelsinnig genoem. As die grammatika dubbelsinnigheid het, is dit nie goed vir samestellerkonstruksie nie.
Wat is 'n dubbelsinnige grammatika, gee voorbeeld?
In rekenaarwetenskap is 'n dubbelsinnige grammatika 'n konteksvrye grammatika waarvoor daar 'n string bestaan wat meer as een mees linkse afleiding of ontleedboom kan hê, terwyl 'n ondubbelsinnige grammatika is 'n konteksvrye grammatika waarvoor elke geldige string 'n unieke afleiding heel links of ontleedboom het.
Hoe bewys jy dat 'n konteksvrye grammatika dubbelsinnig is?
3 antwoorde
- Alle CFG sonder nuttelose simbole en met links en regs rekursie vir dieselfde simbool, is dubbelsinnig. Oor die algemeen: …
- Om dubbelsinnigheid te ondersoek, moet jy 2 mees linkse afleidings vir dieselfde string vind (of 2 mees regs afleidings, of 2 afleidingsbome).
Hoe los jy dubbelsinnige grammatika op?
Metodes om dubbelsinnigheid te verwyder-
- Deur die grammatika reg te stel.
- Deur groeperingsreëls by te voeg.
- Deur semantiek te gebruik en die ontleding te kies wat die meeste sin maak.
- Deur die voorrangreëls of ander kontekssensitiewe ontledingsreëls by te voeg.