"Jei gramatika sukuria bent 2 skirtingus analizės medį arba darinius, gramatika yra dviprasmiška." Kita taisyklė: visi CFG (be nenaudingų simbolių) su kairiuoju ir dešiniuoju rekursyvumu tam pačiam ne terminalui taip pat yra dviprasmiški.
Kaip žinoti, ar gramatika dviprasmiška?
Gramatika laikoma dviprasmiška, jei egzistuoja daugiau nei vienas kairiajame krašte esantis išvedimas arba daugiau nei vienas išvedimas dešinėje arba daugiau nei vienas analizės medis nurodytai įvesties eilutei. Jei gramatika nėra dviprasmiška, ji vadinama vienareikšmiška. Jei gramatika yra dviprasmiška, ji nėra tinkama kompiliatoriaus kūrimui.
Kas yra dviprasmiška gramatika, pateikite pavyzdį?
Kompiuterių moksle dviprasmiška gramatika yra nekontekstinė gramatika, kuriai egzistuoja eilutė, kuri gali turėti daugiau nei vieną kairėje esantį išvestinį arba analizavimo medį, o gramatika yra vienareikšmė. yra bekontekstinė gramatika, kurios kiekviena tinkama eilutė turi unikalų kairėje esantį išvedimą arba analizavimo medį.
Kaip įrodyti, kad gramatika be konteksto yra dviprasmiška?
3 atsakymai
- Visos CFG be nenaudingų simbolių ir su to paties simbolio kairiąja ir dešiniąja rekursija yra dviprasmiškos. Apskritai: …
- Norėdami ištirti dviprasmiškumą, turite rasti 2 tos pačios eilutės kairėje pusėje esančius išvedžiojimus (arba 2 dešiniuosius išvestinius, arba 2 išvestinių medžius).
Kaip sprendžiate dviprasmišką gramatiką?
Neaiškumo pašalinimo metodai-
- Pataisydami gramatiką.
- Pridėjus grupavimo taisykles.
- Naudodami semantiką ir pasirinkdami prasmingiausią analizę.
- Pridedant pirmumo taisykles arba kitas kontekstui jautrias analizavimo taisykles.