Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03345.jsonl.gz/952

Wenn man ein Modula-2 Programm schreibt, kann man im wesentlichen zwei Arten von Fehlern machen: Syntaktische Fehler und semantische Fehler. Die syntaktischen Fehler werden alle durch den Compiler gefunden; also wenn man ein Komma oder Strichpunkt an der falschen Stelle geschrieben hat, wenn man ein reserviertes Wort falsch geschrieben hat oder wenn man sich sonst nicht an die Modula-2 Syntax gehalten hat.
Bei den semantischen Fehlern können wir wiederum zwei weitere Arten unterscheiden: Die semantischen Fehler, die der Compiler bereits beim Übersetzen entdecken kann; dies wären beispielsweise nicht deklarierte Variablen oder Typenunverträglichkeiten. Und die zweite Art sind die semantischen Fehler, die der Compiler nicht herausfinden kann, weil sie dynamische Vorgänge betreffen; als Beispiel könnte man hier Überschreiten der Feld-Grenzen, Zugriff auf Zeigervariablen mit dem Wert NIL oder Zuweisung eines negativen Wertes an eine CARDINAL-Variable anführen.
Genau diese zweite Art der semantischen Fehler ist aber die gemeine, welche die Logik des Programms ausmacht. Diese Fehler entscheiden meist darüber, ob ein Programm läuft oder nicht. Unser Compiler m2c erzeugt nun zusätzliche Instruktionen im Programm, um diese ,,Fehler der zweiten Art`` abzudecken.
So weit so gut. Nun taucht so ein gemeiner Fehler auf, und das Programm bricht mit einer Fehlermeldung ab. Das ist zwar schon ein Fortschritt gegenüber dem allseits beliebten ,,Guru``, aber immer noch weit entfernt von Benutzerfreundlichkeit. Die Fragen, die Sie sich jetzt klarerweise stellen, sind: