• Keine Ergebnisse gefunden

Übungsblatt 7: Übersetzer und sprachverarbeitende Werkzeuge (SS 2011)

N/A
N/A
Protected

Academic year: 2022

Aktie "Übungsblatt 7: Übersetzer und sprachverarbeitende Werkzeuge (SS 2011)"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Arnd Poetzsch-Heffter Dr.-Ing. Jan Schäfer

Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik

Übungsblatt 7: Übersetzer und sprachverarbeitende Werkzeuge (SS 2011)

Hand Out: 1. Juni 2011 Hand In: 8. Juni 2011

Aufgabe 1 Anwendung von Typregeln

Zeigen Sie mit den Typregeln der Vorlesung (Folien 86–88), ob die folgenden Ausdrücke typkorrekt sind oder nicht. Bauen Sie dazu einen Ableitungsbaum auf.

a) ӏAssign(y, Relation(x, RelOp(Plus()), LongConst(5))): boolean, mitΣ={y→boolean,x→ClassType(C)}

b) ӏAssign(y, Invoc(y,m,y)): InterfaceType(J),

mitΣ= { y→InterfaceType(I), InterfaceType(J)≤InterfaceType(I), (I,m)→(InterfaceType(I), InterfaceType(J))}

Aufgabe 2 Typanalyse von Ausdrücken

Für die Typanalyse implementieren Sie ein AttributtypeOf. Es ist auf beliebigenExpressiondefiniert und liefert derenTypezurück. Verwenden SieresolveName, um die Typen von Variablen, statischen Klassenattributen und statischen Methodenaufrufen herauszufinden.

Aufgabe 3 Kontextbedingungen

Um die Überprüfung von MiniJava-Programmen zu vervollständigen müssen Sie noch folgende Kontextbedin- gungen überprüfen.

• JedeCompilationUnitmuss genau eine KlasseMainmit einer statischen Methodestatic void main() enthalten.

• Jede Methode und jedes Attribut iststatic.

• Es gibt drei Typen von Scopes in MiniJava-Programmen: DieCompilationUnit, jede Klasse und jede Me- thode bilden einen Scope. Pro Scope darf jeder Bezeichner nur einmal deklariert werden.

• Jeder Methodenaufruf hat die korrekte Anzahl an Parametern und jeder aktuelle Parameter hat einen, zum formalen Parameter, kompatiblen Typ.

• Jede nicht-voidMethode hat mindestens einreturn. Der Typ des Ausdrucks hinter demreturnist kom- patibel zum Rückgabetyp der Methode.

• JedevoidMethode hat nurreturn-Anweisungen ohne Ausdruck.

• Nach einemreturnfolgt keine weitere Anweisung im selben Block.

• Die Bedingungen vonifundwhilehaben den Typboolean.

• Die linke und die rechte Seite einer Anweisung haben kompatible Typen.

• JederExpressionhat einen Typ.

Dies alles soll im Attribut contextCorrect, welches eine CompilationUnit nimmt und ein boolean liefert, überprüft werden.

Zur Realisierung definieren Sie sich weitere Attribute und evtl. weitere Katjasorten. Dokumentieren Sie kurz jedes Attribut und seine Abhängigkeiten in einer separaten Datei.

Referenzen

ÄHNLICHE DOKUMENTE

Das Build-Skript muss unter Linux funktionieren, wobei Sie davon ausgehen können, dass java und javac ausführbar und im PATH sind und dass die JFlex.jar -Datei im CLASSPATH ist

Sie sollen eine Methode schreiben, die ein ExpressionPos -Objekt nimmt und den zugrunde liegenden Ausdruck mathematisch korrekt vereinfacht, in dem konstante Teilausdrücke

d) Erweitern Sie die Namens- und Typanalyse um die neuen Konstrukte. Nun sind auch nicht-statische Methoden und Felder in Klassen erlaubt. Beachten Sie, dass Sie in statischen

Erweitern Sie die Zwischensprache von oben so, dass Sie als Zwischensprache für Ihren MiniJava-Compiler ge- eignet ist und integrieren Sie die zuvor implementierte Analyse

Ihr Programm soll eine Datei einlesen und die Baumstruktur als Text ausgeben, so dass man nachvollziehen kann, dass korrekt

• JavaCup erzeugt, nebem dem Parser, auch noch eine Klasse mit einer Konstante pro definiertem Nichtterminal- typ, diese heißt standardmäßig sym. • JFlex unterstützt die Anbindung

• Jede CompilationUnit muss genau eine Klasse Main mit einer statischen Methode static void main() enthalten. • Jede Methode und jedes Attribut

| If (Value cond, Statement thenCase, Statement elseCase) Assignment = Add (Value dest, Value left, Value right).. | Minus (Value dest, Value left,