Skip to content

ParseSource

asyndeton edited this page Jul 13, 2016 · 1 revision

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

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

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;

Ausblicke

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.

Verzeichnis

Catalogue

Controller

  • Logic
  • [Main Controller](Main Controller)
  • [Project Controller](Project Controller)

File Interaction

Tracking

Clone this wiki locally