Informatik > Lexikon

Token

Bei der lexikalischen Analyse, der ersten Phase eines Compilers, wird nicht nur eine Rechtschreibprüfung des Quelltextes durchgeführt, sondern aus den Java-Anweisungen wird auch ein Tokenstrom erzeugt, mit dem dann der Parser, der zweite Teil des Compilers, arbeiten kann. Ein solcher Tokenstrom besteht aus einer endlichen Abfolge von Token.

Ein Token beinhaltet zwei Informationen

Um welche Art von Zeichen handelt es sich überhaupt?

Die double-Zahl 17.45 wird beispielsweise vom Lexer in das Token "Zahl" umgewandelt, während der Bezeichner "alter" in das Token "Variable" umgewandelt wird.

Eine Java-Anweisung wie

alter = 25;

würde dann vielleicht in den Tokenstrom

Variable -> Zuweisung -> Zahl -> Semikolon

umgewandelt.

Mit diesem Tokenstrom könnte der Parser dann die syntaktische Korrektheit des Java-Befehls

alter = 25;

überprüfen.

Aber ein Token hat eine zweite Komponente, nämlich den Wert. Es ist ja nicht so, dass der Compiler den tatsächlichen Wert der Variable vergessen darf. Bei der Codeerzeugung, also beim eigentlichen Übersetzungsvorgang, muss ja der Wert der Variable wieder auftauchen. Also wird dieser Wert als zweite Komponente in dem Token gespeichert.

Der oben erwähnte Tokenstrom sieht also in Wirklichkeit so aus:

Variable ("alter") -> Zuweisung -> Zahl (25) -> Semikolon

Die Token Zuweisung und Semikolon benötigen keine zweite Komponente, da sie eindeutig sind. Es gibt in Java nur einen Zuweisungsoperator und nur ein Semikolon. Variablen und Zahlen dagegen gibt es jede Menge.