# Schlüsselwort (Programmierung)

Ein Schlüsselwort (aus englisch keyword; zudem auch als reserviertes Wort bezeichnet) ist, in Programmiersprachen, ein Wort (englisch token), das eine durch die Definition dieser Programmiersprache bestimmte Bedeutung hat, und nicht als Name von Variablen oder Funktionen verwendet werden darf. Sämtliche reservierten Wörter sind dem Compiler der Programmiersprache bekannt und werden in der lexikalischen Analyse verwendet.
Schlüsselwörter sind das „Vokabular“ einer jeden Programmiersprache. Deshalb versucht man im Sinne der Erlernbarkeit die Anzahl gering zu halten. Man kann in entsprechenden Programmierlehrbüchern oder Internet für fast jede Sprache eine Übersicht, eine sogenannte Referenztabelle, finden.
Dabei ist anzumerken, dass die praktisch unendliche Vielfalt an Programmen und Anwendungen durch einen so relativ geringen Sprachumfang von selten über 50 Schlüsselwörtern realisiert werden kann.

## Weitere Abgrenzung

Ein Schlüsselwort ist ein Wort, das wie ein normales Wort „aussieht“, also die übliche lexikalische Syntax von Bezeichnern erfüllt – zum Beispiel eine Folge von Buchstaben –, aber nicht als Bezeichner verwendet werden darf. Zum Beispiel ist das Wort if üblicherweise ein Schlüsselwort, während x im Allgemeinen keines ist, so dass x = 1 eine gültige Zuweisung ist, if = 1 jedoch nicht.
Schlüsselwörter haben unterschiedliche Verwendungszwecke. So können Schlüsselwörter in den meisten Programmiersprachen in verschiedenen Kategorien zusammengefasst werden:
* Wörter, die für den Kontrollfluss verwendet werden, zum Beispiel if, else, switch, case, return, try, catch, finally, throw, while, for (siehe bedingte Anweisung und Verzweigung, Ausnahmebehandlung, Schleife, For-Schleife)
* Primitive Datentypen, zum Beispiel bool, int, long, double, float, char.
* Bestimme Werte von Datentypen, zum Beispiel true, false, null, this.
* In objektorientierten Programmiersprachen, zum Beispiel C#, C++ und Java, gibt es die Zugriffsmodifikatoren public, protected und private.
* Wörter, die verwendet werden, um Methoden, Klassen und andere Datentypen zu definieren, zum Beispiel class, interface, enum, struct, final, const, abstract, virtual, sealed.
Vergleicht man deren Referenzen mit Programmiersprachen wie C und deren Erweiterung C++ oder anderen höheren Programmiersprachen stellt man fest, dass es eine Reihe von Übereinstimmungen gibt.
Gerade Erweiterungen von Programmiersprachen greifen natürlich auf den Sprachumfang des Vorgängers zurück und erweitern diesen gegebenenfalls. Ein weiterer Grund für eine Vielzahl von immer wieder benutzen Schlüsselwörtern findet sich in der Geschichte der Programmiersprachen.
Die unterschiedlichen Definitionen sind klar, wenn eine Programmiersprache durch eine Kombination aus einem Tokenizer und einem Parser analysiert wird und die Syntax der Sprache durch eine lexikalische Grammatik für die Wörter und eine kontextfreie Grammatik der Produktionsregeln für die Phrasen erzeugt wird. Dies ist bei der Analyse moderner Programmiersprachen üblich, und in diesem Fall sind Schlüsselwörter eine Teilmenge reservierter Wörter, da sie von Bezeichnern auf Wortebene unterschieden werden müssen, um auf Phrasenebene syntaktisch unterschiedlich analysiert zu werden.
In diesem Fall werden Schlüsselwörter als Teil der lexikalischen Grammatik definiert und jeweils als separater Typ gekennzeichnet, der sich von Bezeichnern unterscheidet. In der herkömmlichen Notation werden die Schlüsselwörter if und then beispielsweise als Typen IF bzw. THEN tokenisiert, während x und y beide als Typbezeichner tokenisiert werden.