Menu
Coddy logo textTech

Was ist ein Syntaxfehler?

Ein Syntaxfehler ist ein Fehler im Aufbau des Codes, etwa ein fehlender Doppelpunkt, eine fehlende Klammer oder ein fehlendes Anführungszeichen, der die Grammatikregeln einer Programmiersprache verletzt. Compiler oder Interpreter lehnen das Programm ab, bevor auch nur ein Teil davon läuft.

Von Kevin Spektor, Mitgründer & CTO

Aktualisiert am 24. September 2026

Bevor Python auch nur eine Zeile deines Programms ausführt, liest es die ganze Datei und prüft, ob sie der Grammatik der Sprache folgt. Verletzt eine Zeile diese Grammatik, läuft gar nichts. Führe dieses Programm aus und achte darauf, was nicht passiert: Das erste print gibt nie etwas aus.

  File "main.py", line 4
    if temperature > 30
                       ^
SyntaxError: expected ':'

Zeile 1 ist völlig korrekt, und trotzdem fehlt "Checking the temperature" in der Ausgabe. Python hat die Datei als Ganzes abgelehnt, weil eine if-Zeile mit einem Doppelpunkt enden muss. Setz den : hinter 30, führe das Programm erneut aus, und beide Zeilen werden ausgegeben.

Wie ein Syntaxfehler erkannt wird

Jede Programmiersprache hat eine Grammatik: welche Wörter erlaubt sind, wo Klammern auf- und zugehen, was auf if folgen muss. Das Programm, das sie prüft, heißt Parser, und es arbeitet in der ersten Phase, in der Quellcode in etwas übersetzt wird, das eine Maschine ausführen kann.

  1. Der Tokenizer zerlegt den Text in Tokens: if, temperature, >, 30 und so weiter.
  2. Der Parser liest die Tokens der Reihe nach und ordnet sie in die Grammatik ein. Nach if temperature > 30 erwartet er einen :, findet aber das Zeilenende.
  3. Er bricht ab und meldet die Stelle, an der er aufgegeben hat: die Datei, die Zeilennummer und ein Caret (^) unter der Position.
  4. Weil das Parsen gescheitert ist, wird kein Code erzeugt, also läuft keine Zeile des Programms.

In CPython läuft der Parser bei jedem Start eines Skripts. In Sprachen mit einem eigenen Build-Schritt übernimmt der Compiler diese Prüfung: gcc, clang und javac weigern sich, ein Programm zu erzeugen, solange auch nur ein Syntaxfehler übrig ist. Deshalb zählen Syntaxfehler zu den Fehlern zur Kompilierzeit, im Gegensatz zu einem Laufzeitfehler, der auftritt, während das Programm bereits läuft.

Typische Syntaxfehler in Python

Das sind die Fehler hinter den meisten Syntaxfehlern, die Anfänger sehen, mit der genauen Meldung, die Python 3.12 ausgibt.

