Inleiding

We hebben hiervoor rekenen beschreven als “spelen met vormen”.
In de voorbeelden van eindige automaten zijn de vormen enkelvoudige symbolen, of reeksen van symbolen - bijvoorbeeld een reeks van invoer- of uitvoersymbolen.

Gewoonlijk communiceren mensen (en computers) niet op basis van willekeurige reeksen symbolen, maar met een taal die structuur aanbrengt in deze reeks.
Deze structuur speelt een belangrijke rol bij het vaststellen van de betekenis.

In een natuurlijke taal gebruik je geen losse woorden, maar combineer je woorden tot zinnen die voldoen aan de regels van (bijvoorbeeld) het Nederlands.

Voorbeeld: je kunt de woorden “de”, “hond”, “man”, “bijt” tot veel verschillende reeksen woorden combineren. Maar enkele van deze reeksen woorden vormen een Nederlandse zin. Bovendien hangt de betekenis van deze zinnen af van de volgorde van de woorden.

In dit gedeelte gaan we in op het gebruik van grammatica’s voor het beschrijven van talen - zowel van formele talen (zoals programmeertalen) als van stukjes natuurlijke taal. Een taal is hier een (mogelijk oneindige) verzameling zinnen.
Een zin is een eindige reeks symbolen of woorden. (Dit begrip woord moet je hier ruim interpreteren: ook (lees)tekens kunnen daaronder vallen.
Bij programmeertalen heb je bijvoorbeeld te maken met tekens als “(“, “;”, “=” en “*”.)