Hoe laat je zien dat een grammatica dubbelzinnig is?

Inhoudsopgave:

Hoe laat je zien dat een grammatica dubbelzinnig is?
Hoe laat je zien dat een grammatica dubbelzinnig is?
Anonim

"Als een grammatica ten minste 2 verschillende ontledingsbomen of afleidingen produceert, dan is de grammatica dubbelzinnig." Een andere regel: alle CFG (zonder nutteloze symbolen) met links-recursiviteit en rechts-recursiviteit voor dezelfde niet-terminal is ook dubbelzinnig.

Hoe weet je of een grammatica dubbelzinnig is?

Er wordt gezegd dat een grammatica dubbelzinnig is als er meer dan één meest linkse afleiding of meer dan één meest rechtse afleiding of meer dan één ontledingsboom voor de gegeven invoertekenreeks bestaat. Als de grammatica niet dubbelzinnig is, wordt deze ondubbelzinnig genoemd. Als de grammatica dubbelzinnig is, is het niet goed voor de compilerconstructie.

Wat is een voorbeeld van een dubbelzinnige grammatica?

In de informatica is een ambigue grammatica een contextvrije grammatica waarvoor een string bestaat die meer dan één meest linkse afleiding of ontledingsboom kan hebben, terwijl een ondubbelzinnige grammatica is een contextvrije grammatica waarvoor elke geldige tekenreeks een unieke meest linkse afleiding of ontledingsboom heeft.

Hoe bewijs je dat een contextvrije grammatica dubbelzinnig is?

3 antwoorden

  1. Alle CFG zonder nutteloze symbolen en met links en rechts recursie voor hetzelfde symbool, is dubbelzinnig. Algemeen: …
  2. Om dubbelzinnigheid te onderzoeken, moet je 2 meest linkse afleidingen vinden voor dezelfde string (of 2 meest rechtse afleidingen, of 2 afleidingsbomen).

Hoe los je dubbelzinnige grammatica op?

Methoden om dubbelzinnigheid te verwijderen-

  1. Door de grammatica te corrigeren.
  2. Door groeperingsregels toe te voegen.
  3. Door semantiek te gebruiken en de parse te kiezen die het meest logisch is.
  4. Door de voorrangsregels of andere contextgevoelige parseerregels toe te voegen.

Aanbevolen: