Semantische Analyse einer Echtzeitprogrammiersprache mittels Verhaltensmustern Semantische Analyse einer Echtzeitprogrammiersprache mittels Verhaltensmustern.

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
der Universität Oldenburg
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Variablen und Datentypen
Zusammenfassung der Vorwoche
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Synonyme: Stapel, Keller, LIFO-Liste usw.
Einführung Blue J.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Modularisierungstechniken
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
DVG Klassen und Objekte
Programmiersprachen II Integration verschiedener Datenstrukturen
Grundkonzepte Java - Klassendefinition
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Einführung in die Programmiersprache C 1
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
2. Die rekursive Datenstruktur Baum 2
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Dynamische Datentypen
Java Programmierung.
Algorithmen und Datenstrukturen Übungsmodul 8
Objectives Verstehen was unterDelegate verstanden wird
MODULA-2.
Übung 4.1 Strukturierte Datentypen
Hochschule Fulda – FB ET Sommersemester 2014
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
Semantische Analyse und attributierte Grammatiken
Algorithmen und Datenstrukturen 1 SS 2002
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Java-Kurs Übung Besprechung der Hausaufgabe
The Programming Language Pascal
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Datentypen: integer, char, string, boolean
1. Die rekursive Datenstruktur Liste 1
Layout "Titel mit Bildern"
 Präsentation transkript:

Semantische Analyse einer Echtzeitprogrammiersprache mittels Verhaltensmustern Semantische Analyse einer Echtzeitprogrammiersprache mittels Verhaltensmustern xxx FernUniversität in Hagen Fakultät für Mathematik und Informatik Lehrgebiet Kommunikationsnetze Bachelor-Studiengang Informatik Erstgutachter:Prof. Dr.-Ing. habil. Herwig Unger Betreuer:Dipl.-Inf. Marcel Schaible

Inhalt Ausgangssituation  Ausgangssituation Überblick Problemstellung Lösungsansatz Praktische Umsetzung  Praktische Umsetzung Definieren von Symbolen Auflösen von Symbolen Semantische Prüfung Ergebnisse & Ziele  Ergebnisse & Ziele

Ausgangssituation

Überblick  Entwicklung eines Übersetzers für die Echtzeitprogrammiersprache PEARL 90  PEARL 90 Quelltexte sollen in einem ersten Schritt in semantisch äquivalente C++ Quelltexte übersetzt werden  C++ Quelltexte sollen in einem zweiten Schritt in ausführbare Programme übersetzt werden

Problemstellung Fehler, die bei der Übersetzung der C++ Quelltexte entstehen, sind nur mit erheblichem Aufwand auf die ursprünglichen Stellen in den PEARL 90 Quelltexten zurückzuführen

Lösungsansatz Erweiterung der semantischen Analyse, um durch Angabe entsprechender Fehlermeldungen die Übersetzung in semantisch äquivalente C++ Quelltexte zu verbessern

Praktische Umsetzung

Definieren von Symbolen  Vorbereitender Schritt für die semantischen Prüfungen → Definieren von Symbolen  Parserbaum wird durchlaufen und nach charakteristischen Sprachmerkmalen durchsucht (Bsp. Deklarationen)  Schlüsseleigenschaften für ein Symbol: Name bzw. Bezeichner Kategorie bzw. Art des Symbols (Variable, Prozedur, etc.) Typ bzw. Datentyp (CHAR, FIXED, etc.) Gültigkeitsbereich  Symbol wird als Objekt einer Klasse in Symboltabelle gespeichert NameGenauigkeitPositionGültigkeitsbereichGlobal a31Zeile / Zeichen- position z.B. Modul- oder Taskname false  Beispiel: DCL a FIXED (31); Objekt der Klasse FixedVariableDef.java

Auflösen von Symbolen  Für jeden Gültigkeitsbereich (Modul, Task,…) wird eine eigene Symboltabelle angelegt  Die Symboltabellen werden in einem Stapelspeicher (engl. Stack) abgelegt 01 MODULE (mod1); 02 PROBLEM 03 DCL a FIXED(31); TASK (t1); 06 DCL a FIXED(24); 07 END; 08 MODEND; Modul mod1 Symbole: [a, t1] t1 Symbole: [a]  Für die semantischen Prüfungen wird der Stapelspeicher zunächst bis auf das erste Modul des Quelltextes geleert  Tabellen werden wieder auf den Stapelspeicher gelegt, wenn der entsprechende Knoten bzw. Gültigkeitsbereich im Parserbaum erreicht wird  Prinzip der engsten Verschachtelung

Semantische Analyse Symbole in Symbolliste eintragen ggf. Operatoren in Operatorenliste eintragen Symbol an Indexposition 0 in Symboltabelle suchen Prüfen, ob Symbol eine Konstante ist Datentypen der Symbole ermitteln, prüfen ob zuweisungskompatibel Genauigkeit / Länge prüfen weiter Fehlermeldung (arithmetischen) Ausdruck auflösen Fehlermeldung Prüfen, ob Opertorenliste leer ist Symbol an Indexposition 1 in Symboltabelle suchen oder temporäres Symbol Fehlermeldung Beispiel: a = b Symbolliste: Index01 Symbolab

Semantische Analyse Index012 Symbolabc Symbolliste: Beispiel: a = b + c Index0 Operator+ Operatorenliste: SyntaxTyp von aTyp von bTyp des Ergebnisses a + bFIXED(g1)FIXED(g2)FIXED(g3) FIXED(g1)FLOAT(g2)FLOAT(g3) FLOAT(g1)FIXED(g2)FLOAT(g3) FLOAT(g1)FLOAT(g2)FLOAT(g3) DURATIONDURATIONDURATION DURATIONCLOCKCLOCK CLOCKDURATIONCLOCK g3 = max (g1, g2) = 1 → b = 2 → c

Semantische Analyse  Prüfung eines Ausdrucks erfolgt nach den allgemeinen arithmetischen Regeln  Den Operatoren ist ein Rang und eine Auswertungsreihenfolge zugewiesen  Alle monadischen Standard Operatoren haben den Rang 1, Auswertungsreihenfolge: von rechts nach links Rangordnung: Rangdyadische OperatorenAuswertungsreihenfolge 1**, FITvon rechts nach links 2*, /, ><, REMvon links nach rechts 3+, -, <>, SHIFTvon links nach rechts 4, =von links nach rechts 5==, /=von links nach rechts 6ANDvon links nach rechts 7OR, EXORvon links nach rechts

Semantische Analyse SyntaxTyp von aTyp von bTyp des Ergebnisses a + bDURATIONCLOCKCLOCK SyntaxTyp von aTyp von bTyp des Ergebnisses a * bDURATIONFIXEDDURATION CLOCK = DURATION * FIXED + CLOCK ungültig! Auflösen entsprechend der arithmetischen Regeln: CLOCK = DURATION * FIXED + CLOCK =DURATION =CLOCK gültig! → CLOCK = CLOCKgültig! gültig!

Semantische Analyse Beispiel: a = (b + c) * d Symbolliste: Index0123 Symbolabcd Operatorenliste: Index0123 Operator(+)* 1. Berechnung: b + c  Anzahl der öffnenden Klammern, die vor dem Operator der Addition stehen, von dessen Index subtrahieren  Symbole ermitteln, auf denen die Addition angewendet werden soll  Symbole durch Zwischenergebnis (= temporäres Symbol) ersetzen  temporäres Symbol besitzt als Attribut den resultierenden Datentyp und ggf. Genauigkeit oder Länge  Operator und Klammernpaar aus Operatorenliste entfernen

Semantische Analyse Beispiel: a = temporäres Symbol * d Symbolliste: Index012 Symbolatemporäres Symbold Operatorenliste: Index0 Operator* 2. Berechnung: temporäres Symbol * d  wenn gültige Kombination von Datentypen, dann wird Ergebnis wiederum in Form eines temporären Symbols gespeichert und ersetzt die Operanden  Operator wird aus Operatorenliste entfernt  damit ist im letzten Schritt eine einfache Zuweisung zu prüfen: a = temporäres Symbol

Semantische Analyse Symbol an Indexposition 0 in Symboltabelle suchen Prüfen, ob Symbol eine Konstante ist Datentypen der Symbole ermitteln, prüfen ob zuweisungskompatibel Genauigkeit / Länge prüfen weiter Fehlermeldung (arithmetischen) Ausdruck auflösen Fehlermeldung Beispiel: a = temporäres Symbol Symbolliste: Index01 Symbolatemporäres Symbol Prüfen, ob Opertorenliste leer ist Symbol an Indexposition 1 in Symboltabelle suchen oder temporäres Symbol Fehlermeldung Symbole in Symbolliste eintragen ggf. Operatoren in Operatorenliste eintragen

Ergebnisse

 Verwendung von Listen (ArrayList): Einfache und bekannte Datenstruktur Durchlaufen des Parserbaumes und semantische Prüfung als Teilaufgaben behandeln  Erweiterbarkeit des Quellcodes: Modulares Konzept Zwei Schlüssel-Klassen, als Schnittstellen für semantische Analyse  Wartbarkeit des Quellcodes: Modulares Konzept Listen sind grundlegende Datenstrukturen Nachteil:  Algorithmus zur Auflösung komplexer arithmetischer Ausdrücke wird durch Verwendung von Listen kompliziert  Redundanz, um Lesbarkeit zu erreichen Ergebnisse & Ziele.

Anhang

SemanticCheckVisitor SemanticCheckValidator SemanticMonadic- ExpressionCheck SemanticDyadic- ExpressionCheck SemanticConversion- Check SemanticCheckFixedSemanticCheckFloat … SemanticPrecisionCheck SemanticErrorMessages Anhang: Ausschnitt des modularen Konzeptes

Anhang: Semantische Analyse Funktions-Prozedur 01 Prozedurname: PROCEDURE RETURNS (FIXED); 02 !Prozedurkörper 03 RETURN (Rückgabewert); 04 END; a = Prozedurname; Unterprogramm-Prozedur 01 Prozedurname: PROCEDURE(Parameter_1, Parameter_2); 02 !Prozedurkörper 03 END; CALL Prozedurname (Übergabe_Param_1, Übergabe_Param_2);

Anhang: Semantische Analyse 01 MODULE (name_1); 02 PROBLEM 03 DCL a FIXED GLOBAL; 04 MODEND; 01 MODULE (name_2); 02 PROBLEM 03 SPC a FIXED GLOBAL (name_1); 04 MODEND; Modul 1 Modul 2 SPECIFY: Bezug innerhalb eines Moduls 01 DCL Bezeichner_1 FIXED; 02 SPC Bezeichner_2 FIXED IDENT (Bezeichner_1); SPECIFY: Bezug zwischen zwei Modulen Initialisierung 01 DCL Bezeichner FIXED INIT(Wert);

Vielen Dank für Ihre Aufmerksamkeit