• Keine Ergebnisse gefunden

JUnit-Tests

N/A
N/A
Protected

Academic year: 2022

Aktie "JUnit-Tests "

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Institut für Systemsoftware Übungen zu Übersetzerbau WS 2009/2010

Prof. Dr. H. Mössenböck Übung 2

Zuname Vorname Matr.-Nr.

Übungsgruppe Punkte korr.

1 (Löberbauer) Do 1015-1145

2 (Löberbauer) Do 1345-1515 Letzter Abgabetermin

3 (Würthinger) Do 1015-1145 Mittwoch, 28.10.2009, 1800 Uhr

Lexikalischer Analysator (Scanner) (24 Punkte)

Schreiben Sie einen lexikalischen Analysator (Scanner) für die Sprache MicroJava. Die lexikalische Struktur vom MicroJava finden Sie im VO-Skriptum in Kapitel 4.2 auf Seite 7.

In ihrem Repository finden Sie vorgegebene Klassen für die Implementierung. Für diese Übung brauchen Sie die Klassen Scanner, Token und Errors im Package ssw.mj. Die Klassen Token und Errors sind bereits fertig implementiert. Die Klasse Scanner müssen Sie für diese Übung vervollständigen.

Scanner.next() muss das jeweils nächste erkannte Terminalsymbol (Token) zurückgeben. Wenn das Ende des Eingabestroms erreicht ist, muss eof zurückgegeben werden.

Schlüsselwörter, Bezeichner, (positive ganze) Zahlen, Zeichenkonstanten sowie Operatoren müssen erkannt werden. Leerzeichen, Tabulatoren, Zeilenumbrüche und Kommentare (von "/*"

bis "*/", auch geschachtelt) müssen überlesen werden.

Folgende lexikalische Fehler müssen erkannt werden:

• Das Auftreten ungültiger Zeichen (INVALID_CHAR)

• Fehlende schließende Anführungszeichen bei Zeichenkonstanten (MISSING_QUOTE)

• Leere Zeichenkonstanten (EMPTY_CHARCONST)

• Ungültige Escapesequenzen (UNDEFINED_ESCAPE)

• Zeilenumbrüche in Zeichenkonstanten (ILLEGAL_LINE_END)

• Ungeschlossene Kommentare (EOF_IN_COMMENT)

• Zu große Zahlenkonstanten (BIG_NUM)

Der Wertebereich von int ist von -2147483648 bis 2147483647 definiert. Der lexikalische Analysator liefert aber nur positive ganze Zahlen (also von 0 bis 2147483647). Bei einer negativen Zahl werden zwei Tokens geliefert, ein Minuszeichen und eine positive ganze Zahl. Die Zahl -2147483648 kann daher nicht als Konstante im Programm angegeben werden.

(2)

Im Vorlesungs-Skriptum sind alle Methoden der Klasse Scanner static deklariert. In der Übung verwenden wir dynamische Methoden, um die JUnit-Testfälle zu vereinfachen. Daher müssen Objekte der Klasse Scanner und Errors angelegt werden. Die Initialisierung findet in den jeweiligen Konstruktoren statt.

JUnit-Tests

Implementieren Ihren Compiler so, dass er alle vorgegebenen JUnit-Testfälle aus ScannerTest besteht. Auch die Tutoren verwenden diese Testfälle.

Sie können die gegebenen JUnit-Testfälle auch als Vorlage für eigene Tests verwenden, um so Ihren Compiler noch ausführlicher zu testen.

Abgabe

Die Abgabe der Übungen 2 – 6 muss auf Papier und elektronisch erfolgen. Geben Sie folgende Dateien ab:

• Ausgedruckt auf Papier: Scanner.java (nur diese Datei muss für diese Übung verändert werden).

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

• Taggen sie die Abgabe als: Abgabe UE1

Referenzen

ÄHNLICHE DOKUMENTE

Imprecise Error Semantics [Peyton Jones et al... Imprecise Error Semantics [Peyton Jones

Imprecise Error Semantics [Peyton Jones et al... Imprecise Error Semantics [Peyton Jones

This document describes the implementation of a Token-Ring Gateway in remote models of the IBM 3174 Subsystem Control Unit and examines some of the performance and

The originating station sends a TEST or XID command LPDU on the local ring with the address of the destination in the destination address field and to the null SAP

The token is used in the setup phase only whereas in the time-critical online phase the cloud computes the encrypted function on encrypted data using symmetric encryption

Auf  der Homepage  finden  Sie  vorgegebene  Klassen  für  die  Implementierung.  Viele  Klassen sind  für  diese  Übung  noch  nicht  nötig,  sondern  werden 

Für diese Übung brauchen Sie die Klassen Scanner, Token und Errors im Package ssw.mj.. Die Klassen Token und Errors sind bereits fertig

Für diese Übung brauchen Sie die Klassen ​ScannerImpl im Package ​ssw.mj.impl sowie Token und ​Errors im Package ssw.mj​.. Die Klassen ​Token und ​Errors sind bereits