Sie wollen eine neue Programmiersprache entwickeln, für die Sie den originellen Arbeitstitel »Kaffee« gewählt haben. Inspiriert durch eine andere Programmiersprache beschließen Sie, in Kaffee eine Wenn-Dann-Anweisung einzubauen, zu der es natürlich auch eine syntaktische Regel geben muss. Hier ein erster Versuch: »Eine Wenn-Dann-Anweisung beginnt mit if. Dieses muss von einer öffnenden runden Klammer gefolgt werden. Zwischen if und der runden Klammer dürfen, müssen aber nicht, Leerzeichen stehen. Ebenfalls ist statt der Leerzeichen auch ein Zeilenumbruch (unter Umständen sogar mehrere) erlaubt. Und natürlich auch ein Tab-Zeichen und Kombinationen davon. Das Form-Feed-Zeichen ist übrigens erlaubt. Genau. Und dann überhaupt alles, was im Unicode-Standard als Whitespace-Zeichen bezeichnet wird. Das sollte es dann aber gewesen sein. Wobei, genaugenommen darf da auch ein Kommentar stehen. Muss aber nicht. Kann aber, wie schon gesagt. Ein Kommentar ist...« Wer Programmiersprachen etwas kennt, weiß, dass die nun folgende Erklärung zum Thema, was ein Kommentar genau sein darf, vermutlich mehrere Seite einnehmen würde, insbesondere wenn der Autor in diesem Stil versuchen würde zu erklären, wie verschachtelte Kommentare funktionieren.
Umgangssprachliche Beschreibungen der Syntax sind aus verschiedenen Gründen eher ungeeignet. (1) Sie sind oft eher länglich. (2) Sie sind oft ungenau und lassen noch einen gewissen »Interpretationsspielraum«. (3) Es ist völlig unklar, wie man eine solche umgangssprachliche Beschreibung dem Computer beibringt.
Formale Grammatiken, um die es in diesem Kapitel gehen soll, schlagen zwei Fliegen mit einer Klappe. Zum einen eignen sie sich recht gut, um zu beschreiben, wie syntaktisch korrekte Texte aussehen dürfen. So finden Sie beispielsweise im Java- oder C++-Standard ausführliche Grammatiken, die beschreiben, wie eben syntaktisch korrekte Java- oder C++-Programme aussehen. Zum anderen können aber auch Computer viel mit Grammatiken anfangen. Sie werden in späteren Veranstaltungen noch lernen, wie man automatisch eine Grammatik in ein Programm verwandeln kann, das Text auf »grammatikalische Korrektheit« prüft. Ein solcher automatische Umwandler ist YACC, was treffend für »yet another compiler compiler« steht.