-
Notifications
You must be signed in to change notification settings - Fork 0
ParseSource
ParseSource ist ein Interface für alles, was parsebare Zeichenströme bereitstellt. Klassen müssen folgende Methoden implementieren:
// Move to the next char
public void proceed() throws ParseException;
// Assert that the current char matches the given one, and proceed
public void match(char expected) throws ParseException;
// Instantiate a ParseException at the current position
public ParseException raise(String message);
// Get the current char
public char peekChar() throws ParseException;
// Check if the end of input is reached
public boolean endReached();
Es gibt zwei Implementierungen für ParseSource: StringSource und FileSource.
StringSource ist eine ParseSource-Implementierung, die auf einem festen, im Konstruktor übergebenen String aufbaut. Die Methoden erhöhen einfach einen Index und es wird immer im String auf das an diesem Index stehende Zeichen zugegriffen. Öffentliche Member abseits der von ParseSource vorgeschriebenen:
// Konstruktor
public StringSource(String buffer);
FileSource ist eine ParseSource-Implementierung, die auf einer Datei aufsetzt, die im Konstruktor als java.io.File übergeben und erst einmal vollständig in den Speicher geladen wird. Da sie dann ohnehin als String vorliegt, erbt FileSource von StringSource. Öffentliche Member abseits der von ParseSource vorgeschriebenen:
// FileSource instanziieren
public static FileSource fromFile(File file) throws ParseException;
Denkbar wären noch viele weitere Implementierungsmöglichkeiten. Beispiele:
- Eine Implementierung, die auf einem beliebigen BufferedReader aufsetzt, und so auch Dateien nach und nach in den Speicher laden kann statt einmal im Voraus, oder auch Netzwerkstreams.
- Eine Implementierung, die intelligent gleich mehrere Dateien in einem Verzeichnis abarbeiten kann, z.B. nach Zahlen im Dateinamen sortiert, wie es etwa unter GNU/Linux bei der udev-Konfiguration läuft.
\o/ Two Finger Joe \o/
Verzeichnis
Catalogue
- [Dateiformat](Catalogue.cfg Format)
- ParseSource
- ParseHelper
- CatalogueReader
- Catalogue, Project, ...
Controller
- Logic
- [Main Controller](Main Controller)
- [Project Controller](Project Controller)
File Interaction
Tracking