Screener (engl.; dt. „Sieber“) bezeichnet in der Informatik eine Komponente eines Compilers. Er erhält vom Scanner eine Abfolge von Tokens zusammen mit ihrem Typ und verarbeitet diese nach vorgegebenen Regeln weiter.
- Leerraum und Kommentare werden meist komplett entfernt, da sie für die weitere Verarbeitung des Programms nicht mehr erforderlich sind. Eine Ausnahme stellen Sprachen wie Haskell oder Python dar, die Einrückung als syntaktisches Element verwenden.
- Compiler-Anweisungen (Pragmas) sind kein Teil des Programms und werden separat an den Compiler weitergegeben.
- Schlüsselworte sind Symbole mit besonderer Bedeutung in der jeweiligen Programmiersprache (zum Beispiel
begin, end, var, int
) und werden vom Screener erhalten.
- Variablennamen wären in der weiteren Verarbeitung als Identifizierer zu ineffizient. Sie werden deshalb in eindeutige Zahlen codiert. Da der Compiler trotzdem auf die externen Namen Zugriff haben muss, werden sie in einer Datenstruktur gespeichert, die durch die vergebenen Codes effizient adressiert werden kann.
Die Ausgabe des Screeners wird dem Parser als Eingabe übergeben.
Der Screener wird meistens zusammen mit dem Scanner in ein Modul kombiniert, er kann aber auch als separate Softwarekomponente ausgeführt werden. Dennoch sollte er als eigenes Konzept aufgefasst werden. Der Screener sollte möglichst unabhängig von der Zielsprache ausgelegt werden.
In der Regel wird der Screener als ein einfacher Zustandsautomat implementiert.
Literatur
- Reinhard Wilhelm, Helmut Seidl, Sebastian Hack: Compiler Design. Springer, Berlin/Heidelberg 2013, ISBN 978-3-642-17540-4, S. 4–5, 11–12, 36–39, doi:10.1007/978-3-642-17540-4.
- Franklin L. DeRemer: Lexical Analysis. In: Friedrich L. Bauer, Jürgen Eickel (Hrsg.): Compiler Construction (= Gerhard Goos, Juris Hartmanis [Hrsg.]: Lecture Notes in Computer Science. Nr. 21). Springer, Heidelberg 1974, ISBN 3-540-06958-5, S. 109–111, doi:10.1007/978-3-662-21549-4.