Subdomein B4: Grammatica's

26 oktober 2020

Een grammatica is een set regels waarmee woorden gevormd kunnen worden uit basisbouwstenen. Die basisbouwstenen worden meestal 'alfabet' genoemd.

  • De elementen van een alfabet worden altijd letters genoemd, maar hoeven niet per se de 26 letters uit het westerse alfabet te zijn; het kunnen ook getallen of woorden zijn; of iets heel anders zoals kleuren.
  • Een woord is een combinatie van letters die volgens de regels van de grammatica achterelkaar zijn gezet.

Als we het over de grammatica van programmeertalen hebben dan bestaat het alfabet uit zowel woorden - onder andere woorden als ifthenelsefor en while – als leestekens zoals {}+: en =. De woorden van deze grammatica zijn dan statements zoals 'c = c + 1' en 'if c == 0 then c = -3'. Een uitdrukking als 'then c+= if 3 for' betstaat wel uit letters uit het alfabet maar is geen woord omdat de volgorde niet geldig is.

Grammatica's worden meestal gedefinieerd aan de hand van productieregels: regels waarmee alle geldige woorden kunnen worden geproduceerd. Er zijn verschillende manieren om de productieregels van een grammatica weer te geven. Een veelgebruikt formalisme is de zogenaamd BN-vorm, bijvoorbeeld: Straatnaam ::= Symbool | Symbool; Straatnaam.

Grammatica's kunnen ook met behulp van diagrammen worden weergegeven: zie het volgende voorbeeld van een grammatica voor woonadressen.

grammatica sub b4

Woorden die aan deze grammatica voldoen zijn onder andere:​

  • Beursstraat 10 6
  • Van Speijkstraat 12a
  • 2e Willemstraat 02
  • Postbus 24000

De volgende woorden kunnen niet door de grammatica worden gegenereerd en zijn dus (volgens de grammatica) ongeldige adressen:

  • Beursstraat 10-6
  • Van Speijkstraat a

​In dit voorbeeld wordt het alfabet gevormd door de letters A tot en met Z, a tot en met z, de cijfers 0 tot en met 9 en de spatie. Straatnaam, Huisnummer, Symbool, Cijfer en Letter zijn hulpsymbolen om de grammatica mee te beschrijven. Ze behoren niet tot het alfabet en (dus) niet tot de woorden van de taal. Daarom worden ze soms 'niet-terminale symbolen' genoemd, en de symbolen van het alfabet, in analogie hiermee, 'terminale symbolen'.​​