/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/pascal-compiler/sqrparse-2020-02-22/sqrparse2.txt


Na ja mit dem "Compiler für Vierecke" habe ich einen Fehler gemacht. Wenn der Lexer aufgerufen wird, müssen Grenzen angegeben werden. Es muss die Höhe und Breite angegeben werden, in der ein (weiteres) Viereck zu finden ist. Der Lexer findet immer nur das nächste Viereck.
Dabei ist es Aufgabe des Parsers, nämlich: Befindet, sich ein Viereck 
(1.) Im Inneren eines Vierecks
(2.) Daneben 
(3.) Oder drunter
Dieser "inner", "daneben", "drunter" wird durch die Rekursionen des Parsers erstellt. Dabei findet der Lexer in den entsprechenden Bereichen ein Viereck.

Wenn übrigens Vierecke daneben und drunter liegen, dann ist das Aufgabe des Parsers. Dann ruft er zum Beispiel "daneben" auf und von diesem "daneben" ein "drunter" für das "obere".


Ich schreibe jetzt an dem Compiler für Quadrate weiter, jetzt habe ich Zeit.

So jetzt schreibe ich an dem Compiler weiter, ich musste noch einen Tabak kaufen.

Das erste wird sein als Lexer eine Funktion zu finden. Bei ihr geben wir die Grenzen an. Und zwar, a - Breite, Länge, ... Die Funktion sucht in diesem Bereich von links nach rechts und oben nach unten, nach dem ersten auftauchen von '#' bzw. das gesamte Viereck, das erst dass in diesem Bereich anhand seines '#' auftaucht. Dieses wird nachvollzogen und zwar seine obere Kante, seine rechte Kante, untere Kante, linke Kante und, dass diese Kanten geschlossen sind aber an keinem Punkt '#' irgendwelche '#' neben sich haben.

Dabei wird a - Länge, Breite, b - Länge, Breite, ... zurückgegen. Sie werden als Pointer übergeben, damit sie in den Parmatern gespeichert werden können.


So, ich bin schon mal so weit, den Lexer habe ich hinbekommen.