2. UML-Diagramm, Klassenstruktur und das fertige Programm
1. Das UML-Diagramm
2. Klassenstruktur
Knotenpunkt aller Klassen ist das Hauptformular.
2.1. TFeld und TBender
Zur grafischen Darstellung der Auswirkung der Befehle besitzt das
Hauptformular ein Feld (TFeld) und den Roboter (TBender).
Das Feld kümmert sich dabei um das Zeichnen der Hindernisse und
Items sowie um die Position des Roboters.
Der Roboter zeichnet sich selbst und kennt das Feld. Damit reicht es
den Roboter anzusprechen, wenn er seine Position oder ähnliches
ändern
soll.
Der Robter teilt diese Positionsänderungen dann dem Feld mit und
veranlasst einen repaint.
Informationen über Ort und Status des Roboters werden
zusätzlich auf dem Formular dargestellt.
Außerdem kann über Klicks auf das zum Feld gehörende
Image die Position von Items und Hindernissen geändert werden.
2.2. TScanner und TScannerAutomat,
"Der Scanner hat die Aufgabe, aus dem Zeichenstrom die
lexikalisch richtigen Ausdrücke herauszusuchen. Während
falsche lexikalische
Ausdrücke bei den meisten Scannern zu Fehlermeldungen führen,
haben wir uns [..] dazu entschlossen, diese einfach zu überlesen."
Der Scanner bereitet die Eingabe für den ScannerAutomaten auf und
erzeugt mit dessen Hilfe die Tokenliste. Diese wird dann an den Parser
übergeben.
2.3. TParser und TParserAutomat
"Aufgabe des Parsers ist es, festzustellen, ob die Tokenliste [...]
der Syntax
der jeweiligen Programmiersprache entspricht."
Der Scanner prüft mithilfe des ParserAutomaten, ob syntaktische
Fehler vorhanden sind. Wenn dies der Fall ist wird eine entsprechende
Fehlermeldung ausgegeben.
Ist der Programmtext syntaktisch korrekt, kann der Interpreter diese
ohne Gefahr ausführen.
Achtung: Der Parser erkennt nur syntaktische Fehler,
Endlosschleifen o. ä., kann er nicht erkennen.
2.4. TInterpreter
Aufgabe des Interpreters ist es, ein syntaktisch korrektes Programm
auszuführen. Anders als bei einem Copiler geschieht dies in
unserem Fall direkt und ohne Umwandlung in eine Zielsprache. (z.B.
Assembler, o. ä.). Dazu spricht er den Roboter direkt über
die "Kennt-Beziehung" an.
3. Das fertige Programm
Das fertige Programm kann hier im
Delphi-Code
heruntergeladen werden.