Semantische Analyse und attributierte Grammatiken

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Vorlesung Compilertechnik Sommersemester 2008
Vorlesung Compilertechnik Sommersemester 2009 Kontextprüfung M. Schölzel.
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
Variablen und Datentypen
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
8. Formale Sprachen und Grammatiken
Imperative Programmierung
der Universität Oldenburg
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Kapitel 4 Syntaktische Analyse: LR Parsing.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Baumstrukturen Richard Göbel.
Java: Grundlagen der Objektorientierung
Algorithmentheorie 04 –Hashing
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
Fakten, Regeln und Anfragen
XML Standardisierungen und Abfragesprachen
Beispiele für Ausdrucksalgebren
Agenda Motivation Formale Sprachen Compiler Compilerentwicklung
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Grundlegende Analysen & Zwischendarstellungen
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Von der Sprache zum Programm
FH-Hof Analyse des R-Baums - Teil 1 Richard Göbel.
Programmiersprachen II Integration verschiedener Datenstrukturen
Eignung von Grammatik-basiertem Layout für grafische Programmiersprachen Seminar Layout-Algorithmen für Graphen Institut für Informatik Christian-Albrechts.
RDF MT Resource Description Framework Model Theory © 2002 by Emir Blažević
Input / Wahrnehmung Control / Bewusstsein Output / Motorik Information.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Java Programmierung.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Dieser nicht Fehler finden Algorithmus enthält einfach einen gravierenden welcher zu ist.
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
Noam CHOMSKY, Sheila GREIBACH
PHP: Operatoren und Kontrollstrukturen
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
Mensch – Maschine - Kommunikation
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
7. Formale Sprachen und Grammatiken
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Kapitel 4:Die Chomsky Hierarchie
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Struktur-Funktions-Modelle von Pflanzen
Datentypen: integer, char, string, boolean
Struktur-Funktions-Modelle von Pflanzen
Implementieren von Klassen
 Präsentation transkript:

Semantische Analyse und attributierte Grammatiken Sarah Al-Itaibi

Gliederung Einordnung der semantischen Analyse in die Phasen des Übersetzers Einführung in die semantische Analyse des Quellprogramms Zentrale Aufgaben der semantischen Analyse Einführung in attributierte Grammatiken Auswertung semantischer Regeln Zusammenfassung

Einordnung der semantischen Analyse in die Phasen des Übersetzers

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: Der Hecht frisst die Forelle. Das Plankton frisst den Hecht. Die Wirkung eines Satzes ergibt sich aus seiner Bedeutung.

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).

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.

Einführung in die semantische Analyse des Quellprogramms Unterscheidung zwischen statischer und dynamischer semantischer Analyse. 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

Einführung in die semantische Analyse des Quellprogramms 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.

Zentrale Aufgaben der semantischen Analyse 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.

Zentrale Aufgaben der semantischen Analyse 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.

Zentrale Aufgaben der semantischen Analyse 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.

Einführung in attributierte Grammatiken 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.

Einführung in attributierte Grammatiken 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:

Einführung in attributierte Grammatiken Jedes Attribut hat einen Namen und einen Wert. Attribute können repräsentieren: String, Zahl, Typ oder einen Speicherplatz. Attributarten: 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.

Einführung in attributierte Grammatiken 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.

Einführung in attributierte Grammatiken 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

Auswertung semantischer Regeln 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.

Auswertung semantischer Regeln 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.

Auswertung semantischer Regeln 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

Auswertung semantischer Regeln Produktionslokale Abhängigkeitsgraphen:

Auswertung semantischer Regeln Syntaxbaum mit Abhängigkeitsgraph zum Wort „10.01“:

Auswertung semantischer Regeln Auswertung erfolgt: Nach erhalten des um die Attribute erweiterten Syntaxbaumes. Parallel zur Syntaxanalyse, gesteuert durch den Parser. Auswertungsschritte bei gegebenem Syntaxbaum: Bildung des Abhängigkeitsgraphen und test auf Zyklenfreiheit. Bestimmung der Auswertungsordnung (Besuchsfolge, topologische Sortierung). 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

Auswertung semantischer Regeln Auswertung des Beispiels: Top-down Durchlauf, gefolgt von einem bottom-up Durchlauf zur Auswertung von l. Top-down Durchlauf zur Auswertung von r. Bottom-up Durch lauf zur Berechnung von v.

Auswertung semantischer Regeln 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.

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.

Vielen Dank für Ihre Aufmerksamkeit! Haben Sie noch Fragen?