Tokenizer

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein Tokenizer (auch: lexikalischer Scanner, kurz Lexer) ist ein Computerprogramm zur Zerlegung von Plain text (zum Beispiel Quellcode) in Folgen von logisch zusammengehörigen Einheiten, so genannte Token (engl. tokens). Als solcher ist er oft Teil eines Compilers.

Grundlagen[Bearbeiten]

Bei der Zerlegung einer Eingabe in eine Folge von logisch zusammengehörigen Einheiten, in die so genannten Token, spricht man auch von lexikalischer Analyse. Typischerweise geschieht die Zerlegung nach den Regeln einer regulären Grammatik, und der Tokenizer ist als endlicher Automat realisiert. Ein Verfahren zur Überführung eines regulären Ausdrucks in einen endlichen Automaten ist das Berry-Sethi-Verfahren.

Ein Tokenizer ist Bestandteil eines Parsers und von vorverarbeitender Funktion. Er erkennt innerhalb der Eingabe Schlüsselwörter, Bezeichner, Operatoren und Konstanten. Diese bestehen aus mehreren Zeichen, bilden aber eine logische Einheit, sogenannte Token. Erkannte Token werden mit ihrem jeweiligen Typ zurückgeliefert. Token sind für den Parser sozusagen die atomaren Einheiten, die er verarbeiten können muss und werden deshalb auch Terminalsymbole genannt.

Ein Tokenizer kann einen separaten, sogenannten Screener benutzen, um Leerraum und Kommentare zu entfernen und so die lexigrafische Analyse der Eingabedaten vereinfachen. Dies muss jedoch von der zugrunde liegenden Grammatik abgedeckt sein.

Mittels erweiterte Backus-Naur-Form (EBNF) kann ein Tokenizer formal spezifiziert werden.

Ein typisches Beispiel für eine Spezifikationssprache bzw. einen Tokenizer-Generator ist Lex (Informatik), mit dem der einem Tokenizer entsprechende C-Code generiert werden kann.

Programme zur Erzeugung[Bearbeiten]

Wenn man eine formale Beschreibung der zu erkennenden Lexik angeben kann, lässt sich ein Tokenizer automatisch generieren. Das in Unix-Betriebssystemen enthaltene Programm Lex sowie das als freie Software entwickelte Flex erfüllen genau diese Funktion. Aus der formalen Beschreibung generieren diese Programme eine Funktion, die aus einem eingegebenen Text das jeweils nächste Token ermittelt und zurückgibt. Diese Funktion findet dann meist in einem Parser Verwendung. Siehe auch Parsergenerator.

Weblinks[Bearbeiten]