• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2022

Aktie "Übungsblatt 2: Ü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 2: Übersetzer und sprachverarbeitende Werkzeuge (SS 2011)

Hand Out: 27. April 2011 Hand In: 4. Mai 2011

Aufgabe 1 Reguläre Ausdrücke und deren Automaten

a) Beschreiben Sie die in Java erlaubten Fließkommazahlen mit Hilfe eines regulären Ausdrucks. Suffixe, wie F und D, sowie binäre und hexadezimale Schreibweisen brauchen Sie nicht zu berücksichtigen. Verwenden Sie dazu die Java-Sprachspezifikation:http://java.sun.com/docs/books/jls/.

b) Übersetzen Sie den regulären Ausdruck aus a) zu einem NFA.

c) Übersetzen Sie den NFA zu einem DFA.

Aufgabe 2 Scanner-Generierung mit JFlex

Hier werden wir die erste Vorversion für den Scanner des Compilers, den wir in diesem Semester erstellen werden, entwickeln. Dazu wird das in der Vorlesung erwähnte JFlex,http://jflex.de, verwendet.

a) Erstellen Sie einen Scanner mit JFlex und eine Tokenrepräsentation, die beide für eine Java-Teilsprache geeig- net sind. Folgende Schlüsselwörter sollen erkannt werden:class,interface,extends,implements,void, int,boolean,return,ifundwhile. Folgende Sonderzeichen sollen Token sein:(,),,,{,},.,+,-,*,/,;,

==und>=. Außerdem sollen folgende Literale (Konstanten) als Token erkannt werden: ganzzahlige Zahlen mit Vorzeichen,trueundfalse. Als Bezeichner sollen nur Wörter zugelassen sein, die mit einem Buchstaben oder Unterstrich beginnen und nur Buchstaben, Ziffern oder Unterstriche enthalten. Whitespace bestehend aus Leerzeichen, Tabulatoren und Newline werden nur überlesen.

Schreiben Sie ein kleines Hauptprogramm, welches eine Datei in der Kommandozeile nimmt und die Sequenz der erkannten Token ihres Scanners ausgibt.

b) Erweitern Sie ihre Lösung aus a) um einfache Kommentare wie in Java, d.h. mit//und/*.. */. Sie können annehmen, dass Kommentare nicht verschachtelt werden.

c) Erweitern Sie ihre Lösung aus b) um die Möglichkeit die Position eines Tokens in der Eingabedatei abzufragen.

Dazu müssen Sie ihre Tokenrepräsentation geeignet erweitern und beim Erzeugen eines Tokens die Zeilen- und Spaltennummer des Tokenanfangs festhalten. Sehen hierzu im Handbuch von JFlex nach wie sie an diese Information gelangen können.

Die Aufteilung in drei Schritte soll eine Hilfestellung sein, Sie können auch nur eine Gesamtlösung abgeben.

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

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

Textboxen müssen als ganzes auf einer Seite erscheinen (sie dürfen nicht umgebrochen werden). Zwischen zwei Textboxen auf einer Seite muss genau eine Zeile frei bleiben. Textboxen

Kopieren Sie sich dazu den Code aus dem common/src/minijava/backend Ordner des Subversion-Repositories in Ihren Gruppen-Ordner. Der Ordner enthält eine Katja-Spezifikation für

Die Methoden lassen sich nicht direkt in MiniJava implementieren, deshalb wird IO fest in den Compiler eingebaut.. class

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