Einführung in die semantische Analyse des Quellprogramms

Werbung
WIRTSCHAFTSINFORMATIK
Westfälische
Wilhelms-Universität
Münster
WIRTSCHAFTS
INFORMATIK
Semantische Analyse und
attributierte Grammatiken
Sarah Al-Itaibi
Gliederung
WIRTSCHAFTS
INFORMATIK
1.
Einordnung der semantischen Analyse in die Phasen des
Übersetzers
2.
Einführung in die semantische Analyse des Quellprogramms
3.
Zentrale Aufgaben der semantischen Analyse
4.
Einführung in attributierte Grammatiken
5.
Auswertung semantischer Regeln
6.
Zusammenfassung
2
WIRTSCHAFTS
INFORMATIK
Einordnung der semantischen Analyse
in die Phasen des Übersetzers
Quellprogramm

Phasen des Übersetzers:
Lexikalische Analyse
Syntaxanalyse
Semantische Analyse
ZwischencodeErzeugung
Code-Optimierung
Code-Erzeugung
Zielprogramm
3
WIRTSCHAFTS
INFORMATIK
Einführung in die semantische Analyse
des Quellprogramms

Aufbau einer künstlichen Sprache erfolgt nach festen Regeln
(Syntax, Grammatik).

Wörter und Sätze besitzen wohldefinierte Bedeutungen
(Semantik).

Wichtige Aufgabe bei der Übersetzung:
- Beibehaltung des Bedeutungsgehaltes.

Beispiele aus der deutschen Sprache:
1. Der Hecht frisst die Forelle.
2. Das Plankton frisst den Hecht.

Die Wirkung eines Satzes ergibt sich aus seiner Bedeutung.
4
WIRTSCHAFTS
INFORMATIK
Einführung in die semantische Analyse
des Quellprogramms

Semantische Analyse überprüft, ob die Teile eines Programms
von der Bedeutung her zusammenpassen.

Beispiel:
- Überprüfung der Anzahl der Parameter bei Prozeduraufrufen.
- Typüberprüfung bei Zuweisungen:


Volumen := Fläche * Höhe
Quellprogramm wird auf semantische Fehler untersucht:
- Beispiel: Zuweisen eines Buchstabens an eine Integer-Variable
(Typkonflikt).
5
WIRTSCHAFTS
INFORMATIK
Einführung in die semantische Analyse
des Quellprogramms

Eingabe: Syntaxbaum.

Ergänzung des Syntaxbaums um semantische Informationen
(Attribute)  Bewerteter Syntaxbaum.

Verschmelzung von Syntaxanalyse und semantischer Analyse
 Übergabe eines Syntaxbaumes ist hinfällig.
6
WIRTSCHAFTS
INFORMATIK
Einführung in die semantische Analyse
des Quellprogramms

Unterscheidung zwischen statischer und dynamischer
semantischer Analyse.
1.
Statische semantische Analyse:
- Zur Übersetzungszeit
- Semantische Eigenschaften werden mit Hilfe des
-
Programmtextes bestimmt
Semantische Eigenschaften:

Deklaration jedes verwendeten Bezeichners

Abwesenheit von Doppeldeklarationen

Korrekte Verwendung jeder Variable entsprechend ihres
Datentyps
7
WIRTSCHAFTS
INFORMATIK
Einführung in die semantische Analyse
des Quellprogramms
2.
Dynamische semantische Analyse:
- Zur Laufzeit.
- Semantische Eigenschaften werden durch Ausführung des
Programms mit Eingabedaten herausgefunden
 Der Typ eines Ausdrucks wird erst bei der Auswertung, zur
Laufzeit, bekannt.
8
Zentrale Aufgaben der semantischen Analyse
WIRTSCHAFTS
INFORMATIK
1.
Bezeichneridentifikation:
- Zur Identifikation dienen Definitionen und Gültigkeitsregeln der
Programmiersprache.
- Definition: Einführung des Bezeichners als Benennung eines
Objektes.
- Aufgabe:

Zu jedem angewandten Auftreten des Bezeichners die
gültige Definition bestimmen.
- Jede Definition eines Bezeichners hat einen Gültigkeitsbereich.
9
Zentrale Aufgaben der semantischen Analyse
WIRTSCHAFTS
INFORMATIK
- Gültigkeitsbereich einer Definition ist der Abschnitt des
Quellprogramms, in dem Anwendungen des Bezeichners dieser
Definition zugeordnet werden.
- Gültigkeitsregeln bestimmen Gültigkeitsbereich.
- Beispiele für Gültigkeitsregeln:


Verdeckungsregel.
Keine Anwendung eines Bezeichners vor seiner Definition.
- Als Hilfsmittel dient die Symboltabelle.
- Charakteristische Fehlersituationen:


