Menu
CoddyTech

Apa Itu Syntax Error?

Syntax error adalah kesalahan dalam struktur kode, seperti titik dua, kurung, atau tanda kutip yang hilang, yang melanggar aturan tata bahasa sebuah bahasa pemrograman. Compiler atau interpreter menolak program itu sebelum ada bagian yang dijalankan.

Oleh Kevin Spektor, Co-founder & CTO

Diperbarui 24 September 2026

Sebelum Python menjalankan satu baris pun dari programmu, ia membaca seluruh file dan memeriksa bahwa file itu mengikuti tata bahasa bahasa tersebut. Kalau satu baris saja melanggar tata bahasa itu, tidak ada yang dijalankan sama sekali. Jalankan program ini dan perhatikan apa yang tidak terjadi: print yang pertama tidak pernah mencetak apa pun.

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

Baris 1 sepenuhnya valid, tetapi "Checking the temperature" tidak ada di output. Python menolak file itu secara keseluruhan karena baris if harus diakhiri titik dua. Tambahkan : setelah 30, jalankan lagi, dan kedua baris tercetak.

Bagaimana syntax error dideteksi

Setiap bahasa pemrograman punya tata bahasa: kata apa saja yang boleh dipakai, di mana kurung dibuka dan ditutup, apa yang harus mengikuti if. Program yang memeriksanya disebut parser, dan parser bekerja di tahap pertama pengubahan source code menjadi sesuatu yang bisa dieksekusi mesin.

  1. Tokenizer memecah teks menjadi token: if, temperature, >, 30, dan seterusnya.
  2. Parser membaca token-token itu secara berurutan dan mencocokkannya dengan tata bahasa. Setelah if temperature > 30, parser mengharapkan :, tetapi yang ditemukannya adalah akhir baris.
  3. Parser berhenti dan melaporkan tempat ia menyerah: file, nomor baris, dan tanda caret (^) di bawah posisinya.
  4. Karena parsing gagal, tidak ada kode yang dihasilkan, jadi tidak ada baris program yang berjalan.

Di CPython, parser berjalan setiap kali kamu menjalankan sebuah skrip. Di bahasa yang punya langkah build terpisah, compiler yang melakukan pemeriksaan ini: gcc, clang, dan javac menolak menghasilkan program selama masih ada satu saja syntax error. Itulah sebabnya syntax error digolongkan sebagai error compile time, berbeda dengan runtime error, yang terjadi saat program sudah berjalan.

Syntax error yang umum di Python

Inilah kesalahan di balik sebagian besar syntax error yang ditemui pemula, beserta pesan persis yang dicetak Python 3.12.

