Java Entdecken Arbeitsblatt 5

Werbung
Technische Universität München
Fakultät für Informatik
Prof. Dr. Helmut Seidl
Michael Petter
Raphael Geissler
SS 2005
Programmierpraktikum Java Entdecken
Arbeitsblatt 3
SyntaxHighlighter Teil 1
Reguläre Ausdrücke
1 Einleitung
In einer zweiteiligen Aufgabe soll ein Syntax-Highlighter1 für Java-Quellcode erstellt werden.
Folgende Aufgabenteile sollen diese Woche implementiert werden.
• Einlesen und Ausgeben eines Textfiles in der Main-Funktion
• Regeln 2 erzeugen, die regulären Java-Code vollständig matchen
• Erstellen einer Funktion nextToken(), die die gematchten Tokens als Strings zurückgibt.
2 Teilaufgaben
2.1 Aufgabe 1
Einlesen und Ausgabe von Dateien
Versuchen Sie in der Main-Funktion eine Textdatei als String einzulesen und wieder in eine
Datei abzuspeichern. Betrachten Sie dazu die API’s folgender Klassen
• java.io.FileReader
• java.io.BufferedReader
• java.io.FileWriter
• java.io.PrintWriter
1 http://de.wikipedia.org/wiki/Syntaxhighlighting
2 http://www2.in.tum.de/repos/progprakt/studenten/templates/syntaxHighlighting/JavaRulesIF.java
1
2.2 Aufgabe 2
Symbolklassen festlegen
Unser Ziel ist es den Eingabestring in einfache Grundbestandteile - Symbole (engl. Token) - zu
zerlegen. Um auszudrücken, welche Teilstrings die selbe Symbolklasse formen, verwenden wir
Reguläre Ausdrücke3 . Eine Spezifikation aller in Java möglichen Symbol-Klassen können sie
bei Sun in der offiziellen Sprachspezifikation 4 nachlesen.
Erstellen Sie nun ein Interface das sämtliche Regeln als Strings in Form von regulären Ausdrücken enthält. Erweitern Sie dazu die vorgefertigte Datei JavaRulesIF.java5 , die in der Codeverwaltung zum Download bereit steht. Wie reguläre Ausdrücke in Java verwendet werden,
steht detailliert in der API-Dokumentation von java.util.regex. Ebenso sei auf die Anleitung6
von Sun verwiesen.
2.3 Aufgabe 3
Zerlegen des Eingabestrings in Symbole
Erstellen Sie eine Klasse Lexer, die eine Funktion String nextToken() bereit stellt. Diese soll
bei jedem Aufruf das nächste gefundene Symbol zurückgeben. Um das zu realisieren muss die in
Aufgabe 2 erzeugte Regelliste in jedem Aufruf von nextToken() der Reihe nach abgearbeitet
werden bis der Anfang der aktuell betrachteten Eingabe zu einer Regel passt. Dieser Teil soll
dann aus der Eingabe entfernt und zurückgeliefert werden.
3 http://de.wikipedia.org/wiki/Regex
4 http://java.sun.com/docs/books/jls/second
edition/html/jTOC.doc.html
5 http://www2.in.tum.de/repos/progprakt/studenten/templates/syntaxHighlighting/JavaRulesIF.java
6 http://java.sun.com/developer/technicalArticles/releases/1.4regex/
2
Herunterladen