Unzulässige Mehrfachdefinitionen im gleichen Block.
Angewandte Bezeichner ohne gültige Definition.
10
Zentrale Aufgaben der semantischen Analyse
WIRTSCHAFTS
INFORMATIK
2.
Typüberprüfung:
- Typinformationen können bei der Codegenerierung benötigt
werden.
- Sicherstellung der Typkonsistenz eines Programms.
- Überprüfung der Typkonsistenz erfolgt durch einen bottom-up
Durchlauf des Baumes.
- Typanpassung von Ausdrücken.
11
Einführung in attributierte Grammatiken
WIRTSCHAFTS
INFORMATIK

Eine attributierte Grammatik ist die am häufigsten verwendete
Technik zur formalen Beschreibung von Übersetzungsprozessen.

Sie wurden von Knuth im Jahre 1968 eingeführt.

Definition:
Sie ist ein Quadrupel AG = (G, A, R, K) bestehend aus:
1. Einer kontextfreien Grammatik G = (VN, VT, P, S).
2. Einer endlichen Attributmenge A.
3. einer endlichen Menge semantischer Regeln R.
4. einer endlichen Menge von Kontextbedingungen K.


Jedem Symbol X aus VN  VT werden null oder mehr Attribute zugeordnet
Jeder Produktionsregel p aus P werden ebenfalls null oder mehr semantische
Regeln und Kontextbedingungen zugeordnet.
12
Einführung in attributierte Grammatiken
WIRTSCHAFTS
INFORMATIK

Folgendes Beispiel dient dem intuitiven Verständnis der attributierten
Grammatiken:
- Produktionsregel:
pOpr: Ausdruck  lOpd Opr rOpd
- Semantische Regel:
Ausdruck.Typ:= opr_identif(Opr.Symbol, lOpd.Type, rOpd.Type)
-
Ausschnitt eines bewerteten Syntaxbaumes:
Ausdruck
Typ
real
LOpd
Typ
integer
Symbol
+
pOpr
Typ
real
rOpd
Opr
13
Einführung in attributierte Grammatiken
WIRTSCHAFTS
INFORMATIK

Jedes Attribut hat einen Namen und einen Wert.

Attribute können repräsentieren: String, Zahl, Typ oder einen
Speicherplatz.

Attributarten:
1. Synthetisierte Attribute:




Werden bei der Erkennung eines Symbols erzeugt.
Wert errechnet sich aus den Werten der Attribute der
Nachfolgerknoten.
Lexikalischer Analysator bestimmt die synthetisierten Attribute der
Terminalsymbole.
Mittels dieser Attribute können semantischen Informationen von
den Blättern bis zur Wurzel weitergereicht werden.
14
Einführung in attributierte Grammatiken
WIRTSCHAFTS
INFORMATIK
2. Ererbte Attribute:





Werden einem Nichtterminalsymbol vor seiner Erkennung
mitgegeben.
Wert errechnet sich aus den Werten der Attribute des
Vorgängerknotens und/oder Geschwisterknoten.
Startsymbol hat keine ererbten Attribute.
Mittels dieser Attribute können semantische Informationen von den
Nachfolgern der Wurzel bis zu den Blättern vererbt werden.
Auswertung der Attribute:
- Code generieren.
- Informationen in einer Symboltabelle abspeichern.
- Fehlermeldungen ausgeben.
15
Einführung in attributierte Grammatiken
WIRTSCHAFTS
INFORMATIK

Kontextbedingungen:
- Sind Bedingungen der statischen Semantik für die Attribute.
- Beschreiben Beziehungen zwischen Attributen bzw. Elementen der
-
Sprache.
Zeitpunkt der Prüfung wird durch ihre Stellung in der Grammatikregel
festgelegt.
Ein Syntaxbaum repräsentiert ein übersetzbares Programm, wenn alle
Kontextbedingungen erfüllt sind.
Bedingung wird durch eine Relation zwischen Attributen ausgedrückt.
Zum Beispiel:
 „In einer Wertzuweisung müssen linke und rechte Seite vom selben
Typ sein“
- Beispiel:


Bedingung einer Sprache: „alle Variablen müssen explizit deklariert
sein“.
PROCEDURE P
VAR a, b : INTEGER
x := y
END P
16
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Bei der Auswertung muss der Syntaxbaum auf bestimmten
Wege durchlaufen werden und dabei müssen die
semantischen Regeln ausgewertet werden.

Sämtliche Attributwerte, von denen eine semantische Regel
oder Kontextbedingung abhängt, müssen berechnet sein, vor
Anwendung der Regel.

Bei zyklischen Abhängigkeiten zwischen Attributen können
deren Werte effektiv nicht berechnet werden.

Zu jedem Syntaxbaum, der Attribute enthält, gibt es einen
Abhängigkeitsgraphen.

Abhängigkeitsgraph zeigt die Abhängigkeit zwischen den
Attributen des Baumes, die sich aus den semantischen
Regeln ergeben.
17
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Attribute bilden Knoten des Graphen.

Gerichtete Kanten geben die in den semantischen Regeln
ausgedrückten Abhängigkeiten an.

