Contextvrije grammatica

Uit testwiki
Naar navigatie springen Naar zoeken springen

Een contextvrije grammatica is een formele grammatica waarbij alle productieregels de volgende vorm hebben:

Vw

waarbij V een niet-terminaal symbool is en w een string, die mogelijk leeg is, met terminale en niet-terminale symbolen. Dit soort formele grammatica's worden contextvrij genoemd omdat de manieren waarop een niet-terminaal symbool kan worden herschreven onafhankelijk zijn van de context waarin het zich bevindt. Contextvrije grammatica's genereren contextvrije talen.

Contextvrije grammatica's worden veel gebruikt bij het beschrijven en ontwerpen van programmeertalen en compilers, waarbij vaak de notatietechnieken Backus-Naur form of EBNF worden gebruikt. Ze worden ook gebruikt voor het analyseren van de zinsbouw (syntaxis) van natuurlijke talen.[1]

Formele definitie

Een contextvrije grammatica G is een vier-tupel (V,Σ,R,S) met de eigenschappen

  • V is een eindige verzameling variabelen
  • Σ is het alfabet van de taal, een eindige verzameling symbolen
  • VΣ=, d.w.z. dat hetzelfde symbool niet zowel in V als Σ mag liggen
  • SV
  • R is een eindige deelverzameling van V×(VΣ)*

Daarin is (VΣ)* de Kleene-ster van VΣ, dat wil zeggen, de eindige rijtjes die uit elementen van VΣ bestaan.

De elementen van V worden de niet-terminale symbolen of variabelen genoemd. Dit zijn de hulpsymbolen die gebruikt worden bij het genereren van een zin. De elementen van Σ worden de terminale symbolen genoemd, het zijn de symbolen die voorkomen in een zin van de taal. Er geldt dat VΣ=. Het symbool S heet het startsymbool. De elementen van R worden productieregels genoemd en meestal geschreven in de vorm Aw, waarbij AV en w(VΣ)*. De grammatica G produceert via de productieregels uit R de formele taal L(G) van woorden bestaande uit de letters, symbolen uit het alfabet Σ.

Volgens de definitie geldt voor een productieregel Aw, dat A een niet-terminaal symbool is, dus niet omgeven door andere symbolen. Toepassing van de regel, waardoor A door w wordt vervangen, is dus onafhankelijk van de context.

Voorbeeld

Een eenvoudige contextvrije grammatica met twee productieregels is ({S},{a,b},R,S), met als productieregels R:

SaSb
Sab

Het enige niet-terminale symbool is S, dit is hierdoor ook het startsymbool, en de terminale symbolen zijn a en b. Via de afleiding

SaSbaaSbbaaabbb

kan bijvoorbeeld het woord aaabbb uit deze grammatica worden afgeleid. In het algemeen genereert de grammatica de niet-reguliere taal {anbn:n1}, dat wil zeggen alle tekenreeksen die uit een of meer a's gevolgd door precies evenveel b's bestaan.

Sjabloon:Appendix

  1. De generalized phrase structure grammar is een taalkundig model om zowel de syntaxis als de semantiek van natuurlijke talen te beschrijven. Een van de principes van het model is dat de syntaxis van een natuurlijke taal in vereenvoudigde vorm aan de hand van een contextvrije grammatica kan worden beschreven.