• Keine Ergebnisse gefunden

Abgabe​ ​und​ ​Hinweise

N/A
N/A
Protected

Academic year: 2022

Aktie "Abgabe​ ​und​ ​Hinweise "

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut​ ​für​ ​Systemsoftware Übungen​ ​zu​ ​Übersetzerbau​ ​WS​ ​2017/2018 

Prof.​ ​Dr.​ ​H.​ ​Mössenböck,​ ​DI​ ​Leopoldseder,​ ​DI​ ​Eisl Übung​ ​6 

Letzter​ ​Abgabetermin:​ ​Mittwoch,​ ​10.01.2018,​ ​18​00​​ ​Uhr 

Codeerzeugung​ ​–​ ​Teil​ ​2 (24​ ​Punkte)

Vervollständigen Sie Ihren Compiler, indem Sie die fehlenden Teile der Codeerzeugung gemäß der in den Unterlagen ausgegebenen Spezifikation der ​MicroJava​-VM (siehe VO-Skriptum, Kapitel 5,​ ​Seiten​ ​12-16)​ ​hinzufügen.

In dieser Übung müssen Sie die Codeerzeugung um Sprünge erweitern, dazu sind Sprungmarken (​Labels​) nötig. Ein Label verwaltet ein Sprungziel oder solange das Sprungziel unbekannt ist eine Liste von Sprüngen zu diesem Sprungziel. Vervollständigen Sie die Klasse ​Label mit den Methoden put() und ​here()​. Verwenden Sie diese Klasse für die Codeerzeugung von Bedingungen und Schleifen.

Prüfen Sie alle Kontext- und sonstigen Nebenbedingungen der ​MicroJava​-Sprachdefinition und geben​ ​Sie​ ​entsprechende​ ​Fehlermeldungen​ ​aus.

Bei einem Klassenmethodenaufruf liegt der ​this Parameter schon am Stack wenn ​ActPars betreten wird. Da wir in diesem Fall implizit wissen, dass der Typ von ​this korrekt ist, kann die Überprüfung des ersten formalen Parameters entfallen. Trotzdem muss ​this beim Zählen der konkreten​ ​Parameter​ ​berücksichtigt​ ​werden.

Testen Sie Ihren Generator ausführlich. Lassen Sie Ihre Testprogramme auch auf der ​MicroJava​-VM laufen​ ​(​java​ ​ssw.mj.Run​ ​<obj-Datei>​).

Auf der Übungsseite finden Sie die Testprogramme ​TestProgram.mj, StudentList.mj und Trap.mj​.

TestProgram.obj gibt "​1234​" aus. ​StudentList.obj legt eine Liste von Studenten an und durchsucht diese. ​Trap.obj bricht mit einem Fehler ab, weil in der Funktion ​int Trap() das return-Statement fehlt.

Abgabe​ ​und​ ​Hinweise

Die​ ​Abgabe​ ​der​ ​Übungen​ ​muss​ ​elektronisch​ ​erfolgen.​ ​Geben​ ​Sie​ ​folgende​ ​Dateien​ ​ab:

Elektronisch in das Repository: Alle Quellcode-Dateien, die zum Ausführen des Compilers benötigt werden (Packages ​ssw.mj​, ​ssw.mj.codegen, ssw.mj.impl und ​ssw.mj.symtab​), also auch alle​ ​Klassen​ ​der​ ​Angabe.​ ​Die​ ​Verzeichnis-Struktur​ ​muss​ ​erhalten​ ​bleiben.

svn://ssw.jku.at/2017W/UB/k<MatrNr>/branches/UE6

JUnit​ ​Testfälle: ScannerTest, ParserTest, SymbolTableTest, SimpleCodeGenerationTest, CodeGenerationTest

Referenzen

ÄHNLICHE DOKUMENTE

MELCOR 1.8.6 SA analysis for Ringhals-3 and Oskarshamn-3 plants related to their power uprate (comparison with MELCOR 1.8.5 results). Development of a new input deck for

Wenn sogenannte Fachleute Bäume pflanzen und sie nicht mehr oder weniger regelmässig giessen, wissen wir nicht, ob sie einfach gleichgültig sind, oder ob sie zu faul sind,

Möglichkeiten der Fleischproduktion auf Sömmerungs- und Alpweiden.. Kalb aus

• Laktose wird durch Laktase in Glukose und Galaktose gespalten.. • Der Anteil gespaltener Laktose wird

Pour le maïs d’ensilage, la longueur de coupe devait être de 5 à 8 mm Plus le maïs est sec, plus il faut hacher finement. Pour ce faire,

Welches sind die wichtigsten Punkte beim Silieren von Mais?... Schätzung des

„optimales „ optimales“ Ausmastfutter eingesetzt werden, damit “ Ausmastfutter eingesetzt werden, damit keine Probleme mit der Fettzahl auftreten. keine Probleme mit der

Umweltbelastung (normiert) Hohe Ökoeffizienz.