"Pokud gramatika produkuje alespoň 2 odlišné strom analýzy nebo odvozeniny, pak je gramatika nejednoznačná." Další pravidlo: všechny CFG (bez zbytečných symbolů) s levou rekurzivitou a pravou rekurzivitou pro stejný neterminál jsou také nejednoznačné.
Jak poznáte, že je gramatika nejednoznačná?
O gramatice se říká, že je nejednoznačná, pokud existuje více než jedna derivace zcela vlevo nebo více než jedna derivace zcela vpravo nebo více než jeden strom analýzy pro daný vstupní řetězec. Pokud gramatika není nejednoznačná, pak se nazývá jednoznačná. Pokud je gramatika nejednoznačná, pak to není dobré pro konstrukci kompilátoru.
Jaký příklad je nejednoznačná gramatika?
V informatice je nejednoznačná gramatika bezkontextová gramatika, pro kterou existuje řetězec, který může mít více než jednu levou derivaci nebo strom analýzy, zatímco jednoznačná gramatika je bezkontextová gramatika, pro kterou má každý platný řetězec jedinečnou levou derivaci nebo strom analýzy.
Jak dokážete, že bezkontextová gramatika je nejednoznačná?
3 odpovědi
- Všechny CFG bez zbytečných symbolů a s levou a pravou rekurzí pro stejný symbol jsou nejednoznačné. Obecně: …
- Abyste prozkoumali nejednoznačnost, musíte najít 2 derivace zcela vlevo pro stejný řetězec (nebo 2 derivace zcela vpravo nebo 2 derivační stromy).
Jak řešíte nejednoznačnou gramatiku?
Metody k odstranění nejednoznačnosti-
- Opravou gramatiky.
- Přidáním pravidel seskupování.
- Pomocí sémantiky a výběru analýzy, která dává největší smysl.
- Přidáním pravidel přednosti nebo jiných pravidel analýzy citlivých na kontext.