Semantische Analyse
Die semantische Analyse ist die Phase des Kompilierungsprozesses, die nach der syntaktischen Analyse und vor der Codegenerierung durchgeführt wird und in der die Korrektheit eines Programms auf der Ebene der Bedeutung der einzelnen Anweisungen und des Programms als Ganzes überprüft wird. Die semantische Analyse arbeitet in der Regel mit dem Syntaxbaum, dem sie zusätzliche Informationen, wie z. B. Werttypen, hinzufügt.
Zweck der semantischen Analyse
Die Hauptaufgabe bei der semantischen Analyse besteht darin, zu prüfen, ob ein Programm eindeutig kompiliert werden kann. Bestimmte Konstruktionen sind zwar nach der Grammatik der Sprache zulässig, aber möglicherweise nicht korrekt. Bei der semantischen Analyse lassen sich drei Tätigkeitsbereiche unterscheiden:
- Typprüfung, d.h. Prüfung der Korrektheit der Typen an jedem Knoten des Programmsyntaxbaums (einschließlich der Prüfung, ob Bezeichner deklariert wurden);
- Validierung von Anweisungen, d. h. Überprüfung, ob Anweisungen und Ausdrücke in dem Kontext, in dem sie verwendet werden, sinnvoll sind,
- Überprüfung von Namen, d.h. Überprüfung, ob Namen Funktionen, Labels und andere Konstrukte der Programmiersprache eindeutig identifizieren.
Typprüfung
Die Typprüfung zielt darauf ab, die Korrektheit von Typen in Sprachkonstrukten wie z.B.:
- Zuweisungen – der Typ des zugewiesenen Wertes muss mit dem Typ des Elements übereinstimmen, dem wir zuweisen,
- arithmetische Operationen – die Werte, auf die ein arithmetischer Operator angewendet wird, müssen mit dem Typ des Operators übereinstimmen,
- Funktionsaufrufe – die Parametertypen einer aufgerufenen Funktion müssen mit den deklarierten Typen übereinstimmen,
- Verweise auf Datensatzfelder – der referenzierte Datensatz muss ein Feld mit dem angegebenen Namen haben,
- Aufrufe von Objektmethoden – das Objekt muss eine Instanz der Klasse sein, die die aufgerufene Methode enthält.
Prüfung der Korrektheit von Anweisungen
Mit „Korrektheit der Anweisung“ ist jede andere Korrektheit der Anweisung gemeint, die über die Überprüfung von Typen und Bezeichnern hinausgeht. Die Prüfung umfasst:
- Überprüfung des L-Wertes,
- Kontrolle des Kontrollflusses,
- Objekt- und Klassenzugriffskontrolle,
- Namensprüfung
Benötigen Sie Hilfe bei Ihrer semantischen Analyse für Ihr Projekt? Wir von Lemundo kennen uns damit bestens aus. Kontaktieren Sie uns noch heute!