Syntaxfehler

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Syntaxfehler im Allgemeinen sind Verstöße gegen die Satzbauregeln einer Sprache. In der Informatik bezieht sich das Wort in der Regel auf den sogenannten kontextfreien Anteil der syntaktischen Regeln einer Programmiersprache. Programme mit Syntaxfehlern werden von einem Compiler oder Interpreter zurückgewiesen. Das ändert nichts an der Tatsache, dass auch ein syntaktisch korrektes Programm inhaltlich falsch sein kann, weil es semantische Fehler enthält.

Definition[Bearbeiten]

Syntaxfehler werden vom Parser in der Analysephase eines Compilerlaufs erkannt, genauer in der syntaktischen Analyse. Dabei muss der Parser nicht nur erkennen, dass der analysierte Quellcode nicht der formalen Grammatik der Programmiersprache entspricht, sondern auch eine verständliche Fehlermeldung ausgeben.[1] Da sich nicht alle Eigenschaften einer Programmiersprache durch kontextfreie Grammatiken beschreiben lassen, werden manche Fehler, z. B. Verstöße gegen die Typregeln der Programmiersprache, auch erst in der semantischen Analyse vom Compiler erkannt. Andere Denkfehler im Programm lassen sich zur Übersetzungszeit gar nicht erkennen; Compiler fügen dort jedoch häufig Prüfcode ein, der zu einem Laufzeitfehler erst während der Programmausführung führt. Im Gegensatz dazu lassen sich semantische Fehler, also Fehler in der beabsichtigten Bedeutung eines Programmtextes, überhaupt nicht maschinell erkennen.

Beispiel[Bearbeiten]

In vielen Fällen werden Syntaxfehler durch falsch gesetzte oder fehlende Zeichen wie Semikola, Kommata und Klammern oder bedeutungstragende Wörter wie for oder BEGIN hervorgerufen. Integrierte Entwicklungsumgebungen sind in der Regel so konstruiert, dass derartige Fehler sofort erkannt und dem Programmierer signalisiert werden.

Ein Beispiel eines Syntaxfehlers in Java:

public class Beispiel {
    public static void main(String[] args) {
        System.out.println("Hallo Welt!")
    }
}

Ein typischer Java-Compiler würde bei diesem Beispiel in Zeile 3 das fehlende Semikolon hinter der schließenden Klammer bemängeln, wie es die Java-Syntax erfordert. Die Ausgabe des Compilers gibt dem Programmierer Hinweise auf Art und ungefähre Lage des Fehlers:

Syntax error, insert ";" to complete BlockStatements       Beispiel.java   line 3

Hierbei wird üblicherweise der Dateiname des Quelltextes, die Zeile und die eigentliche Fehlermeldung ausgegeben. Die Reihenfolge und Anzahl der Ausgaben variiert von Compiler zu Compiler.

Einzelnachweise[Bearbeiten]

  1.  Alfred V. Aho, Ravi Seti, Jeffrey D. Ullmann: Compilerbau. 1, Addison-Wesley, Bonn 1988, ISBN 3-89319-150-X, S. 194.