Tutorial
Interpreter-Sprache entwickeln
Mittels der verwendung von Delphi
#o1 - Für wen?
Für wen ist den dieses Tutorial überhaupt geeignet? Ich denke es ist für Delphi Fortgeschrittene bis Delphi Profis geeignet.
Diesem Tut wird KEIN Beispiel-Download Quelltext beiliegen. Ich werde aber einige Code-Beispiele einbringen, sodas es etwas einfacher fällt. Solltest du dich noch wenig mit Delphi auskennen empfehle ich dir zuerst ein paar andere Tutorials durchzugehen und dich hier in einem halben Jahr wieder einzufinden.
#o2 - Einige Überlegungen
Zuerst einmal stellt sich die Frage was für einen Syntax man verwenden will. Ich beziehe mich in diesem Tutorial dafür der Einfachkeit halber an einem Basic ähnlichen Syntax für die neue Interpreter-Sprache. Zum Eingeben werden wir ein RichEdit Feld verwenden und für die Ausgabe (also fürs Debuggen) nehmen wir ein Memo Feld. Das und ein Knopf dürften fürs erste ausreichen.
Bild: Beispiel Anordnung
#o3 - How to Run it?
Nun kommt der spannende Teil, das interpretieren. Dafür fügen wir im Start-Button.OnClick Code zuerst die Variable i (Integer) und die Variable Exit(Boolean) hinzu.
i: Diese Variable wird unsere Zählvariable. In ihr steht immer in welcher Reihe wir gerade interpretieren (Achtung, ihr wisst ja man zählt ab 0, also Zeile 1 ist i dann 0!)
Exit: Falls der Interpretier-vorgang vor dem Ende aller Zeilen abgebrochen werden muss (Fehler) steht diese Variable auf True;
Nun fügen wir diesen Code in das OnClick Ereigniss hinzu.
Wie ihr seht wird hier die Funktion make aufgerufen die uns mittels True oder False mitteilt ob der Interpretier-Vorgang der aktuellen Zeile erfolgreich war. Das wird dann der Variable Exit zugewiesen. Ist Exit False war alles in Ordnung, wenn nicht, dann nicht.
#o4 - Funktion Make, unser Herzstück.
Diese Funktion habe ich so:
Aufgebaut. Als Übergabe erhält Make die aktuelle Zeile als String.
Nun wird erst mal der Rückgabewert als True (ein Fehler) eingestellt. (Falls es keinen gibt, dann wird dies später rückgängig gemacht...) nun lesen wir mit get die ersten 5 Zeichen der übergebenen Zeile aus und wenn sie 'Print' lauten geben wir alle Zeichen zwischen 6 und dem Ende der Übergabe-Zeile aus. Dann setzen wir den Rückgabewert auf False (Kein Fehler, alles in Ordnung.) und widerrufen somit die Aktion von vorhin. Denn Falls die Zeile nicht Print heißt, dann bleibt es beim Fehler.
#o5 - Funktion get
Diese Funktion möchte ich hier nicht näher dokumentieren, da das Delphi-Standart sein sollte.
#o6 - Testlauf...
Wenn ihr alles Korrekt gemacht habt, dann dürfte es etwa so klappen:
Wenn nicht, dann solltet ihr alle snoch mal durchgehen.
#o7 - Bei neuer Zeile und Kommentar...
... beendet sich das ganze
Ändern wir das
Das ganze kommt selbstredend in die Make Funktion...
Nun sollte dieser Quellcode lauffähig sein: #o8 - Debug-Anzeige
Wir wollen ja wissen in welcher Zeile es zu einem Fehler kam bzw. das alles in Ordnung ist...
Dafür ändern wir den Quelltext von Start-Button.OnClick wie folgt:
Das ganze löscht erst mal allen Text aus der Console und gibt dann den Interpreter-Namen aus. Nun wird der Quellcode ausgeführt. Ist dies Beendet, überprüft er ob Exit True ist (Durch Fehler Beendet) ist dem so gibt er eine Fehlernachricht aus, ist dem nicht so, dann lässt er es.
#o9 - Abschluss
Habt ihr das hier wirklich durchgearbeitet, dann habt ihr für den Anfang ein wirklich tolles System entwickelt. Klar, es ist sehr erweiterungsfähig, aber noch mehr Infos wären glaube ich zuviel. Bitte schreibt doch was ihr hiervon haltet und wenn ihr wollt, dann erweitert den Source.
Wenn ihr wollt schreibe ich das ganze gerne Weiter. Ich kann zum Beispiel was über Variablen bringen (Zuweisung, Ausgabe und Überwachung)....
Und bitte: Nur weil ich sage das hier wäre nicht für Anfänger, traut euch auch mal Fragen zu stellen... Es ist nicht so leicht wies aussieht, ich habe das auch manchmal das ich was einfach so nicht kapiere. Ich erklärs gerne. Schreibt einfach hier n' Post,schreibt mich unter ICQ an (Profil) oder per PN.