Ein Scanner (auch als lexikalischer Analysator bezeichnet) in einem Compiler oder Interpreter muss den Text von Token aus mehreren wichtigen Gründen retten:
1. Fehlerberichterstattung: Wenn später im Kompilierungsprozess ein Fehler festgestellt wird (z. B. während der Analyse oder semantische Analyse), ermöglicht es dem Compiler, dass der ursprüngliche Text des Tokens informative Fehlermeldungen generiert. Die Meldung kann den genauen Speicherort des Fehlers im Quellcode durch Verweisen auf den Text des beleidigenden Tokens bestimmen. Ohne das Speichern des Textes wären Fehlermeldungen weitaus weniger hilfreich, was möglicherweise nur eine Zeilennummer oder einen Token -Typ angibt.
2. Symbol Tabelle Konstruktion: Der Scanner füttert häufig Informationen zu Kennungen (Variablen, Funktionen usw.) in die Symboltabelle. Der Text des Identifikator -Tokens (sein Name) ist wichtig, um Einträge in der Symboltabelle zu erstellen. Diese Tabelle verfolgt die Bedeutung und Eigenschaften von Identifikatoren im gesamten Programm.
3. Codegenerierung: In einigen Fällen kann der Text des Tokens direkt in den generierten Code (z. B. String -Literale) eingebettet sein. Der Scanner muss die RAW -String -Daten für spätere Zusammenstellungsstadien bereitstellen.
4 Einige Präprozessoren oder Makrosysteme benötigen den Text von Token, um Substitutionen oder andere Manipulationen vor dem Hauptkompilierungsprozess durchzuführen. Der Text eines Makros muss möglicherweise in der Präprozessorphase erweitert werden, sodass er erhalten bleibt.
5. Debugging- und Analyse -Tools: Wenn Sie einen Debugger oder ein statisches Analyse -Tool verwenden, hilft das Original -Token -Text bei der Verfolgung der Ausführung oder des Verständnisses der Programmstruktur erheblich.
Kurz gesagt, während der Scanner Token in Typen (Schlüsselwörter, Kennungen, Operatoren usw.) kategorisiert, wirft das Verwerfen des Textes selbst wichtige Informationen weg, die für nachfolgende Phasen der Zusammenstellung, Fehlerbehandlung und Programmverständnis erforderlich sind. Der Text ist entscheidend für die Bereitstellung einer Verbindung zwischen der abstrakten Darstellung des Programms (Tokens und ihren Typen) und dem konkreten Quellcode, den der Programmierer schrieb.