CodeMeldungLösung
if x > 3SyntaxError: expected ':'Zeilen mit if, for, while, def und class mit : beenden
print("Hi"SyntaxError: '(' was never closedJede geöffnete Klammer schließen
name = "AdaSyntaxError: unterminated string literal (detected at line 1)Das Anführungszeichen schließen
if x = 5:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?Mit == vergleichen
print "Hi"SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?Python 3 braucht print(...)
if a > 0 && b > 0:SyntaxError: invalid syntaxPython verwendet and, or und not
Ein if ohne eingerückte Zeile darunterIndentationError: expected an indented block after 'if' statement on line 1Den Rumpf um vier Leerzeichen einrücken

IndentationError ist eine Art SyntaxError: In Python gehört die Einrückung zur Grammatik.

Nicht jeder Tippfehler ist ein Syntaxfehler. pritn("hello") folgt der Grammatik vollkommen, denn ein Name mit Klammern dahinter ist ein Funktionsaufruf. Python merkt erst beim Erreichen dieser Zeile, dass es keine Funktion namens pritn gibt, und wirft dann NameError: name 'pritn' is not defined. Did you mean: 'print'?. Das ist ein Laufzeitfehler, und alle Zeilen darüber sind schon gelaufen.

Warum die gemeldete Zeile falsch sein kann

Der Parser meldet die Stelle, an der er nicht mehr weiterkam, und das ist nicht immer die Stelle des Fehlers. Eine nicht geschlossene Klammer ist der klassische Fall: Der Parser kann erst wissen, dass die Klammer nie geschlossen wurde, wenn er über die Stelle hinaus gelesen hat, an der sie hätte stehen sollen.

  File "main.py", line 1
    prices = [4.50, 3.20, 7.80
             ^
SyntaxError: '[' was never closed

Python 3.10 und neuer zeigen auf die öffnende [ in Zeile 1. Python 3.9 und älter meldeten nur invalid syntax in Zeile 2, also in der Zeile nach dem eigentlichen Fehler. Wenn eine gemeldete Zeile korrekt aussieht, prüf deshalb das Ende der Zeile darüber.

Andere Parser verhalten sich genauso. Bei SELECT name FORM users; mit falsch geschriebenem FROM liest SQLite FORM als Alias (einen zweiten Namen) für die Spalte name und scheitert erst ein Wort später:

Parse error near line 1: near "users": syntax error
  SELECT name FORM users;
                   ^--- error here

Syntaxfehler in C, Java und JavaScript

Kompilierte Sprachen melden Syntaxfehler beim Bauen, nicht beim Ausführen. Hier ist eine Deklaration ohne Semikolon, kompiliert mit Clang (dem Compiler, den der Befehl gcc unter macOS aufruft):

#include <stdio.h>

int main(void) {
    int count = 3
    printf("%d\n", count);
    return 0;
}
main.c:4:18: error: expected ';' at end of declaration

javac meldet denselben Fehler in Java als error: ';' expected, und es wird keine .class-Datei geschrieben. In C kann eine einzige fehlende geschweifte Klammer ein Dutzend Fehler weiter unten in der Datei erzeugen. Behebe den ersten und kompiliere erneut, denn die anderen sind oft Folgen davon.

JavaScript-Engines wie V8 parsen ein ganzes Skript, bevor sie es ausführen, genau wie Python. Node.js lehnt diese Datei ab, bevor "start" ausgegeben wird:

console.log("start");
if (x > 1 {
  console.log("big");
}
SyntaxError: Unexpected token '{'

Im Browser verhindert ein Syntaxfehler, dass diese eine Skriptdatei läuft, während andere Skripte auf der Seite weiterlaufen.

Wie du einen Syntaxfehler behebst

  1. Lies zuerst die letzte Zeile der Meldung. Sie nennt das Problem: ein fehlender :, eine offene (, ein unerwartetes Token.
  2. Geh zur gemeldeten Zeile und schau auf das Caret. Sieht die Zeile gut aus, prüf die Zeile darüber.
  3. Prüf Paare. Jede (, [, { und jedes Anführungszeichen braucht ein Gegenstück. Die meisten Editoren heben die passende Klammer hervor, wenn der Cursor daneben steht.
  4. Prüf die Satzzeichen, die die Sprache verlangt: Doppelpunkte und Einrückung in Python, Semikolons und geschweifte Klammern in C, Java und JavaScript.
  5. Behebe nur den ersten Fehler und führe dann erneut aus. Spätere Meldungen werden oft vom ersten verursacht.
  6. Achte auf die Syntaxhervorhebung. Nach einem offenen Anführungszeichen nimmt der Rest der Datei meist die Farbe eines Strings an, und daran siehst du, wo es begann.

Die gute Nachricht: Syntaxfehler sind am leichtesten zu beheben. Das Werkzeug sagt dir, dass etwas falsch ist und ungefähr wo. Die schwierigeren Arten kommen später, wenn der Code läuft.

Wie es weitergeht

Ein Programm, das den Parser passiert, kann trotzdem während der Ausführung abstürzen, das ist ein Laufzeitfehler. Ein Programm, das bis zum Ende läuft, aber die falsche Antwort ausgibt, hat einen Logikfehler, und diese Seite vergleicht alle drei Arten in einer Tabelle. Die Grammatikregeln selbst findest du unter Python-Syntax und C-Syntax, üben kannst du sie im Python-Kurs.

Häufig gestellte Fragen

Was ist ein Beispiel für einen Syntaxfehler?
Eine fehlende schließende Klammer in print("Hello" ist ein Syntaxfehler, ebenso eine if-Zeile ohne Doppelpunkt in Python: if x > 3. In C und Java ist ein fehlendes Semikolon am Ende einer Anweisung der häufigste. In jedem Fall folgt der Code nicht der Grammatik und kann deshalb nicht laufen.
Was ist der Unterschied zwischen einem Syntaxfehler und einem semantischen Fehler?
Ein Syntaxfehler verletzt die Grammatik, der Code lässt sich also nicht einmal parsen. Ein semantischer Fehler ist grammatisch korrekter Code mit falscher Bedeutung. Manche Bücher verwenden den Begriff für Typfehler, die ein Compiler ablehnt, etwa wenn du in Java Text einem int zuweist; andere nutzen ihn als anderen Namen für einen Logikfehler.
Was ist ein Syntaxfehler in C?
In C ist es Code, den der Compiler nicht parsen kann, meist ein fehlendes Semikolon, eine nicht geschlossene geschweifte Klammer oder ein falsch geschriebenes Schlüsselwort. gcc und clang geben Datei, Zeile und Spalte aus, zum Beispiel main.c:4:18: error: expected ';' at end of declaration, und erzeugen keine ausführbare Datei, bis jeder Fehler behoben ist.
Warum behebt Python Syntaxfehler nicht automatisch?
Weil die meisten Syntaxfehler mehr als eine mögliche Korrektur haben und eine falsche Vermutung die Bedeutung des Programms ändern würde. Eine offene Klammer könnte nach dem ersten Element geschlossen werden sollen oder nach dem zehnten. Modernes Python schlägt eine wahrscheinliche Korrektur vor, etwa Did you mean print(...)?, überlässt die Entscheidung aber dir.
Was bedeutet Syntaxfehler auf dem Taschenrechner?
Dasselbe wie im Code: Der eingegebene Ausdruck folgt nicht den Regeln des Rechners und kann deshalb nicht ausgewertet werden. Typische Ursachen sind eine nicht geschlossene Klammer, zwei Operatoren hintereinander oder die Minustaste an einer Stelle, an der das Vorzeichen verlangt ist. Ein TI-84 zeigt dann zum Beispiel ERR:SYNTAX.
Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S