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.
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.
- Der Tokenizer zerlegt den Text in Tokens:
if,temperature,>,30und so weiter. - Der Parser liest die Tokens der Reihe nach und ordnet sie in die Grammatik ein. Nach
if temperature > 30erwartet er einen:, findet aber das Zeilenende. - Er bricht ab und meldet die Stelle, an der er aufgegeben hat: die Datei, die Zeilennummer und ein Caret (
^) unter der Position. - 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.
| Code | Meldung | Lösung |
|---|---|---|
if x > 3 | SyntaxError: expected ':' | Zeilen mit if, for, while, def und class mit : beenden |
print("Hi" | SyntaxError: '(' was never closed | Jede geöffnete Klammer schließen |
name = "Ada | SyntaxError: 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 syntax | Python verwendet and, or und not |
Ein if ohne eingerückte Zeile darunter | IndentationError: expected an indented block after 'if' statement on line 1 | Den 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
- Lies zuerst die letzte Zeile der Meldung. Sie nennt das Problem: ein fehlender
:, eine offene(, ein unerwartetes Token. - Geh zur gemeldeten Zeile und schau auf das Caret. Sieht die Zeile gut aus, prüf die Zeile darüber.
- 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. - Prüf die Satzzeichen, die die Sprache verlangt: Doppelpunkte und Einrückung in Python, Semikolons und geschweifte Klammern in C, Java und JavaScript.
- Behebe nur den ersten Fehler und führe dann erneut aus. Spätere Meldungen werden oft vom ersten verursacht.
- 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?
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?
int zuweist; andere nutzen ihn als anderen Namen für einen Logikfehler.Was ist ein Syntaxfehler in C?
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?
Did you mean print(...)?, überlässt die Entscheidung aber dir.Was bedeutet Syntaxfehler auf dem Taschenrechner?
ERR:SYNTAX.