+1 Daumen
2,3k Aufrufe

Hallo, ich hoffe doch mal, dass es auch ein paar Informatiker hier gibt:

Folgende Frage:

Ein Compiler zeigt immer nur die Anzahl der Zeilen an, in denen Syntaxfehler vorliegen.
Wenn nun nur eine Zeile einen Syntaxfehler hat, wie finde ich diese möglichst schnell?



Meine Ideen:
Ich persönlich würde erstmal sagen, einfach alle Zeilen durchgehen und jeweils mit Absicht einen kleinen Syntaxfehler(Simikolon oder ähnliches) einfügen. Wenn die Zeilenanzahl mit Fehlern unverändert bleibt, habe ich meine Zeile mit Fehler gefunden.

Aber was, wenn das zu compilierende Programm sehr groß ist?
Gibt es da irgendwelche Methoden, wie man eventuell schneller an die fehlerhafte Zeile kommt?

Avatar von

Am einfachsten wäre das wahrscheinlich am Beispiel erklärt. Welche Programmiersprache und welchen Compiler nutzt du?

Die meisten Entwicklungsumgebungen zeigen heutzutage genau die fehlerhafte Zeile bzw. sogar die exakte Stelle des Fehlers an. Ich vermute, es handelt sich um ein älteres System?

PS: Ein Trick ist, die Zeilen nach und nach zu entfernen (soweit der Code dann noch lauffähig ist). Dann kann man je Kompilierung die fehlerhafte Anzahl an Zeilen vergleichen, sobald sich dann eine Änderung ergibt, hat man den "culprit".

Genau das ist ja mein Problem. Es handelt sich hier um eine theoretische Frage. Es wird also von einer erfundenen Programmiersprache und einem erfundenen Compiler, der genau diese Eigenschaft hat.


Wenn jetzt ein Programm 10000 Zeilen hat und der Fehler in der letzten Zeile liegt, dann muss man demnach vorher alle 10000 Zeilen durchtesten.

Wenn der Code geradlinig aufgebaut ist und durchlaufen wird (also keine Sprünge zu Funktionen etc.), kannst du meist große Blöcke herausschneiden/entfernen und eine Dummyvariable einfügen, die den vorherigen Teil ersetzt (also du erfindest ein Ergebnis, mit dem weitergerechnet werden soll).

Zeile 1
Zeile 2
Zeile 3
Zeile 4
Zeile 5
Zeile ...
Zeile 500
Zeile 501
Zeile ...

Fehlerhafte Zeilen: 1

Dann würde ich den Code in 100er Blöcke zerlegen, um zu sehen, in welchem Block sich die fehlerhafte Zeile befindet. Anschließend in zwei 50er Blöcke. Dann 10er Blöcke, 5er und 1er. Fertig.

Wenn ich 1000 Zeilen Code habe und einen Fehler. Was passiert wenn ich einfach die Zeile 501 bis 1000 raus schneide ?

Wie reagiert der Compiler vermutlich dann? Mach mal eine Fallunterscheidung.

Danke, das war genau das was mir gefehlt hat.

> Wie reagiert der Compiler vermutlich dann?

Er sagt mir dass 163 schließende Klammern fehlen. Ich liebe tiefe Verschachtelungen.

ich bin erst jetzt auf diese Frage gestoßen.

Was ist das für ein völlig praxisfremder Compiler ?

Alle Compiler mit denen ich gearbeitet habe haben beim
ersten Fehler aufgehört zu compilieren und die Zeile angegeben.

mfg Georg

Laut Marvin:

> Es handelt sich hier um eine theoretische Frage. Es wird also von einer
> erfundenen Programmiersprache und einem erfundenen Compiler, der
> genau diese Eigenschaft hat.

Insofern hast du mit "völlig praxisfremder Compiler" völlig recht.

1 Antwort

0 Daumen
 
Beste Antwort

Ich denke dann ist das geklärt.

Bild Mathematik

Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community