Syntaxfehler

Fehler in der Syntax einer Folge von Zeichen
(Weitergeleitet von Compilerfehler)

Syntaxfehler (englisch Syntax error) im Allgemeinen sind Verstöße gegen die Satzbauregeln einer natürlichen oder künstlichen Sprache. In der Grammatik bezieht sich der Begriff auf die Anordnung der Teile eines Satzes, in der Informatik in der Regel auf den sogenannten kontextfreien Anteil der syntaktischen Regeln einer Programmiersprache. Programme mit Syntaxfehlern werden von einem Compiler oder Interpreter zurückgewiesen. Ein syntaktisch korrektes Programm kann aber zu Laufzeitfehlern führen, wenn es semantische Fehler enthält.

Syntaxfehler in einem wissenschaftlichen Taschenrechner.
Syntaxfehler in einer Internetanwendung (2021)

Definition

Bearbeiten

Syntaxfehler in der Grammatik natürlicher Sprachen, zum Beispiel des Deutschen, sind Verstöße gegen Regeln des Satzbaus, nach denen Wörter zu größeren funktionellen Einheiten (Sätzen) zusammengestellt und Beziehungen wie Teil-Ganzes, Abhängigkeit etc. zwischen diesen Satzgliedern formuliert werden.

Syntaxfehler in Programmiersprachen 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.

Beispiele

Bearbeiten

Ein weit verbreitetes Beispiel für Syntaxfehler im Deutschen sind Formulierungen wie

die sexuell dokumentierte Frequenz von Jack London mit der Erich Mühsams verglichen[2]

Grammatikalisch bezieht sich hier die adverbiale Bestimmung "sexuell" auf das Partizip "dokumentiert", beschreibt also einen Umstand des Dokumentierens. Die gemeinte Bedeutung ist aber eine andere: Nicht das Dokumentieren ist sexuell, sondern die Frequenz. Richtig muss es also heißen: die dokumentierte sexuelle Frequenz.

Syntaxfehler können auch durch falsche Kombination der Bedeutungsebenen der Wörter (Semantik) entstehen. Zum Beispiel:

Die Reaktionszeiten der Sicherheitsanbieter sind zwar häufig sehr schnell...[3]

Zeiten sind nicht schnell oder langsam, sondern kurz oder lang. Richtig muss es entweder heißen Die Reaktionszeiten der S. sind zwar häufig sehr kurz oder Die Reaktionen der S. erfolgen zwar häufig sehr schnell...

Syntaxfehler in Computerprogrammen werden oft 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 den Programmierern 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 Zeilennummer 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. Band 1. Addison-Wesley, Bonn 1988, ISBN 3-89319-150-X, S. 194.
  2. Rüdiger Bernhardt in einer Rezension zu Florian Illies: 1913 – Was ich unbedingt noch erzählen wollte. Unsere Zeit, 30.11.2018
  3. Christian Fenselau: Virenscanner können zur Gefahr werden. t-online.de, 6.4.2016 (online)