"Ja gramatika rada vismaz 2 atšķirīgus parsēšanas kokus vai atvasinājumus, tad gramatika ir neskaidra." Vēl viens noteikums: visi CFG (bez bezjēdzīgiem simboliem) ar kreiso rekursivitāti un labo rekursivitāti vienam un tam pašam terminālam ir arī neskaidri.
Kā zināt, vai gramatika ir neskaidra?
Gramatika tiek uzskatīta par neviennozīmīgu, ja ir vairāk nekā viens atvasinājums vistālāk pa kreisi vai vairāk nekā viens labējais atvasinājums, vai vairāk nekā viens parsēšanas koks dotajai ievades virknei. Ja gramatika nav neviennozīmīga, tad to sauc par viennozīmīgu. Ja gramatika ir neskaidra, tad tā nav piemērota kompilatoru veidošanai.
Kas ir neviennozīmīga gramatika, sniedziet piemēru?
Datorzinātnēs neviennozīmīga gramatika ir bezkonteksta gramatika, kurai pastāv virkne, kurai var būt vairāk nekā viens kreisais atvasinājums vai parsēšanas koks, bet viennozīmīga gramatika ir bezkonteksta gramatika, kurā katrai derīgajai virknei ir unikāls kreisās malas atvasinājums vai parsēšanas koks.
Kā pierādīt, ka bezkonteksta gramatika ir neskaidra?
3 atbildes
- Visi CFG bez bezjēdzīgiem simboliem un ar kreiso un labo rekursiju vienam un tam pašam simbolam ir neskaidri. Kopumā: …
- Lai pārbaudītu neskaidrības, vienai virknei jāatrod 2 vistālāk kreisās atvasinājumi (vai 2 galēji labās puses atvasinājumi, vai 2 atvasinājumu koki).
Kā atrisināt neskaidras gramatikas?
Neskaidrības novēršanas metodes-
- Izlabojot gramatiku.
- Pievienojot grupēšanas noteikumus.
- Izmantojot semantiku un izvēloties visjēdzīgāko parsēšanu.
- Pievienojot prioritātes kārtulas vai citus kontekstjutīgus parsēšanas noteikumus.