Ich hatte definitiv keinen Überblick mehr. Dann ist mir aufgefallen, dass eigentlich auch der Automat selber rekursiv ist. Und mir ist aufgefallen - dass ein IF-Label beginnt und es endet.
Wir haben ein BEGIN Marker und ein ENDE Marker
Doch, ich möchte einen klaren Unterschied erklären. Der Algorithmus ist vollkommen, vielleicht sind die Labels per Zufall gesetzt - und: Sind somit stellen sich Fehler heraus. Allerdings ist das Algorithmus. Ganz zufällig sind die Labels nicht. Dass sie treffen ergibt einen gewissen Sinn, aber es könnte passieren, sie treffen ein Mal nicht
Dafür ist der Algorithmus klar. der erste Unterschied besteht darin, er ist rekursiv. Er verwendet keine interrative Schleife. Das andere ist: er ist übersichtlich. Selbst, wenn ich ein Label falsch gesetzt habe, wird es trotzdem so sein: Der Algorithmus ist von mir erklärbar - wenn ich mir das von vorher anschaue - ich habe die Übersicht verloren, ich konnte am Ende nicht mehr erklären, wofür ist etwas.
Das ist jetzt anders - ich kann alles erklären. Aber das ist nicht alles. Viele werden sich wundern, warum ist dieser Algorithmus rekursiv. Das wirkt absurd. Das ist aber nicht. Es wirkt absurd, weil der Parser selber rekursiv arbeitet.
Das erste worum es beim Parsen geht, ist eine Struktur fest zu stellen. Gehen wir in eine Funktion wegen einer Klammer müssen wir raus. Gehen wir tiefer rein, passiert dasselbe drinnen. Dieser Algorithmus funktioniert anders
Er geht rein. Aber auch die Zeichen rufen sich rekursiv auf - das bedeutet: Eine Iteration findet kein Ende, bis auf das natürliche. Das muss diese Rekursion auch nicht, bis das Ende kommt
Wir müssen zwei Dinge unterscheiden
ENDE-Label. Ende Label tun nichts. Sie geben einfach ein Return zurück. Die anderen Label reagieren darauf - aber sie rufen die Funktion weiter auf. Dass sich die Funktion immer aufruft, ist kein