Attributierte Grammatik heißt wohldefiniert, wenn die
Abhängigkeitsgraphen zu allen Syntaxbäumen zyklenfrei sind.

Ein Abhängigkeitsgraph setzt sich immer aus den
produktionslokalen Abhängigkeitsgraphen der angewandten
Produktionen zusammen.

Beispiel einer attributierten Grammatik zur Umrechnung von
Binärzahlen in Dezimalzahlen:
- Attribut v: berechneter Wert.
- Attribut r: Rang bzw. relative Position des BIT zum binären Punkt.
- Attribut l: Länge des Bit-String.
18
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK
Attribute Grammar Bin_to_Dec:
Nonterminals: {N, BIN, BIT}
Attributes: syn l with BIN domain int;
Syn v with N, BIN, BIT domain real;
Inh r with BIN, BIT domain int;
Production:
Semantik Functions:
1: N  BIN.BIN
N.v = BIN1.v + BIN2.v
BIN1.r = 0
BIN2.r = -BIN2.l
2: BIN  BIN BIT
BIN0.v = BIN1.v + BIT.v
BIN0.l = BIN1.l + 1
BIN1.r = BIN0.r + 1
BIT.r = BIN0.r
3: BIN  ε
BIN.v = 0
BIN.l = 0
4: BIT  1
BIT.v = 2BIT.r
5: BIT 0
BIT.v = 0
19
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Produktionslokale Abhängigkeitsgraphen:
Dp(1):
Dp(2):
N v
r BIN v l
r BIN v l
. r BIN v l
r BINv l
r BIT v
Dp(3):
Dp(4):
Dp(5):
r BIN v l
r BIT v
r BIT v
1
0
20
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Syntaxbaum mit Abhängigkeitsgraph zum Wort „10.01“:
N
r BIN v l
r BIN v l
r BIT v
v
.
r BIN v l
r BIN v l
r BIT v
0
r BIN v l
r BIT v
1
1
r BIN v l
r BIT v
0
21
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Auswertung erfolgt:
1. Nach erhalten des um die Attribute erweiterten Syntaxbaumes.
2. Parallel zur Syntaxanalyse, gesteuert durch den Parser.

Auswertungsschritte bei gegebenem Syntaxbaum:
1. Bildung des Abhängigkeitsgraphen und test auf Zyklenfreiheit.
2. Bestimmung der Auswertungsordnung (Besuchsfolge, topologische
Sortierung).
3. Auswertung der Attribute gemäß der Auswertungsordnung.

Findet die Auswertung währen der Syntaxanalyse statt, dann
ist die Auswertungsreihenfolge abhängig von der Reihenfolge,
in der die Knoten erzeugt werden.

Ordnung der Attribute im vorherigen Beispiel:
- Für BIN: l r v
- Für BIT: r v
22
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Auswertung des Beispiels:
1. Top-down Durchlauf, gefolgt von einem bottom-up Durchlauf zur
2.
3.
Auswertung von l.
Top-down Durchlauf zur Auswertung von r.
Bottom-up Durch lauf zur Berechnung von v.
N
(v = 2; l = 2;
r = 0)
(v = 2; l = 1;
r = 1)
BIN
BIN
(v = 2,25)
l = 2;
BIN (v = 0,25;
r = -2)
.
BIT
BIN
BIT
(v = 0; l = 1;
r = -1)
0
1
(v = 0;
r = 0)
BIN
BIT
(v = 0; l = 0;
r = 2)
(v = 0,25;
r = -2)
BIN
BIT
(v = 0; l = 0;
r = 0)
1
0
(v = 2;
r = 1)
(v = 0;
r = -1)
23
Auswertung semantischer Regeln
WIRTSCHAFTS
INFORMATIK

Syntaxgesteuerte Definition: Notation um semantische Regeln mit
Produktionsregeln zu verbinden.

Seiteneffekte in semantischen Regeln erlaubt, wie das Drucken eines
Wortes.

Beispiel:
- S-attributierte Definition
- L-attributierte Definition

Restriktion bei L-attributierten Definitionen:
- Jedes ererbte Attribut eines Knotens hängt nur von ererbten Attributen
des Vaterknotens und der linken Geschwisterknoten ab.
24
WIRTSCHAFTS
INFORMATIK
Zusammenfassung

Semantische Analyse notwendig um den Bedeutungsgehalt
beizubehalten.

Wichtigste Aufgaben der semantischen Analyse sind die
Typüberprüfung und die Bezeichneridentifikation.

Attributierte Grammatiken dienen der Verbreitung
semantischer Informationen in Syntaxbäumen.

Attributierte Grammatiken definieren, wie in einem beliebigen
Syntaxbaum alle Attribute berechnet werden können.

Auswertung der Attribute kann parallel zur Syntaxanalyse
erfolgen oder nach erhalt des attributierten Syntaxbaumes.
25
WIRTSCHAFTS
INFORMATIK
Vielen Dank für Ihre Aufmerksamkeit!
Haben Sie noch Fragen?
26
Herunterladen