KodePesanPerbaikan
if x > 3SyntaxError: expected ':'Akhiri baris if, for, while, def, dan class dengan :
print("Hi"SyntaxError: '(' was never closedTutup setiap kurung yang kamu buka
name = "AdaSyntaxError: unterminated string literal (detected at line 1)Tutup tanda kutipnya
if x = 5:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?Bandingkan dengan ==
print "Hi"SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?Python 3 butuh print(...)
if a > 0 && b > 0:SyntaxError: invalid syntaxPython memakai and, or, dan not
if tanpa baris berindentasi di bawahnyaIndentationError: expected an indented block after 'if' statement on line 1Beri indentasi empat spasi pada badannya

IndentationError adalah salah satu jenis SyntaxError: di Python, indentasi adalah bagian dari tata bahasa.

Tidak setiap salah ketik adalah syntax error. pritn("hello") mengikuti tata bahasa dengan sempurna, karena nama yang diikuti tanda kurung adalah pemanggilan fungsi. Python baru menyadari bahwa tidak ada fungsi bernama pritn saat mencapai baris itu, lalu memunculkan NameError: name 'pritn' is not defined. Did you mean: 'print'?. Itu adalah runtime error, dan baris-baris di atasnya sudah dijalankan.

Kenapa baris yang dilaporkan bisa salah

Parser melaporkan titik di mana ia tidak bisa melanjutkan lagi, dan titik itu tidak selalu sama dengan letak kesalahannya. Kurung yang tidak ditutup adalah contoh klasiknya: parser tidak bisa tahu bahwa kurung itu tidak pernah ditutup sampai ia sudah membaca melewati tempat yang seharusnya.

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

Python 3.10 dan yang lebih baru menunjuk ke [ pembuka di baris 1. Python 3.9 dan yang lebih lama hanya melaporkan invalid syntax di baris 2, yaitu baris setelah kesalahan yang sebenarnya. Jadi kalau baris yang dilaporkan terlihat benar, periksa akhir baris di atasnya.

Parser lain berperilaku sama. Untuk SELECT name FORM users;, dengan FROM yang salah ketik, SQLite membaca FORM sebagai alias (nama kedua) untuk kolom name dan baru gagal satu kata kemudian:

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

Syntax error di C, Java, dan JavaScript

Bahasa yang di-compile melaporkan syntax error saat kamu melakukan build, bukan saat menjalankan. Berikut deklarasi tanpa titik koma, di-compile dengan Clang (compiler yang dijalankan perintah gcc di macOS):

#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

Tempel kode itu ke compiler C online untuk melihat bagaimana GCC menuliskan error yang sama.

javac melaporkan kesalahan yang sama di Java sebagai error: ';' expected, dan tidak ada file .class yang ditulis. Di C, satu kurung kurawal yang hilang bisa menghasilkan selusin error di bagian file selanjutnya. Perbaiki yang pertama lalu compile lagi, karena error lainnya sering kali hanya akibat dari yang pertama.

Engine JavaScript seperti V8 mem-parse seluruh skrip sebelum menjalankannya, sama seperti Python. Node.js menolak file ini sebelum mencetak "start":

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

Di browser, syntax error menghentikan satu file skrip itu saja, sementara skrip lain di halaman tetap berjalan.

Cara mengatasi syntax error

  1. Baca baris terakhir pesannya lebih dulu. Baris itu menyebutkan masalahnya: : yang hilang, ( yang tidak ditutup, token yang tidak diharapkan.
  2. Buka baris yang dilaporkan dan lihat tanda caret-nya. Kalau barisnya terlihat benar, periksa baris di atasnya.
  3. Periksa pasangan. Setiap (, [, {, dan tanda kutip butuh pasangannya. Sebagian besar editor menyorot kurung pasangannya saat kursor berada di sebelahnya.
  4. Periksa tanda baca yang diwajibkan bahasanya: titik dua dan indentasi di Python, titik koma dan kurung kurawal di C, Java, dan JavaScript.
  5. Perbaiki error yang pertama saja, lalu jalankan lagi. Pesan-pesan berikutnya sering disebabkan oleh yang pertama.
  6. Perhatikan syntax highlighting. Setelah tanda kutip yang tidak ditutup, sisa file biasanya berubah warna menjadi warna string, yang menunjukkan di mana masalahnya dimulai.

Kabar baiknya, syntax error adalah jenis error yang paling mudah diperbaiki: tool-nya memberi tahu bahwa ada yang salah dan kira-kira di mana. Jenis yang lebih sulit datang belakangan, saat kodenya berjalan.

Lanjut ke mana

Program yang lolos dari parser tetap bisa crash saat berjalan, yaitu runtime error. Program yang berjalan sampai selesai tetapi mencetak jawaban yang salah punya logic error, dan halaman itu membandingkan ketiga jenisnya dalam satu tabel. Untuk aturan tata bahasanya sendiri, baca sintaks Python atau sintaks C, lalu latih di kursus Python.

Pertanyaan yang sering diajukan

Apa contoh syntax error?
Lupa menulis kurung tutup di print("Hello" adalah syntax error, begitu juga baris if tanpa titik dua di Python: if x > 3. Di C dan Java, titik koma yang hilang di akhir sebuah pernyataan adalah yang paling umum. Dalam setiap kasus, kodenya tidak mengikuti tata bahasa, jadi tidak bisa dijalankan.
Apa bedanya syntax error dan semantic error?
Syntax error melanggar tata bahasa, jadi kodenya bahkan tidak bisa di-parse. Semantic error adalah kode yang benar secara tata bahasa tetapi maknanya salah. Sebagian buku memakai istilah ini untuk error tipe yang ditolak compiler, seperti memberi teks ke int di Java; buku lain memakainya sebagai nama lain untuk logic error.
Apa itu syntax error di C?
Di C, itu adalah kode yang tidak bisa di-parse oleh compiler, paling sering titik koma yang hilang, kurung kurawal yang tidak berpasangan, atau kata kunci yang salah ketik. gcc dan clang mencetak file, baris, dan kolomnya, misalnya main.c:4:18: error: expected ';' at end of declaration, dan tidak menghasilkan file executable sampai setiap error diperbaiki.
Kenapa Python tidak memperbaiki syntax error secara otomatis?
Karena sebagian besar syntax error punya lebih dari satu kemungkinan perbaikan, dan tebakan yang salah akan mengubah arti programnya. Kurung yang tidak ditutup bisa jadi dimaksudkan untuk ditutup setelah item pertama atau setelah item kesepuluh. Python modern menyarankan perbaikan yang paling mungkin, seperti Did you mean print(...)?, tetapi keputusannya tetap di tanganmu.
Apa arti syntax error di kalkulator?
Artinya sama seperti di kode: ekspresi yang kamu ketik tidak mengikuti aturan kalkulator, jadi tidak bisa dihitung. Penyebab yang umum adalah kurung yang tidak ditutup, dua operator berturut-turut, atau memakai tombol pengurangan padahal yang dibutuhkan tanda negatif. TI-84, misalnya, menampilkan ERR:SYNTAX.
Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai