• Keine Ergebnisse gefunden

Syntaxanalysator (Parser)(24 Punkte)Implementieren Sie den Syntaxanalysator f

N/A
N/A
Protected

Academic year: 2022

Aktie "Syntaxanalysator (Parser)(24 Punkte)Implementieren Sie den Syntaxanalysator f"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Systemsoftware Übungen zu Übersetzerbau WS 2015/2016

Prof. Dr. H. Mössenböck, DI P. Lengauer, DI J. Eisl Übung 3

Letzter Abgabetermin: Mittwoch, 11.11.2015, 1800 Uhr

Syntaxanalysator (Parser) (24 Punkte)

Implementieren Sie den Syntaxanalysator für  MicroJava  im rekursiven Abstieg. Verwenden Sie dabei das vorgegebene Gerüst in der Klasse  Parser. Jede Regel der Grammatik (siehe MicroJava Grammatik auf der Übungshomepage) muss durch eine eigene Methode vertreten sein, welche die Top­Down­Erkennung realisiert.

Die Schnittstelle des Parsers nach außen ist durch die Methode Parser.parse() definiert, mit der man die Analyse startet.

Benutzen Sie die drei in der Vorlesung vorgestellten Methoden  scan(),  check()  und  error(). Zur Fehlerbehandlung   verwenden   Sie   vorläufig   die   „Panic   Mode“­Strategie,   d.h.   Sie   brechen   die Syntaxanalyse beim ersten Fehler ab, nachdem Sie eine entsprechende Fehlermeldung über die Klasse Errors ausgegeben haben.

Im Vorlesungs­Skriptum sind alle Methoden der Klasse Parser als static deklariert. In der Übung verwenden wir dynamische Methoden, zB um die JUnit­Testfälle zu vereinfachen. Daher muss ein Objekt   der   Klasse  Parser  angelegt   werden,   dem   im   Konstruktor   der  Scanner  übergeben   wird (bereits programmiert).

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 und ssw.mj.symtab), also auch alle Klassen der Angabe. Die Verzeichnis­Struktur muss erhalten bleiben.

 svn://ssw.jku.at/2015W/UB/k<MatrNr>/branches/UE3 JUnit Testfälle: ScannerTest, ParserTest

Referenzen

ÄHNLICHE DOKUMENTE

 Methode  für  das  Objekt  aufrufen

Implementieren Sie den ADT Queue mit Hilfe einer verketteten Liste ohne einen Dummy- Knoten zu verwenden.. Übung

• Alternativen haben verschiedene terminale Anfänge.. •

findField() sucht nach einem Namen in einer Klasse, deren Struct in der Schnittstelle mitgegeben wird, wird der Name nicht gefunden muss der semantische

[r]

[r]

find() sucht nach einem Namen beginnend im aktuellen bis zum äußersten Gültigkeitsbereich, wird der Name nicht gefunden muss der semantische Fehler ​NOT_FOUND ausgegeben

Zeigen Sie dabei sowohl alle Umformungen, die Sie an der Grammatik vornehmen, als auch die Berechnung der einzelnen Zustände (wie in der VO gezeigt).. Beachten Sie außerdem die