Lexikalischer Scanner
Ein lexikalischer Scanner ist ein Computerprogramm(-teil) zur Zerlegung einer Eingabe in eine Folge von logisch zusammengehörigen Einheiten (Tokens) - man spricht auch von der lexikalischen Analyse. Typischerweise geschieht die Zerlegung nach den Regeln einer regulären Grammatik und der Scanner ist als endlicher Automat realisiert.
Ein Scanner wird meist als Teil eines Parsers genutzt. Er erkennt dabei innerhalb der Eingabedatei oder des Eingabedatenstroms z.B. Schlüsselwörter, Bezeichner, Operatoren, Zahlen und Zeichenketten. Als Einheit erkannte Zeichenfolgen (Tokens) werden mit ihrem Typ markiert zurückgeliefert. Der eigentliche Parser arbeitet dann auf den Tokens als atomare Symbole (so genannte Terminalsymbole).
Ein Scanner kann einen separaten so genannten Screener benutzen, um Whitespace und Kommentare zu entfernen. Häufig wird das jedoch gleich von der zugrunde liegenden Grammatik erledigt.
Programme zur Erzeugung
Wenn man eine formale Beschreibung der zu erkennenden Lexik angeben kann, lässt sich ein lexikalischer Scanner automatisch generieren. Das in UNIX-Betriebssystemen enthaltene Programm Lex sowie das von der Free Software Foundation 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 Parser-Generator.
